Methodology & sources
CivicRoll has one prime directive: we show, we never tell.We present the official record with links back to its source and let you draw your own conclusions. Here’s exactly how the data is gathered, kept correct, and checked.
Where the data comes from
Everything is sourced from official U.S. government records — all public domain or CC0. We never call these services live from the page; a separate pipeline pulls them into our own database, and the site reads only from that. Every figure on the site links back to its origin.
Upcoming votes & floor schedules
Upcoming-vote coverage comes from two live source lanes, each with real, disclosed limits — never the full floor calendar.
House: the docs.house.gov weekly floor-schedule XML. This covers only the bills listed on that schedule — not every bill the House may act on, and not committee markups.
Senate:senate.gov’s floor_schedule.xml. This source publishes session-day convene/adjourn/next-convene records only — it carries no measure-level upcoming-vote data, so Senate items here never carry a bill identity and can never be matched to a real vote. It is not the full Senate calendar.
Congress.gov’s upcoming floor legislation is unavailable in v1 and always will be until that changes: Congress.gov has no API endpoint and no RSS equivalent for upcoming floor legislation, and its site returns a 403 to non-browser access. CivicRoll does not impersonate a browser to bypass this. This lane always records a coverage status of error and contributes zero items — the House and Senate lanes above are the only live coverage.
Correct as of the date
Truth here isn’t static — it’s “correct as of a date.” Members switch parties, districts get redrawn, and seats change hands mid-term. We store party and seat as effective-dated history, not a single field that silently overwrites. So a vote always shows the party a member held on the day of that vote — for example, a representative who was Republican in 2024 and Independent in 2026 appears correctly for each period.
How we keep it accurate
Every ingest is validated before it’s trusted: vote tallies are reconciled against the individual recorded positions, every voter is cross-checked against the canonical member list, and any discrepancy is flagged for review rather than silently overwritten. The current dataset reconciles every roll-call vote with zero tally errors.
No thumb on the scale
Neutrality is the whole point. There is no “important votes” list reflecting our priorities — votes are sorted by neutral, disclosed rules like date. We present facts side by side and never assert or imply causation we can’t prove. If the numbers embarrass a side, that’s the data, not us.
Your vote & agreement
You can record how you would have voted on a roll call and see, honestly, where that lines up with your representatives. This is never framed as a ranking — it’s a literal count, and we say so on the page.
The universe: stance capture is offered only on verified final-passage votes — the disclosed thin slice, not every procedural motion or by-name vote (like a Speaker election).
The math: among the votes where you recorded Yea or Nay andthe member had an eligible Yea or Nay position, we count how many match: “You and [member] voted the same way on X of N votes you weighed in on.” Percentages appear once you’ve weighed in on 10 or more eligible votes with that member; below that threshold, we show the counts alone.
Exclusion accounting: a member’s Present, Not Voting, or any position label we don’t recognize is excluded from the count and shown separately as a count — never silently dropped. We always show how many eligible votes you haven’t weighed in on yet, and a standing note that this reflects only the votes you chose, not a member’s overall record.
Skip ≠ abstain:choosing Skip records that you deliberately declined to weigh in on that vote. It is not the same as a member’s Present vote, and it never counts toward agreement or disagreement — it just means you haven’t weighed in.
Where this lives:entirely in your browser’s local storage. It is never sent to our servers, never included in any analytics event, and never appears in a URL, query string, or request header. See Privacy for details.
AI-generated bill summaries
Some bill pages show a plain-language AI-generated summary, labeled as such and shown next to a link to the official source. Each one is generated only from the bill’s official congress.gov summary text already in our database — never full bill text — and is held for human review before it goes live. AI summaries currently cover bills with verified final-passage votes. If a bill has no AI summary, that section is simply absent — we never show a placeholder.
What this doesn't cover (yet)
Today CivicRoll covers federal legislators, bills, and roll-call votes for the 118th–119th Congress. Address-level representative lookup (“find your reps”) is live today. Campaign-finance data is not live yet — no finance figures appear anywhere on the site today.
When we do add money data, it will come from OpenFEC only, and we’ll be specific about scope rather than characterizing the money picture as a whole: official FEC records capture disclosedmoney, and some donors are not disclosed to the FEC under current law. Candidate-committee receipts and outside (independent) spending will always be shown as distinct figures, never combined or compared as if they were the same kind of money. We will not describe the scale of undisclosed money in vague magnitude terms unless we can cite an actual number for the exact scope being displayed.
Campaign-finance scope language above is provisional, pending review by counsel and a campaign-finance-law expert.