BuildsConnect

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.

466,017projects tracked on the statewide planning record
128NSW councils on the planning record, all of them
454,012projects geocoded to a verified coordinate
604,924DA & CDC consent lineages tracked
6,946DAs on the council document plane, across 79 councils
77councils whose documents pass the live-feed quality bar, 77 carry a SEE we have read; these move as we read more
5,831SEE documents on file (coverage grows weekly)
5,831SEEs processed for the trades signal; 1,830 project briefs
1,548projects with business contacts of record

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.

FieldMeaning
site_keyNormalised site address that groups applications onto one physical site.
addressA full sample address for the site, as lodged.
council_name / suburb / postcodeLocation fields from the lodgement record.
best_costBest-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_basisWhich application on the site supplied the value.
lifecycle_stageHow far the site has progressed: lodged → determined → construction certified → occupied.
confidencehigh / medium / low confidence that the grouped applications are genuinely one project.
app_countNumber of applications grouped on the site.
has_mis_joinFlagged when the grouping shows signs of joining two different projects.
is_ambiguousFlagged when the site’s identity is ambiguous in the source data.
da_cc_confirmedTrue when a DA and a construction certificate corroborate each other on the site.
n_cross_site_parcelCount of land parcels this site shares with other sites (shared-lot signal).
earliest_lodgement_date / latest_determination_dateThe site’s activity window.
lat / lngSite coordinates from the planning record geocode (454,012 verified sites). Property location is public DA-record data, not personal data.
builder_rawBuilder legal name exactly as recorded on the site’s latest construction/occupation certificate.
builder_distinct_count / builder_multipleHow many distinct builder names the site’s certificates carry; flagged when more than one.
builder_resolved / builder_abn / builder_resolution_statusThe ABN-confirmed business entity behind the raw name, when resolution succeeded; null otherwise.
see_trades / see_trades_versionThe 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.

FieldMeaning
consent_idStable identifier for one consent lineage.
site_keyThe physical site the consent belongs to.
consent_typeda (council consent path) or cdc (complying development, certifier path).
council_name / lodged_date / determined_dateWhere and when, from the source record.
outcomeThe recorded processing outcome of the lineage.
da_verdictThe 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_displayDisplay mapping only (declined_cert → “declined” on CDC rows); the raw da_verdict always stays on the row.
determination_authorityWho determined it: council, panel or court.
court_determinedTrue when the determination came through the Land & Environment Court.
modification_count / review_counts4.55 modifications and s8.2 reviews linked to the consent.
linkage_confidenceConfidence of the heuristic modification chaining (~40% of modifications carry no explicit parent reference).
mod_links_low_confidenceTrue when linkage_confidence is low: the modification/review counts are flagged estimates, not exact.
n_applicationsApplications 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.

FieldMeaning
council_nameThe council, or null for the statewide series.
project_type_bucketProject-type grouping the quarter is reported for.
quarterLodgement quarter. Cohorts group by when the DA was lodged, not when determined.
n_lodged / n_determinedCohort counts for the grain.
value_sum_cappedSummed declared value with sentinel data-entry garbage excluded upstream: a cleaned sum, not a raw total.
avg_value_cappedAverage value per project; on statewide rows, the lodgement-weighted average.
assess_days_median / total_duration_medianMedian 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_determinedCohort 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.

FieldMeaning
da_id / source_refThe scraped DA the contact came from, and the council’s own DA reference for checking against the register.
site_keyThe linked planning record site; null until the document↔project bridge links it.
council / lodged_atWhere and when the DA was lodged.
roleapplicant or a consultant role (planner, architect, engineer, surveyor, certifier, quantity surveyor, arborist, heritage). owner is never served.
name / company / phone / emailThe 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.
basisWhich statement form carried the contact: stated_contact, signature or prepared_by_for.
confidenceExtraction confidence for the row.
extracted_atWhen 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.

FieldMeaning
da_id / source_refThe DA and its council reference: every alert is checkable against the council record.
council / council_statusThe council, and its recorded status for the DA.
lodged_at / addressWhen it was lodged and the project address (public DA-record data).
estimated_project_valueBest-available project value: the declared figure where the record states one, otherwise a model estimate. The underlying record keeps which it was.
project_briefPlain-language summary of the works, extracted from the SEE.
tradesThe measured trades signal: the trades the described works engage, from the gated extraction the methodology documents.

Need a field we haven’t defined?