Plan 2 ยท recurring updates

Red Deer condo data updates, logged instead of guessed.

Each Matrix import can become a dated snapshot. The change report compares building-level supply, price, fee, size, DOM, and sales signals across refreshes.

Current rows2,962
Row delta0
Changed buildings0
Median price delta$0
2,962Matrix rows
41Active rows
2,919Sold rows
80Building clusters
48,898Permit records
51 / 80Permit matches
80 / 80Mapped buildings
4Matrix snapshots
0Core movement buildings
0Newly measured buildings
Refresh reading: The latest comparison shows 0 buildings with core supply, price, fee, or DOM movement and 0 buildings with newly measured fields. 2 civic source alerts remain visible on the acquisition dashboard.
Refresh loop

One command to keep the public data honest.

  • Import the current Matrix/Pillar 9 CSV.
  • Refresh City open-data metadata, permits, and GIS downloads.
  • Validate building addresses against official parcel records.
  • Save the dated snapshot and compare it with the prior snapshot.
  • Rebuild pages only after reviewing the generated reports.

Refresh command

npm run refresh:data

Reports are written to data/generated/ so the public pages can show their operating state.

0

Active-row change

0

Sold-row change

$0

Median fee change

0

New building clusters

Building change log

What moved since the prior snapshot.

Compared with data\snapshots\matrix\2026-07-19.json.

BuildingChanged fields
No core building-level movement detected in the current comparison.
Source freshness

When each evidence layer was last refreshed.

LayerLast runWhat it supports
Matrix importJul 20, 2026Aggregate licensed export
City open-data fetchJul 20, 2026Metadata, permits, and GIS downloads
Permit enrichmentJul 20, 2026Address-level public permit join
Parcel and neighbourhood joinJul 20, 2026Official civic geometry
Spatial context joinJul 20, 2026Zoning, amenities, trails, roads, transit
Snapshot comparisonJul 20, 2026Dated Matrix change report
Current field coverage

Completeness before aggregation.

FieldRowsCoverage
statDate2,962100%
status2,962100%
address2,962100%
price2,962100%
condoFee2,961100%
taxAmount2,960100%
squareFeet2,959100%
dom2,962100%
Coverage trend

Did the next export get more complete?

Coverage means a usable value was present in the imported row. It does not independently verify the value.

FieldPrior snapshotCurrent snapshotChange
address100%100%No change
condoFee100%100%No change
dom100%100%No change
price100%100%No change
squareFeet100%100%No change
statDate100%100%No change
status100%100%No change
taxAmount100%100%No change