Stage 01 / Intelligence
Intake
An address, a county, and a decision about scope. Eight record types are required for every case. Seven more are add-ons that get ordered only when the property calls for them, because some of them cost money or require a trip to a counter.
Before anything is searched, the jurisdiction has to resolve: which county, inside city limits or not, and therefore which office issues permits. Johnson City crosses three county lines, so this is a real question and not a formality.
In: addressOut: scope and jurisdiction
Stage 02 / Intelligence
Evidence
Each record is retrieved and the page it came from is captured and filed. Every item carries a source, a URL, a timestamp, the method used, and the exact text as the source displayed it.
Searches that find nothing are logged just as carefully as searches that find something, with how far back that source's records actually go. A search that was down, blocked or ambiguous establishes nothing either way, and is recorded as exactly that.
In: scopeOut: captured proof, one file per retrieval
Stage 03 / Coordination
Case file
The evidence becomes one structured record. This is the important inversion: the case file is the record, and the report is only a view of it. Nothing can appear in a report that is not a sourced fact in the file.
The file distinguishes three states that get blurred everywhere else. A value that was captured. A value that was searched for and confirmed absent. A value that was never captured at all. Those are not the same thing and the file never lets them collapse.
In: evidenceOut: the case file
Stage 04 / Execution
Review
Every rule runs against the file. Each one fires, clears, or reports that it could not be evaluated. Scores are computed. Release checks run. A person reads the result before anything is built from it.
Rules live in a rules file, not in code and not in a model. Changing a threshold means editing that file. A rule without an implementation, or an implementation without a rule, stops the engine at startup rather than running quietly wrong.
In: the case fileOut: flags, scores, check results
Stage 05 / Data
Report
One self-contained page per case, built to print. The gaps print on the face of it, next to the findings, rather than being quietly dropped. So does the date each record was retrieved.
A language model drafts the prose and nothing else. Every number in that prose is checked against the file, every paragraph cites its evidence, and a model-introduced fact fails the check and blocks the release.
In: reviewed caseOut: the report, and a record that improves the next case