Home/Data & coverage
The data dictionary, and where the data reaches.
Every customer-facing field, defined in one line. Coverage stated from live platform numbers, including the gaps. If a figure on this page looks modest, that’s because it’s real.
Figures last refreshed 3 August 2026.
Coverage, live
What we cover today.
Update cadence
How fresh is fresh.
- Statewide planning record: refreshed on a regular ingest run from the NSW ePlanning feeds (ingest runs about 17:00 UTC; roughly 3 am AEST).
- Document enrichment: a nightly worker (about 02:15 UTC) enriches newly scraped DAs: trades signal, project brief and contacts of record flow through to alerts automatically.
- Aggregates: trend and lifecycle rollups are precomputed and refreshed with the record; recent lodgement quarters are marked provisional (right-censored) until their cohorts mature.
Known gaps
What we don’t have yet, stated plainly.
- “Geocoded” means located, not “has a coordinate”. Some addresses in the public record are cadastral references with no street. Our geocoder returned a fallback coordinate for those rather than failing, which collapsed unrelated properties onto shared points, one point held 463 sites across 58 councils. We now grade every coordinate and count only the 454,012 graded confirmed. A further 6,098 sit on a shared fallback point and 534 are uncertain; those are reported as “location unknown” and are excluded from hazard flags and proximity, never counted as coverage and never silently repositioned. The previously published 99.7% counted them as successes.
- SEE coverage is partial and growing. A growing share of scraped DAs carries an SEE document, and coverage grows weekly. Document-derived signals (trades, briefs, contacts) exist only where a document exists. The absence of a signal is not evidence about the project.
- Two scales. The document plane (6,946 DAs, 79 councils, of which 77 carry a SEE we have read and 77 pass the live-feed bar) is far smaller than the statewide planning record (466,017 projects, 128 councils). The document↔project bridge currently links 4,198 records; unlinked documents still serve on their own plane, without a planning record join.
- The “why” layer is not live. Determination reasons and conditions are not in the public feed. They live in determination-notice documents we don’t yet ingest. The extraction path is built, but it will only surface once documents land and its own measured-precision gate clears.
- Verdicts are partly unknowable. 87,455 determined DA consents have a genuinely unknowable outcome, surfaced as
verdict_unknown, never guessed. The methodology explains why.
Data dictionary
Every field, one line each.
These are the exact row shapes the dashboard, exports and API serve. Nothing hidden, nothing extra.
Project leads
One row per physical site in the statewide planning record, with its grouped applications, best value, stage, builder attribution and (where matched) the SEE trades signal.
| Field | Meaning |
|---|---|
| site_key | Normalised site address that groups applications onto one physical site. |
| address | A full sample address for the site, as lodged. |
| council_name / suburb / postcode | Location fields from the lodgement record. |
| best_cost | Best-available project value for the site; sentinel data-entry values are excluded, so this is a cleaned figure, not a raw declared total. |
| best_cost_basis | Which application on the site supplied the value. |
| lifecycle_stage | How far the site has progressed: lodged → determined → construction certified → occupied. |
| confidence | high / medium / low confidence that the grouped applications are genuinely one project. |
| app_count | Number of applications grouped on the site. |
| has_mis_join | Flagged when the grouping shows signs of joining two different projects. |
| is_ambiguous | Flagged when the site’s identity is ambiguous in the source data. |
| da_cc_confirmed | True when a DA and a construction certificate corroborate each other on the site. |
| n_cross_site_parcel | Count of land parcels this site shares with other sites (shared-lot signal). |
| earliest_lodgement_date / latest_determination_date | The site’s activity window. |
| lat / lng | Site coordinates from the planning record geocode (454,012 verified sites). Property location is public DA-record data, not personal data. |
| builder_raw | Builder legal name exactly as recorded on the site’s latest construction/occupation certificate. |
| builder_distinct_count / builder_multiple | How many distinct builder names the site’s certificates carry; flagged when more than one. |
| builder_resolved / builder_abn / builder_resolution_status | The ABN-confirmed business entity behind the raw name, when resolution succeeded; null otherwise. |
| see_trades / see_trades_version | The measured trades signal from the site’s linked SEE document, and the extraction version that produced it. Null when no SEE is linked yet. |
Consent history & verdicts
One row per consent lineage (a DA or CDC and its later events), with the honest outcome model the methodology describes.
| Field | Meaning |
|---|---|
| consent_id | Stable identifier for one consent lineage. |
| site_key | The physical site the consent belongs to. |
| consent_type | da (council consent path) or cdc (complying development, certifier path). |
| council_name / lodged_date / determined_date | Where and when, from the source record. |
| outcome | The recorded processing outcome of the lineage. |
| da_verdict | The outcome model: inferred_approved (labelled certificate inference), verdict_unknown (genuinely unknowable), refused (merit), rejected_invalid (administrative), plus withdrawn / cancelled / pending. On cdc rows this is the certifier’s verdict. |
| verdict_display | Display mapping only (declined_cert → “declined” on CDC rows); the raw da_verdict always stays on the row. |
| determination_authority | Who determined it: council, panel or court. |
| court_determined | True when the determination came through the Land & Environment Court. |
| modification_count / review_count | s4.55 modifications and s8.2 reviews linked to the consent. |
| linkage_confidence | Confidence of the heuristic modification chaining (~40% of modifications carry no explicit parent reference). |
| mod_links_low_confidence | True when linkage_confidence is low: the modification/review counts are flagged estimates, not exact. |
| n_applications | Applications in the lineage. |
| events[] | Ordered timeline per consent: event_type, event_date, outcome, authority, court_determined. |
Value & cost trends
Quarterly series per council and project type, worked out in advance. Projects are grouped by the quarter they were lodged in.
| Field | Meaning |
|---|---|
| council_name | The council, or null for the statewide series. |
| project_type_bucket | Project-type grouping the quarter is reported for. |
| quarter | Lodgement quarter. Cohorts group by when the DA was lodged, not when determined. |
| n_lodged / n_determined | Cohort counts for the grain. |
| value_sum_capped | Summed declared value with sentinel data-entry garbage excluded upstream: a cleaned sum, not a raw total. |
| avg_value_capped | Average value per project; on statewide rows, the lodgement-weighted average. |
| assess_days_median / total_duration_median | Median assessment days and total duration. Omitted (null) on statewide rows: per-council medians don’t reaggregate, and we won’t publish a median-of-medians. |
| n_with_modifications / n_court_determined | Cohort counts of modified and court-determined projects. |
Project contacts of record
One row per business contact the SEE document itself states. Strictly extractive, business contacts only. See the contacts policy.
| Field | Meaning |
|---|---|
| da_id / source_ref | The scraped DA the contact came from, and the council’s own DA reference for checking against the register. |
| site_key | The linked planning record site; null until the document↔project bridge links it. |
| council / lodged_at | Where and when the DA was lodged. |
| role | applicant or a consultant role (planner, architect, engineer, surveyor, certifier, quantity surveyor, arborist, heritage). owner is never served. |
| name / company / phone / email | The contact exactly as the document states it, never looked up elsewhere. Phone/email present on a minority of rows; coverage is reported in every payload. |
| basis | Which statement form carried the contact: stated_contact, signature or prepared_by_for. |
| confidence | Extraction confidence for the row. |
| extracted_at | When the extraction ran. |
Trade alerts
The alert email / dashboard unit: a recent DA in a watched council, matched to the trades it will need. Served only while the extraction version’s recorded measured precision meets the serving bar.
| Field | Meaning |
|---|---|
| da_id / source_ref | The DA and its council reference: every alert is checkable against the council record. |
| council / council_status | The council, and its recorded status for the DA. |
| lodged_at / address | When it was lodged and the project address (public DA-record data). |
| estimated_project_value | Best-available project value: the declared figure where the record states one, otherwise a model estimate. The underlying record keeps which it was. |
| project_brief | Plain-language summary of the works, extracted from the SEE. |
| trades | The measured trades signal: the trades the described works engage, from the gated extraction the methodology documents. |