Ask Rennie

Ask it about
your house.

Not a chatbot with opinions about the neighbourhood. A system that reads fifteen public records about one address before it answers, then tells you what it found — and what it could not.

Before it answers

A visitor asked about a house and the model described a flood zone, wetlands and an erosion setback that were not there, then said it had run the records check. It had run nothing. Now the server runs the lookups first and hands the model finished work.

The question

What it used to do, immediately

The invented answer, since withdrawn: This property lies within a FEMA-designated flood zone, with wetlands present on the site and an erosion setback along the bluff. I've run the public records check for you.

What happens now, before the model gets a turn

  • County parcel and assessmentFound
  • Zoning and future land useUnavailable

    the service did not respond in time

  • School district boundaryFound
  • FEMA flood zoneFound
  • EGLE high-risk erosionNothing on file
  • EGLE critical dunesNothing on file
  • EGLE and NWI wetlandsNothing on file
  • EGLE coastal zoneFound
  • NOAA lake levelFound
  • FEMA National Risk IndexFound
  • USDA soil surveyFound
  • EGLE well recordsFound
  • EGLE contamination sitesNothing on file
  • USGS elevationFound
  • MDOT traffic countsNothing on file

14 of 15 answered. Zoning did not, and the answer says so rather than filling the gap.

Only then, the answer

The address is invented, so that no real home is used as an illustration. The fifteen checks, the order they run in and the words on screen are the system’s own.

The research trail

The agent searches, opens a wave of pages at once, scores every link those pages carried, and follows the best of them. A page it found is not a page it opened, and only the pages an answer rests on are called sources.

The plan, fixed before the first fetch

  • 17 Beacon Ridge Court, Grand Haven, MI property records
  • 17 Beacon Ridge Court, Grand Haven, MI sale history owner deed
  • Beacon Ridge Court, Grand Haven, MI property records
  • 17 Beacon Ridge Court, Grand Haven, MI assessor parcel year built

A page can change which link is opened next. It can never add a query or move the stopping line, because a model asked what to do next, having just read an attacker’s page, will sometimes answer with the attacker’s suggestion.

The budget

It stops on whichever comes first, or when the question is answered, and it reports which of those happened.

The question

4 queries · nothing added later

What the search returned

  • bsaonline.comRead

    official record · fetched directly

  • miottawa.orgRead

    official record · rendered in a browser

  • grandhaven.orgRead

    official record · fetched directly

  • countyoffice.orgNot read

    data aggregator · The site answered HTTP 403.

  • countyoffice.orgNot read

    data aggregator · countyoffice.org declined the earlier request, so the rest of that site was left alone.

  • recordsfinder.comNot read

    data aggregator · The site's robots.txt asks automated readers to leave this page alone.

  • spokeo.comFound

    data aggregator · never opened

Links worth following

  • bsaonline.comRead

    official record · fetched directly

    Followed because the address 17 is in the URL

    Source

  • miottawa.orgRead

    official record · rendered in a browser

    Followed because it looks like a records page

    Source

One link on

  • bsaonline.comRead

    official record · fetched directly

    Followed because the listing continues on the next page

    Source

  • miottawa.orgRead

    official record · fetched directly

    Followed because its wording matches the question

7 pages read. 3 refused and named. One turned up by the search and never opened. 3 carried the answer, and only those three appear under Sources.

The address is invented, so that no real home is used as an illustration. The hosts, the refusal wording and the reasons on the edges are the system’s own.

The comparative market analysis

Every page the research agent reads stays with it for the rest of the pass. One signed-in listing page is 33,000 to 56,000 characters of accessibility tree — about 15,000 tokens — and the window holds 131,072.

Raising the time budget from 15 minutes to 22 made it worse: more minutes bought more page loads. So the job runs as four passes, each a fresh process, and what crosses between them is prose.

Standing instruction, every browsing pass
  1. Pass 1 · 13 minthe assessor's record
  2. Pass 2 · 10 mincandidate sales
  3. Pass 3 · 14 mincomparable detail
  4. Pass 4 · 12 minreconciliation
In the window120,000 / 131,072

One page ≈ 15,000 tokens · eight pages ≈ 120,000 · 11,072 left

Carried forward

  1. 8161 Oldfield Court SE · 41-22-18-428-087 · 2,480 sfafter the assessor's record
  2. 716 Stevens Pointe SE · 2024-05-10 · $285,000after candidate sales
  3. 716 Stevens Pointe SE · 2,368 sf · 4 bd / 2.5 baafter comparable detail

A few hundred thousand characters of markup go in. A few hundred characters come out, and only those cross to the next pass.

A diagram of the context window as a fixed vessel. It fills with eight page views at roughly 15,000 tokens each, reaching 120,000 of the 131,072 the window holds, leaving 11,072. The pass then ends and the vessel empties, and the only thing that carries into the next pass is a single line of prose such as “716 Stevens Pointe SE · 2024-05-10 · $285,000”. Four passes run in order — the assessor’s record, candidate sales, comparable detail, and reconciliation, which reads nothing.

Talking to the site

The answer is cut into sentences while it is still being generated, so the first one is being spoken while the last one is still being written. A 28-entry abbreviation list keeps it from cutting at “St.” or “Dr.”, and a decimal guard keeps “1.5 million” in one piece.

Speech detection runs in your browser, not on the server — it is the one decision that cannot wait for a round trip. Talking over him is an ordinary part of a conversation, so it cancels rather than queues.

Why a transcript is checked against the loudest fifth of a second of the audio it came from

endpointing, in the browser

cut into sentences as it is written, spoken from a 30-second ring

Tracked, so a fan does not read as speech. The signal has to clear 2.2× it — and ×1.9 that again while he is audible, because the microphone is in the room with the speaker.
Rolling pre-roll, kept while the room is quiet, so the first syllable is never clipped.
Held above the floor this long before it is believed to be speech.
A full second of silence ends the turn. Trail off and pick it back up, and it is still one sentence.
Longer than 140: interrupting him has to be surer than starting.
The answer arriving as tokens. The three accent marks dropping out of it are the sentence cuts.
One block per sentence, synthesised and played while the next is still being written.
An underrun — sentence three was not ready when two ended, so the ring emitted silence.
Exactly that much of the audio that finally arrived is thrown away, so he never speeds up to catch up.
Playback is left alone this long while echo cancellation converges.
You spoke over him. Playback flushes and the server drops the rest of the answer.
  1. 01350 ms of pre-roll is kept while the room is quiet, then 140 ms to believe it is speech.
  2. 02A full second of silence ends the turn. Trail off and pick it back up, and it is still one sentence.
  3. 03About 180 ms to recognise it on the Spark. Then the answer starts being written.
  4. 04He starts speaking here, while the rest of the answer is still being written.
  5. 05Underrun. Silence out, and the same length dropped back in — so he never speeds up.
  6. 06You talk over him. Playback flushes, and the server aborts the rest of the answer.

The part that matters

Every one of these is a rule in the code, not an instruction in a prompt. A prompt is a request. A rule is a refusal.

Whether you can build is a decision a township makes about a specific plan. No dataset holds it, so it never claims to.

A records scan reads what agencies publish. Title is a search and an insurance product, and the difference matters to the person paying for it.

Fair Housing. It answers questions about places with objective published sources and declines the adjective, every time.

A comparative market analysis is an opinion built from comparable sales. It is called that everywhere it appears, including in the email that delivers it.

Inventory comes from the MichRIC® IDX feed, so most of it belongs to other brokerages. Every listing carries the name of the brokerage that filed it, and the model is told which ones are Rennie's before it can describe one.

A failed lookup is reported by name. Coverage is arithmetic over what actually answered — never the model's own account of how it did.