Methodology & Data Freshness

We are deliberate and explicit about where every number on this site comes from and how recently it was true. Trust comes from transparency about freshness, not from claiming currency we don't have.

Data sources

FEC bulk data
Candidate, committee, and fundraising-summary tables are loaded from the Federal Election Commission's bulk-data downloads (cn.txt, ccl.txt, cm.txt, weball26.txt, webk26.txt). Bulk extracts are refreshed by the FEC every 1–2 weeks and lag the most recent committee filings by a few days. The current snapshot covers reports through March 31, 2026 (Q1 2026). Source: api.open.fec.gov.
Cook Political Report ratings
Race ratings published by The Cook Political Report. Each race page lists the rating's as of date inline. Cook updates ratings irregularly in response to events; we re-record dates when we update our editorial dataset. Source: cookpolitical.com.
Sabato's Crystal Ball ratings
Race ratings published weekly by the University of Virginia Center for Politics. Same provenance discipline as Cook: each race page lists the Sabato rating's as of date. Source: centerforpolitics.org/crystalball.
Editorial dataset
A hand-compiled JSON file containing per-race metadata that the FEC bulk data doesn't carry — primary and runoff dates, filing deadlines, incumbent party / status, PVI, and a short narrative for each race. The current editorial dataset was compiled April 22, 2026. The header timestamp on every page (Last updated: Apr 22) reflects this date.

What our timestamps mean

Header: Last updated: Apr 22
The compile date of the editorial dataset (ratings, primary calendars, candidate rosters). Not the time of last database write, not the time the page was rendered, not "real-time." The most recent date on which the underlying editorial source was reviewed and refreshed.
Per-rating: As of YYYY-MM-DD
The date Cook or Sabato published the rating shown. Sometimes more recent than the editorial-dataset compile date (the rating may have been pulled later); sometimes older (the rating hasn't moved).
Per-fundraising: Through YYYY-MM-DD
The coverage end date of the FEC report the fundraising figure comes from. For Q1 2026 reports, this is March 31, 2026. Receipts after that date are not yet reflected.
Footer: Page rendered <ISO>
The wall-clock time when the static HTML was generated. This is intentionally distinct from the data-freshness timestamps. A freshly-rendered page does not imply fresh data.

What we do not do

Update cadence

The editorial dataset is reviewed and refreshed weekly. The FEC bulk extract is refreshed within a few days of the FEC's own 1–2 week refresh cycle. Race pages are re-rendered whenever either source updates.

Corrections

Errors are inevitable in any reasonably ambitious dataset. If you find one, please report it. We will correct it, document the correction, and credit the report.

Page rendered 2026-05-25T04:07:51.616Z.