How we count: the method behind every number on this site
Where the data comes from, what we exclude and why, the mistakes we made and corrected, and how to check any of it yourself.
Every statistic on this site is a count of public records. This page explains how the counting is done, so that you can check it — and so that when we are wrong, it is possible to say so precisely.
Where the data comes from
| Dataset | Source | What it gives us |
|---|---|---|
y282-6ig3 | Cook County Assessor, open data portal | 1,807,534 appeal decisions, 2021–2026 |
uzyt-m557 | Cook County Assessor | Parcel assessments — mailed, certified and Board of Review values |
rny9-6ak2 | Connecticut open data | 1,358,338 parcel and CAMA records, all 169 towns |
emyx-j53e | Connecticut | Municipal mill rates for all 169 towns |
All four are official, published by the assessing authority, and free to download. We hold local copies so the analysis is reproducible; we do not scrape parcel portals to assemble a roll.
The four rules we count by
1. A pending appeal is not a loss
Appeals still undecided are excluded from the denominator entirely. Counting them as failures would depress every rate by however many are open — worst at the start of a season, which is exactly when someone is deciding whether to file.
Of 1,807,534 decisions, 1,788,655 were decided and 18,879 were pending at the time we counted.
2. A rate needs a real denominator
"411,358 reductions were granted" is not a success rate. It becomes one only when divided by the appeals actually filed. This dataset is the only reason that denominator exists — the parcel roll shows where a value changed, but not how many people asked.
3. Nothing is published below 30 decided appeals
Cook has 38 townships and hundreds of neighbourhoods. Slice finely enough and every cell reaches 0% or 100%. Below 30 decided appeals we publish no rate and say what it would have taken instead.
Rates carry a Wilson confidence interval rather than the textbook normal approximation. On 2 of 40, the normal formula gives a lower bound of −1.8% — a negative percentage on a page someone is using to decide how to spend a weekend.
4. Two rates differ only if their intervals say so
This one changed a finding. We set out to report that hiring an agent buys you about half a point. Across 440,761 appeals in 2024 the intervals still overlap — by six thousandths of a point, but they overlap.
Then the year-by-year data refused that refusal too: the advantage changes sides, with owners ahead in four of six years. A single pooled figure reports whichever side the window favours, wrapped in an interval that makes it look settled. A confidence interval measures sampling error, and this is not sampling error — it is a real effect that changes direction.
So where the sign is not consistent, we claim no direction and print the years instead.
A correction we have made
We record this rather than quietly fixing it because a site that publishes numbers should also publish its errors, and because 24% would have set expectations nearly three times too high.
What we do not know
Why the success rate is falling. From 31.9% in 2021 to 16.2% in 2025. Plausible causes include assessments moving closer to market as the post-2020 surge was absorbed, rising appeal volume, and 2021 values being set in unusual conditions. The data shows the fall clearly and says nothing about the cause.
Why townships differ four-fold. Reassessment timing, housing uniformity and filing mix are all plausible. We cannot rank them from this data.
What the Board of Review does. A separate body with its own record, which we have not ingested. Everything here describes the Assessor only.
The line we hold on generated text
Our product uses a language model to draft narrative wording. It never touches a number.
The engine computes the figures, and the model receives a closed set of permitted values and nothing else — no roll access, no retrieval. Every draft is then scanned, and if it contains a figure that is not in the permitted set, the entire draft is discarded and deterministic text is used instead. Not flagged, not patched — discarded, because a model that invented one figure has shown it will invent figures.
Nothing on this page, or in the research articles, was written by a model. They are counts.
Checking us
Download y282-6ig3 from the Cook County open data portal. Each row is one appeal, with the
township, the class, the values before and after, whether an agent filed it, the reason given and whether
anything changed. Group by whatever you like.
Our township-level counts are also published on our precedent pages, updated when the county republishes. If your figures disagree with ours, we would like to know — and if they disagree with the county's, the county is right.