How we verify Chicago data

Every number on our Chicago pages comes from Chicago Checkbook (data.cityofchicago.org), the city's own transparency portal. This page is the standing verification report: what we hold, the quality gates every load must pass, and the reconciliation math against the city's own published totals, including the part that doesn't match.

266,585payments on record
Jan 3, 2022 – Dec 31, 2025coverage window
Jul 20, 2026last refreshed
0.000%reconciliation gap, full payment-detail dataset

The chain of custody

Each record travels the same six steps, and every step leaves evidence:

  1. The city records a payment in its accounting system.
  2. The city publishes it in bulk on Chicago Checkbook (data.cityofchicago.org).
  3. We fetch the official bulk file; every fetch is logged with a timestamp, and failures are recorded too.
  4. The city's row is archived exactly as received and fingerprinted. The archive is append-only: records are never edited or deleted, even when the city overwrites its own history.
  5. Names are normalized with deterministic rules (see methodology); the original name is kept alongside, and quality gates run on every load.
  6. Pages are published from a versioned release; the version appears at the foot of every page.

Quality gates

No Chicago release goes live unless all four gates pass. Current status:

GateResult
Extraction integrityPublished payment facts re-derived from the raw archive match to the penny: identical row counts and dollar sums.
No orphan paymentsEvery payment resolves to a vendor and an agency record. Zero orphans.
Duplicate handlingIdentical rows in the city's data are real duplicate payments (for example pension-cap check batches) and are preserved, not deduplicated.
Portal reconciliationOur raw read matches the portal's own published row count exactly at snapshot time (details below).

The reconciliation math, full payment-detail dataset

Chicago's open data portal reports a live row count for its payment dataset. At every fetch we compare the rows we read against the portal's own count; the release snapshot matched exactly.

Here is the comparison against the city's own published figures, to the exact row:

City of Chicago data portal, payment dataset row count at snapshot (captured Jul 18, 2026)446,146
SpendLedger full payment-detail dataset record count446,146
Difference: 0.000%, within the documented 0% tolerancePASS

The row count we read matches the portal's own count to the exact row, and the dollar sums re-derived from our archive are penny-exact against extraction. We publish 266,585 of those payments (fiscal years 2022 through 2025) after the documented exclusions below. A dollar-level comparison against a city-published spending total is pending capture and will be added to this page when recorded; we publish that gap honestly rather than implying a comparison we have not yet made.

Known limitations

Check us yourself

Beyond the automated gates, we verify random individual payments against the city portal's own dataset views by vendor name, date, and amount. A single mismatch is treated as a stop-the-line event for the source. You can do the same: pick any payment on this site and look it up on the city's own portal by vendor name and date. If the portal disagrees with us, we want to know.

Machine-readable version of this report: /trust/chi/provenance.json. Report content last reviewed Jul 19, 2026.

Disclaimer required by the source's terms of use: This site provides applications using data that has been modified for use from its original source, www.cityofchicago.org, the official website of the City of Chicago. The City of Chicago makes no claims as to the content, accuracy, timeliness, or completeness of any of the data provided at this site. The data provided at this site is subject to change at any time. It is understood that the data provided at this site is being used at one’s own risk.