How it works

How it is built.

Your browser everything below runs client-side
Open the panel / browser extension

Reads the selected address; opens the panel. Nothing is injected into the host page. The pilot ships the same workflow as a managed Chrome and Edge extension.

Panel — the report deck

One card per section of your own form, each face carrying its resolved count and headline finding.

Address resolver

Candidates from two keyless government endpoints, scored — the street number is a pin, not a weight; an unconvincing match is put to you, never guessed.

Deterministic engine + generic executors

Runs every registry entry in parallel; results land as they arrive. A failed source is a named error in errors[] — never a silent blank.

Connector registry (JSON)

Endpoints, fields, clauses and licences as data, not code — a new source or a new state is a registry entry.

Template fill — in the browser

Your own .xlsx or .docx edited locally as a zip; values from the run above, nothing uploaded, nothing leaving the machine.

Every value carries a receipt: source · exact replayable query URL · retrieved-at · licence · confidence grade · the legislation clause it answers
Read browser-direct — keyless, CORS-verified live at answer time
  • NSW ePlanning Spatial Services — planning controls
  • NSW Planning Portal — address typeahead + spatial APIs
  • NSW DCS Spatial Services — cadastre + AddressPoint
  • SEED — environmental and contamination data
  • NSW Spatial Services SIX Maps — 5 m DEM + imagery
  • Geoscience Australia — national facilities dataset
  • NSW DNSP zone-substation disclosures
Via the thin proxy — allow-list only sees the address, nothing else
  • TfNSW Trip Planner — stops, departures, routed walking distance (the one keyed source; the key never leaves the server)
  • NSW Planning Portal Online DA data API
  • NBN places — serviceability

Why a proxy at all: these three endpoints publish no CORS headers, and the Trip Planner needs an API key attached server-side. The proxy is an allow-listed relay that exists only for that — it forwards the request and the response, keeps no record of the lookup, and never sees more than the address.

Outputs Your own template, filled and verified (.xlsx / .docx) · building envelope geometry as GeoJSON · CityJSON · DXF · glTF · every export carrying the same receipts
No database

No server-side copy of any register and no harvested corpus — the answer is as current as the register because it is the register.

Deterministic by contract

No language model anywhere in the value path. The planned AI features sit behind their own labelled boundary: a model may read documents and the receipts the engine produced; it never sets a register value.

Zero install

No local admin rights, no receiving system on the government side, no data migration — a browser is the whole deployment footprint.

The whole system, at answer time. Everything in the left box runs in your browser; the right column is the government endpoints it reads and the two ways it reaches them. There is no server in the middle of the picture because there is none in the product — the proxy relays three endpoints and keeps nothing.

The engine: deterministic.

Data retrieval and template fill are built without a language model of any kind — no LLM, no AI, deliberately — so that every value is deterministic and traceable: same address in, same answer out, and each value carrying the exact query that produced it. Address matching is a parser and a scoring function. Compliance cells are arithmetic against a named clause. Template binding is a static map of label → clause → field. Nothing is generated, summarised, paraphrased or inferred, and there is no model in the engine to drift.

Where a model does belong is one class of work: reading PDFs. Document extraction from title deeds, certificates and Before You Dig responses, and the Rulebook's clause-by-clause reading of the instruments — coming soon, and separate from the engine. Anything a model reads lands with its own receipt and its own confidence; it is never dressed up as a register read, and it never sets a register value.

And there is no pipeline to break.

Your browser talks to the government endpoints directly. No database, no cache, no nightly harvest — which is why it is as fresh as the register, and why a lookup costs almost nothing to serve. What needs maintaining is a JSON file of endpoints and clauses: adding a source is adding data, fixing one is editing a line.

Low maintenance, not zero — when a government endpoint moves, the registry needs an edit.

The method

Three steps, and the honest limits of each one.

1. Resolve the address

Free text is parsed into parts, then matched against the NSW register — the ePlanning typeahead for speed and the DCS AddressPoint layer for geometry, scored together. The result carries a method (exact or approx), a confidence, and the flags behind the score. The address is then rebuilt from the parsed parts rather than echoed back, because the register spells the same address several ways and every downstream source is keyed off that one string.

Coordinates come from the address point where one exists, then the parcel centroid, then the building point with the unit dropped — and the report says which of those it used, because a parcel centroid and an address point are not the same claim.

The street number is a pin, not a weight: a 15 never scores as a 15A. When two candidates still tie, the panel puts them to you rather than guessing — the safe failure, and the one the statewide sweep below exercised.

2. Read the registers

Ten government data services — nine NSW, one Commonwealth — plus two link panels the browser assembles without fetching anything. Each is a JSON entry in the registry: endpoint, fields, clauses, licence, routing. They are called concurrently and directly, with no store in between. A source that times out returns a named error in its own slot; the rest of the report still returns.

The exception to "directly": three of the ten transit a thin allow-listed proxy — one because it needs an API key that stays on the server (Transport for NSW), two because the endpoints publish no CORS headers (the Online DA API and NBN). It forwards the request and the response, keeps no record of the lookup, and never sees more than the address. The other seven are read browser-direct and keyless, and that browser-to-government access is verified, not assumed.

3. Test against the clause

Compliance cells are arithmetic against a named clause, not a judgement. Every value is labelled with how it was obtained:

authoritative
read directly from the register that governs it
derived
computed from authoritative values by a stated rule
approximate
read, but at a coarser precision than the question wants
assumed
not read at all — a reader-supplied input. A different word because it is a different kind of claim.

What it cannot answer

Published rather than discovered. An absent value and a failed lookup are different facts, and neither renders as a blank.

Flood

The state Flood Planning Map covers around ten of the 128 local government areas. Everywhere else the field says "not mapped here" — never "no flood risk" — and deep-links the council flood study on the NSW Flood Data Portal, which is where the answer actually lives.

Title documents

Lot and plan identifiers and an easement-geometry flag are read live from the cadastre. The title itself has no free API — the regulated broker fee is about $18.70 a document — so it is deep-linked to the brokers, not read.

Significant trees

No statewide register exists; councils hold their own. The field says that, where the answer would have been.

Water and sewer serviceability

No open Sydney Water API, and Before You Dig has no public API. Deep links only, labelled as deep links.

Agency ownership (AHO / LAHC)

No public API or GIS layer for either agency — only annual-report PDFs and an aggregate dashboard with no site-level data.

Height in RL datum

Some LEPs map maximum height in Reduced Level rather than metres. Where that happens there are no storeys, so no footprint is drawn — rather than a number invented to fill the cell.

Frozen upstream layers

The statewide DA map layer is frozen at 1 May 2023. A freshness probe reads its last-updated statistic on every request and, finding it stale, skips it for the Planning Portal’s Online DA API. The fuel-facility points were imagery-digitised in 2011/2012; the card reports the source date alongside the read time.

Setback and floor-to-floor

Not read from any instrument — they are reader-supplied inputs, and every value derived from them wears the assumed badge rather than authoritative.

Measured

What the built system does, as figures rather than adjectives — each measured on the date shown, against live production services wherever a service is involved, and most of them reproducible from the panel today.

full run
10–13 seconds, all sources in parallel, once a session is under way — the first run after opening is slower. — 28 Jul 2026
values
53 from one address, each carrying the receipt tuple: source, exact replayable query URL, retrieved-at, licence, confidence grade, answering clause. — 30 Jul 2026
excel fill
19 of 19 cells on a rebuild of a planning team’s template, formula-safe, output re-opened and verified before download. — 28 Jul 2026
word fill
23 of 23 cells including the clause-cited permissibility table; run-split labels and merged-cell grids handled. — 28 Jul 2026
formulas
58 live cross-tab formulas across an 18-tab rebuild of the workbook, left intact and recalculating. — 30 Jul 2026
coverage
22 of the 39 lookup-answerable placeholders on the Dual Occ CDC rebuild fill automatically; the rest are design output and judgement, which a planner signs. — 30 Jul 2026
envelope
Coordinate round-trip error 0.000e+0 m at every vertex; ground plane fitted to the 5 m elevation model at 0.08 m residual over 1,212 in-lot cells, terrain and parcel frames reconciling. — 29 Jul / 7 Aug 2026
exports
One geometry exported four ways — GeoJSON, CityJSON 1.1 (LoD1 Solid), DXF R12, glTF 2.0 — under 17 automated assertions, including that every exported solid is a closed 2-manifold. — 7 Aug 2026
contrast
212 WCAG contrast pairs across three themes, measured in code, not eyeballed. — 29 Jul 2026
codebase
25 modules, 41 dependencies; no language model anywhere in the value path. — 11 Aug 2026

Verified at state scale

On 15 August 2026 the engine the panel loads was run from a headless harness over 383 real NSW addresses drawn from every one of the 128 local government areas — for each council area in the government's boundaries register and each of three street numbers, the first address in the government address register with that number inside the area's own boundary; no suburb list, no address hand-picked — against the live production services. All 383 resolved (the last two on a same-evening re-run, after a resolver tie-break fix the sweep itself surfaced), and every one of the 128 areas is named in the results; seven of the ten data services answered on every one of them, development activity on 382 and servicing on 381 with each miss a named error at a remote village; the tenth, the 5 m terrain raster export, timed out under load on 173 of the 383 even after a sequential retry, and said so each time as a named error rather than reporting flat ground.

The harness, the re-run script and the complete per-address results are published here in full, every record as the scripts wrote it, so the numbers can be checked and the run repeated:

harness
the sampling rule and the run, importing /core/ and /sources/ from this site exactly as the panel does
re-run
the two addresses the concurrent run left as ambiguous, re-run the same evening after the resolver tie-break fix and folded into the results with each record marked
results
every address, the council area it was drawn from beside the one the engine named, every source's outcome, every named error with the exact call that failed, the terrain retry, and the two re-run records marked as such

Re-running is one command against live services and takes about an hour and a half — the harness's median full run was 16.8 seconds an address at concurrency 5, resolution included. Expect the terrain figures to move with upstream load; expect the rest to hold.

The concept

Why a wallet of cards.

A card tells you what it is before you open it.

That is the whole trick a wallet already knows. The logo, the category, the amount — you read an Amazon card without opening it.

So these nine do the same: the section, how much of it resolved, and the finding in words. Nine closed cards are the report at a glance. Opening one is a choice about detail, not the only way to find out what is inside it.

And the receipt is the part you keep.

A planner's due-diligence sheet gets checked by someone else. A number that cannot be traced back to where it came from is a liability, not an answer.

Every value here carries the query that produced it. Paste that query and you get the same answer back.

A colour is a name, not a verdict.

Amazon is orange whatever you spent. Major Site Constraints — the card beside this — is red on a clean site as much as a compromised one, which is why every card states its finding in words as well.

Hazards & overlays
Major Site Constraints

The exhibit: red whatever the rows below say — the words carry the verdict.

Rail & road
no rail within 300 m; no major road within 150 m
Bushfire
Not mapped as bush fire prone
Heritage
None mapped
XY:Ref

Live read of public sources — not a s10.7 certificate. Incorporates data from the NSW Government and Geoscape Australia under their respective open licences.

XY:Ref is a product of MONOPROXY PTY LTD (ABN 54 701 178 501), Sydney, NSW.

We pay respect to the Traditional Custodians and First Peoples of NSW, and acknowledge their continued connection to Country and culture.