PartyLine turns official roll call data into clear, issue-level voting records with no commentary or spin.
Three simple steps to find politicians who actually vote the way you think.
Answer quick questions about where you stand on key issues like healthcare, climate, immigration, and more.
We compare your positions against real congressional voting records for incumbents, and against clearly labeled estimated public-position data for challengers when no voting record exists. Challengers for whom we have no substantive public evidence are shown as “No score yet” rather than given an overall score derived from party alone. Where we do show a challenger, individual issues we have no direct evidence on fall back to their party’s typical position and are labeled “(est.)”. That is the majority of challenger issue rows today, so read any challenger position without a cited source as an estimate rather than something that candidate said.
Discover which politicians vote the way you would, with issue-level breakdowns and key vote context.
For incumbents: VoteView for historical roll call votes; the Congressional Research Service, via Congress.gov, for the official summary of what each bill does; the House Clerk and Senate roll call feeds for the official text of each vote; and the Bioguide directory for member metadata.
For candidates: Ballotpedia; FEC donor data (DIME/CFscores); the candidate’s own campaign website, and their official government website if they already hold office; published candidate questionnaires; Vote Smart; and, for anyone who has previously held federal office, roll call records from VoteView and ProPublica. Most candidates have little or no such evidence; where that is the case we say so on their card rather than implying we found something.
For state offices and officeholders outside Congress: state legislator rosters come from Open States, covering the 50 states plus DC and Puerto Rico. Mayor rosters come from Wikidata, joined on Census place codes: they are sourced and checkable, but not yet hand-verified against each city’s own records, so treat a mayor listing as believed-current rather than confirmed. Where a city’s own page and its Texas Municipal League entry have both been read, the card says the name rests on two published sources.
For county, municipal, school and special-district offices — which is most of what a ballot page now shows — there is no single national source, so each row is built from a published document and carries where it came from: the state election authority’s own certified list of what will be printed (in Texas, the Secretary of State’s signed Ballot Certification Report, pinned by checksum); the county election office’s own candidate filing list, election order or sample ballot; the statewide association directories that publish county officials (sheriffs’, clerks’, judges’ and assessors’ associations); the state court administrator’s judicial directory for sitting judges; and the legislature’s own enacted district plans and the Census block tables for deciding which of those contests are yours. Two rules govern all of it: a person’s name is published when two independent publishers print it the same way, and where only one publisher has it the card says so; and a contest we have not built is named on the page as missing rather than left out silently. Every row carries the date the document it came from was read, and a source that refuses an automated reader is recorded as refused rather than as empty.
AI models analyze bill text, titles, and summaries to assign each vote to a primary issue category. This ensures legislation is grouped consistently across sessions.
Each incumbent issue score is calculated from categorized roll call votes using a significance-weighted averaging system. Landmark votes count more than minor votes, purely procedural votes are excluded from issue scoring, and the final score reflects long-run voting direction on that issue over time.
Our vote records run from 1981 to the present with no missing years. For a period they did have a gap: the 114th Congress — all of 2015 and 2016 — was absent from every member's record, because VoteView writes one column differently for those two years and our reader silently skipped all 622,405 rows of it. 538 members had a two-year hole in the middle of their record. It was found and backfilled on 25 August 2026, and a test now fails if any year between 1981 and today goes empty again.
Scores range from 0 to 100. One end of the scale reflects one side of the debate; the other end reflects the opposite position. Scores in the middle reflect mixed voting behavior. Challenger scores are published separately as estimated positions. Where a challenger has real public evidence — a campaign site, a Ballotpedia profile, a recorded position — we use it and link it, but that is the minority of what we hold: across the candidates a reader can currently reach, 31.6% of issue rows rest on real evidence, 41.0% are a party-affiliation baseline, and the remaining 27.4% have no recorded source we count as evidence: a reading inferred from a candidate’s materials without a direct quote, an indirect estimate such as a donor-based ideology score, or nothing recorded at all. We count them as neither. A baseline is a starting point drawn from party, and it says nothing about that particular person. So a challenger must have real positions on at least three issues before we publish a number at all — today 33% of reachable candidates show “No score yet” instead of a number that could imply false precision. Each issue page describes what the two ends of the spectrum represent for that specific topic.
Everything below is what the code does today. A test compares these numbers with the code and fails if either changes without the other.
1. A member of Congress’s score on one issue. Each roll-call vote classified to the issue counts toward one side of it. The score is the weighted share of votes toward one side, from 0 (always the first side) to 100 (always the other). Votes are weighted by how significant the bill was: 1.75 for a landmark vote, 1.35 high, 1.0 medium, 0.6 low, and 0 for a procedural vote. A motion whose Yes and No say nothing about the measure (to recommit, to reconsider, to order the previous question, to adjourn or to refer) is left out; a motion to table an amendment or a bill counts as a vote to kill it, and a motion whose direction cannot be read from the record is excluded rather than guessed. On 29 September 2026 we found 216 that had slipped through and excluded them: their vote receipts came off the site that day, and the scores followed at the full rebuild of the record on 3 October 2026.
2. Your position on one issue. Your answers on an issue become a position from −2 to +2, placed on the same 0–100 scale (position × 25 + 50).
3. Agreement on one issue is worked out in two steps. The same two steps apply to every issue, every politician and both sides of every debate.
The words follow the number, and the direction. Each issue row’s label is read off that same agreement: 80 and above “Strongly agree”, 60–79 “Mostly agree”, 40–59 “Mixed”, 20–39 “Disagree”, below 20 “Strongly disagree”. One rule sits on top, the same for both sides: someone who leans your way is never labelled below “Mostly agree”, and someone who leans the other way is never labelled as agreeing with you.
Why this is non-partisan. Nothing in these steps knows a party, a person, an issue, or which end of a scale is which. The agreement depends on three things only: how far apart you are, how clearly each of you leans, and whether the leans point the same way. Flip every answer and every politician’s position to the other side of every issue and every number stays exactly the same; a test checks this across every position the survey can produce. We also scored every published candidate against simulated voters and their exact mirror images: against a mirror-image world the results matched to the point. That shows the formula has no lean. It does not show the data has none: the positions the formula compares come from how votes and campaign statements are measured, and a measurement choice can still tilt a result. We examine those separately, on the published records themselves.
Measured on the published data (2026-10-09). We score a reader who takes the liberal side of every issue at full strength against the sitting members of their own party, and the exact mirror-image conservative against theirs. Today the liberal reader averages 85.1% with sitting Democrats and the conservative reader 80.3% with sitting Republicans: a gap of 4.7 points at full strength, 0.0 at a clear lean and -2.2 at a mild lean. Among candidates with no voting record, 80% of Democratic challengers and 59% of Republican challengers have enough stated positions for a number. Part of each gap is real, because the two parties do not vote with equal cohesion, and part comes from how votes are counted; the breakdown by issue is in the fairness report, recomputed with every nightly refresh.
Why it changed (29 September 2026). Version 1 used closeness alone. A voter leaning slightly toward stronger environmental rules scored 80 against a moderate who wanted fewer of them, but only 60 against a firm ally, so the other side of an issue could out-score your own, and two candidates on opposite sides could both read “Strongly agree”. Now the direction counts too, in proportion to how clearly each of you leans.
4. The match is the weighted average of those agreements, using the order you ranked the 13 issues: 6, 5, 4, 3, 2.5, 1, 1, 1, 0.75, 0.75, 0.75, 0.5, 0.5 for ranks 1 through 13. Your top issue therefore counts 6× a middle-ranked one and 12× your lowest. Ranking all 13 is required before the questions; a reader who ranked fewer before it was required has each unranked issue counted at 1 until they finish. An issue is left out of the average — not scored as a tie — when:
If fewer than 3 of your issues are left, you see “No score yet”, never a 50%. The divisor is the sum of the weights of the issues that count, so an issue left out neither raises nor lowers the number. The result is rounded to the nearest whole percent.
5. Every match rests on at least 3 issues. A member of Congress counts an issue that has at least 3 scoreable votes; a candidate with no voting record counts an issue with public-position evidence, and only where the reader model rated that evidence at 0.60 confidence or above (a position below that is shown, marked, and not counted), and only where the words it rests on appear verbatim in the candidate’s own materials (a reading the model inferred without a direct quote is shown as “(inferred)” and not counted), and only where those words state a position on the issue (a quote the pipeline judged off the issue or empty of any claim is shown, marked “(not counted)”, and not counted). Only those issues count, and at least 3 of the issues you took a side on must have counted against the record before a percentage is shown. Below 3, either way, the card says “No score yet” — for a new member whose votes so far cover one or two issues, too, and for a record that counts only one or two of your issues.
6. What each match says about itself. Beside every percentage the site says which record it was measured on (a voting record, with the number of votes, or a candidate’s stated positions, with the number of issues), how many of your issues it counted, and which of your top three issues it has nothing for. A voting record and a set of campaign statements are different measurements: for people who have both, the two differ by about 16 points on average, and by 17 points or more on about one row in three. We do not adjust for that; we show which one each number came from. When everyone we can score in a race is already shown and someone in it has no score, nobody is called the “best match”: the card says “the only candidate we can score” and names who has no score and why.
7. The past ten years. Beside a member’s career score on an issue, their profile shows the same score computed from only their votes in the ten calendar years ending this year, once the record carries that window, and says so when the two differ by 10 points or more. A career can change; the two numbers are how you see it. Your match uses the career score.
8. Near-unanimous votes do not score. A roll call where each party’s members voted at least 90% the same way, on the same side, says nothing about where one member stands relative to another, so it stays on the record as a receipt, marked, and counts toward nothing: not the score, not the vote count, not the ten-year view. Before this rule, 90% of consensus bills on healthcare were filed “expand”, which leaned 127 of 268 sitting Republicans toward expanding the government’s role. In the scoring review’s test run (29 September 2026), removing them halved the own-party gap the fairness report measures. Members therefore stop getting credit for voting with the other side on uncontroversial bills, and “Based on N votes” falls. The rule took effect at the full rebuild of the record on 3 October 2026.
Worked example. You rank healthcare 1st (weight 6), climate 2nd (weight 5) and immigration 3rd (weight 4). On healthcare you sit at 75 and a senator at 60: closeness 85, and you lean the same way, so it stays 85. On climate you sit at 60 and the senator at 30: closeness 70, but you lean opposite ways, both clearly, so it becomes 35. On immigration you sit at 40 and the senator at 45: closeness 95, same side, so it stays 95. Match = (6 × 85 + 5 × 35 + 4 × 95) ÷ (6 + 5 + 4) = 1065 ÷ 15 = 71%. Under version 1 it would have been 83%. Had you sat at 52 on climate, a slight lean, the drop would be about a quarter as large: 78 would become about 67, not 35. Every other issue you left neutral, so it does not move the number.
Recent votes are ingested through a scheduled update pipeline, and the data freshness is tracked so new roll call votes can be added shortly after they occur.
County, municipal, school and special-district data has its own scheduled refresh, which re-reads the published sources above and commits what it got. It is separate from the vote pipeline and it can fail independently — when it does, the affected rows keep the date they were last read rather than disappearing, and a source that has gone stale is labelled on the page instead of being presented as current.
District Pulse figures describe PartyLine users who chose to answer, never the district. Nothing stops a campaign from asking a few hundred real supporters in a district to take the survey: every account would be genuine, no rule would be broken, and no check we could run would tell their answers from anyone else’s. A determined group can therefore move a district’s numbers, which is why we never present them as a sample of the district, a poll or a forecast. Every figure says whom it describes and how many answered, in the same block as the number, and a district shows nothing at all until at least 100 people with verified accounts there have answered.
First, where AI is deliberately absent. The plain-English description of what a bill does is copied word for word from the official Congressional Research Service summary. No AI writes it. Where no official summary exists, we show nothing at all rather than a plausible guess — on 10 October 2026 that was 236,423 vote receipts carrying verbatim official text and 29,481 deliberately left blank. An automated check re-verifies every published summary against its official source on every update.
We used to generate those summaries with AI. In August 2026 we measured a sample against primary sources, found 37.9% of them contained invented claims, and removed the generator rather than trying to tune it.
For incumbents: AI does two jobs. It classifies the dominant policy issue of each bill so votes group consistently, and it assigns each vote's direction — which side of an issue a “Yes” counts for. Direction matters most, because getting it backwards would invert a politician's score rather than merely misfile it. Both are reviewed against primary sources, corrections are recorded permanently with their evidence, and votes whose direction cannot be established are excluded instead of guessed at. AI never alters a vote outcome; those come from the official record.
For candidates without voting records: AI models (Google Gemini for initial categorization, Anthropic Claude for evidence re-scoring and off-topic filtering) estimate issue positions from Ballotpedia profiles, campaign materials, and other public sources — where those sources exist. For most candidates they do not, and no AI is involved in what happens then: the remaining issues take a party-affiliation baseline, which is arithmetic on a party label and not an estimate about the person. These estimates are clearly labeled and scored separately from vote-derived data. Claude also re-audits incumbent vote categories and directions — a second model checking the first.
Where a candidate previously held federal office, their voting record takes precedence over any estimate. A donor-based ideology estimate (DIME/CFscore) never replaces a candidate’s own stated position and never counts toward a match. An April 2026 data run had let those estimates overwrite or drop about 5,100 stated positions. On 29 September 2026 we read each one held by a candidate on a ballot we show against its quote and its source page, and restored the 250 that state a position, on the side scored, that can still be found on the candidate’s page (live or archived). The rest stay estimates: they do not count, and they no longer show a quote that was never theirs.
Every caveat on PartyLine links here. This is what each one means — and why showing uncertainty beats hiding it.
Every position we show traces back to specific roll-call votes a politician actually cast. Each one links to the official record on congress.gov, so you never have to take our word for it.
The count next to a position is how many votes it rests on. A position built on 3 votes is real but thin — three votes leaning the same way produce a “strong” score by simple arithmetic. Since 4 October 2026 a position resting on fewer than 6 counted votes is never labelled “Strongly”, whatever its number: it reads “Leans” and shows the count. We always show the number: you decide how much weight it deserves.
It means exactly that: this person has not cast enough scoreable votes on this issue for us to state a position. We say “we don’t know” instead of guessing — a missing number is survivable; a confidently wrong one is not.
These words mean the same thing everywhere on PartyLine.
Some candidates have no voting record yet. Where we show anything for them, it is their party’s typical position — a starting guess, clearly labeled, never presented as something they personally did. The moment real votes exist, the estimate is replaced by the record.
PartyLine is designed to organize voting data, not persuade. Every issue score is backed by public records and surfaced transparently.
Explore the issue library to understand definitions and directional scoring, or take the survey to see your top matches.
Browse Issues