City of Grand Haven property search
official record · fetched directly
Ask Rennie
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
Anything I should worry about at 17 Beacon Ridge Court, Grand Haven, MI?
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.
It had run nothing.
What happens now, before the model gets a turn
the service did not respond in time
14 of 15 answered. Zoning did not, and the answer says so rather than filling the gap.
Only then, the answer
FEMA zone X: minimal hazard, and no flood insurance requirement. No mapped wetland, no high-risk erosion area, no critical dune, though the parcel does sit inside EGLE's coastal zone boundary. County zoning did not answer, so what this lot is zoned is the one thing I could not establish.
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
What is the history of 17 Beacon Ridge Court, Grand Haven, MI?
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
90 seconds
24 pages
depth 3
It stops on whichever comes first, or when the question is answered, and it reports which of those happened.
The question
What is the history of 17 Beacon Ridge Court, Grand Haven, MI?
4 queries · nothing added later
What the search returned
City of Grand Haven property search
official record · fetched directly
Ottawa County property information
official record · rendered in a browser
City of Grand Haven assessing department
official record · fetched directly
17 Beacon Ridge Ct property records
data aggregator · The site answered HTTP 403.
Beacon Ridge Ct street index
data aggregator · countyoffice.org declined the earlier request, so the rest of that site was left alone.
Beacon Ridge Ct, Grand Haven MI
data aggregator · The site's robots.txt asks automated readers to leave this page alone.
Beacon Ridge Ct residents
data aggregator · never opened
Links worth following
Parcel record card and assessing history
official record · fetched directly
Followed because the address 17 is in the URL
Source
Parcel viewer, deeds and sales
official record · rendered in a browser
Followed because it looks like a records page
Source
One link on
Sales and transfer history, 1998 onward
official record · fetched directly
Followed because the listing continues on the next page
Source
Register of Deeds, recorded documents
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.
“Close each tab when you have read it. This pass ends when your context fills up, not when the clock runs out.”
Standing instruction, every browsing pass
One page ≈ 15,000 tokens · eight pages ≈ 120,000 · 11,072 left
Carried forward
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.
“Given silence it returns a word anyway — reliably ‘you’.”
Why a transcript is checked against the loudest fifth of a second of the audio it came from
Microphone
endpointing, in the browser
The answer
cut into sentences as it is written, spoken from a 30-second ring
Microphone — the key
The answer — the key
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.
That this parcel is buildable.
Whether you can build is a decision a township makes about a specific plan. No dataset holds it, so it never claims to.
That the title is clear.
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.
That a neighbourhood or a school is good.
Fair Housing. It answers questions about places with objective published sources and declines the adjective, every time.
That an estimate is an appraisal.
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.
That a rival brokerage's listing is Rennie's own.
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.
Nothing, when a source is down.
A failed lookup is reported by name. Coverage is arithmetic over what actually answered — never the model's own account of how it did.
It is already running
An address works best. Give it one and watch the records come back before the answer does.