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
- We do not fabricate fundraising figures. If a candidate has no FEC filing in the current snapshot, the card reads Not yet filed with FEC.
- We do not claim real-time data. There are no pulsing dots, no "LIVE" chips, no "as of moments ago." If you see a freshness claim on this site, it is a date.
- We do not infer Cook or Sabato ratings. If a date isn't in our source notes, the badge reads date pending.
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.