Findings about Edmonton's published open data, written to be checked rather than taken on trust. Each page below downloads its sources live, recomputes every figure in the run you are reading, and asserts a list of invariants at the end — so a report that has gone out of date says so instead of looking fine. None of them depend on this project's own pipeline.
The dataset's Period of Coverage metadata reads
2025-01-01 to 2025-12-31, but the rows are the 2026 roll. Proved
twice over, once using only the City's own datasets and once against
Edmonton's filings with the Province. The data is sound; only the label
is wrong.
2,448 tax accounts that exist in the 2023 slice and in the current roll are absent from 2024, across 188 neighbourhoods. They are not scattered: 29 addresses lose every account they had. The dataset's own self-audit and an independent control disagree by a factor of 464.
The roll flags three properties as exempt, against a filed taxable base roughly $15B below it. This report sizes that uncertainty and then shows why it cannot be resolved from public data — including by constructing two entirely disjoint sets of properties that each account for the same gap exactly.
The portal publishes point locations for the two public school boards and for no other operator, so private, charter and francophone schools are absent and any distance-to-nearest-school computed from open data is systematically too large. Because this is a claim about absence, the report runs the searches that would disprove it rather than the ones that would support it.
On a fraction of a percent of rows, the neighbourhood field holds a comma-joined list of names — and the numeric id field beside it is comma-joined in exactly the same way, so switching to the id is not a workaround. Three different things are mixed into that one field: a municipal rename carrying both names, the same neighbourhood written twice, and a permit genuinely spanning two neighbourhoods. Only the last needs a list. The report shows that the ids, checked against the published boundary file, separate all three mechanically.
Not a defect report: context for the requests above.
Every request made through the portal since 2016: volume by year, topics, refusal rates, the open backlog, and requests made again and again. It also checks whether anyone has already asked for what the reports above would ask for. Read its section 2 before quoting a count. In December 2023, 126 requests that had never been decided were stamped "Rejected" when they moved to a new tracker, and 16 more were declined in 2023 clean-up sweeps years after they were asked, so a naive count overstates decided refusals by more than three times.