Comparing towns fairly means collecting the same things for each of them. This page reports how far that has got: one row per town, one column per dataset, generated from the collected files themselves. Where a cell is empty, the data has not been collected — not that the town has nothing to report.
The towns here are all 169 in Connecticut. Every one of them has a page set built from the state’s uniform figures. Only Colchester also has pages built from its own adopted budget books, which are transcribed by hand and exist for no other town.
Coverage by town
A tick means the series has been collected for that town, with the years it covers. A dash means it has not.
✓ collected
— not collected
Shaded row the subject town, whose pages are published
K-8 the town's own district does not run grades 9-12
What is still missing
The gap is the same one everywhere: town budget books. The state datasets cover all 169 Connecticut towns and come down in a single scripted run. A town's adopted budget — the document residents actually vote on — exists only as PDFs on that town's own website, in whatever form that town posts them.
Where the collected series stop, and why
- Town finances and spending by function end at FY 2022-23, which is as far as OPM has published. Newer years come only from each town's own books.
- Income and population currently start with the 2021 American Community Survey release. The Census API now requires a key; the keyless files this was collected from begin there. With a key the same script reaches back to 2009.
- Enrollment and staffing cover the six most recent school years, which is the window EdSight's trend report returns. A longer history needs a different source.
- A town absent from a state dataset is shown as not collected for that series. East Lyme, for example, has no rows in the state's spending-by-function file.
What each series is
Collection method and every caveat that travels with these datasets: PLAYBOOK-NEW-TOWN.md and data-dictionary.md in the project repository. Raw payload: town_data_coverage.json.