Municipal 311 deduplication. Converts how many people complained into how many problems exist. Toronto 311 open data, 2025.
Not available on this deployment.
This page runs the 505-report queue with duplicates collapsed into parent rows. This page runs the live system: Postgres 17 with PostGIS and pgvector, and an embedding model. Neither is configured on this deployment.
The three pages that carry the argument, Ward coverage, Concentration and Evidence, are fully live here. Every number on them is read from out/evidence.json, which was produced by running sql/10_evidence.sql against all 500,269 rows of the published file, and each result is stored beside the exact statement that produced it.
It is a local Postgres cluster and one command:
git clone https://github.com/Greatodu/undercount.git && cd undercount make db # local Postgres 17 + PostGIS + pgvector make part1 # load 500,269 rows, cluster, write out/evidence.json make part2 # taxonomy, centreline, seed the demo rows [needs OPENAI_API_KEY] make part4 # 150-pair eval; writes out/thresholds.json make link # apply the tuned rule across the seeded queue make serve # http://localhost:8311
Nothing is faked here to make the page work. A duplicate check without an embedding model and a spatial index is not a duplicate check, and a page that pretended otherwise would be the exact failure this project is about.