Methodology
Oathstar measures what members of Congress do, not whether it is good or bad. Every number on the site is computed from public records with the rules below. If you think a measure is wrong, the inputs are public and the rules are here, so you can check it.
Sources
- Members, terms, committees, offices and social accounts: unitedstates/congress-legislators, public domain (last updated Oct 4, 2026).
- Roll-call votes and ideology scores: Voteview, Lewis, Poole, Rosenthal, Boche, Rudkin and Sonnet, UCLA (119th Congress last updated Oct 4, 2026; 118th Congress last updated Oct 4, 2026).
- Campaign money: FEC bulk data files, refreshed weekly (last updated Oct 4, 2026); employer totals and leadership PAC sponsors from the FEC API (last updated Oct 4, 2026).
Attendance (participation)
The share of roll calls a member could have voted on where they voted yea, nay or present. Roll calls held before a member was sworn in or after they left are excluded. “Missed” counts roll calls recorded as not voting. Absences for illness, family leave or campaigning count as missed; the record doesn’t say why.
Party loyalty (party unity)
A party-unity vote is a roll call where most voting Democrats opposed most voting Republicans. On those votes, party unity is the share of a member’s yea or nay votes that matched the majority of their own caucus. Independents are measured against the caucus they sit with. This follows the long-standing definition used by Congressional Quarterly.
Bipartisan (cross-party agreement)
For each member of the other caucus, we count the contested roll calls where both cast yea or nay and how often they voted the same way. Cross-party agreement is total agreements divided by total shared votes, across every member of the other caucus. A roll call is contested when the losing side received at least 10% of yea-plus-nay votes, which removes near-unanimous votes like commemorations that would inflate everyone’s score.
Who votes alike
Pairwise agreement is the share of contested roll calls, where both members voted yea or nay, on which they cast the same vote. We only report a pair when they share at least 20 such votes.
Position (ideology score)
The first dimension of DW-NOMINATE, estimated and published by Voteview. It places members on a scale from about −1 (liberal) to +1 (conservative) based on their whole voting record. Oathstar displays it as published and does not estimate it.
Percentiles
“Higher than N% of senators” compares a member with everyone in the same chamber in the same Congress. Ties are split evenly.
Issue tags
Each roll call gets one issue tag from keywords in its official description, checked in this order. The first match wins; anything unmatched is tagged Other. This is deliberately simple so it can be audited. A model-based classifier is planned and will be published alongside these rules.
| Issue | Keywords |
|---|---|
| Nominations | nomination, confirmation |
| Budget & appropriations | appropriation, continuing appropriations, budget, debt limit, rescission, reconciliation, spending |
| Defense & national security | defense, armed forces, military, national security, intelligence, veteran, war powers, ndaa |
| Foreign affairs & trade | foreign, israel, ukraine, china, russia, iran, tariff, trade, sanction, treaty |
| Immigration & border | immigra, border, asylum, alien, visa, deport |
| Health care | health, medicare, medicaid, drug, hospital, abortion, patient, opioid, fentanyl |
| Energy & environment | energy, oil, gas, climate, environment, emission, epa, water, land, forest, wildlife, mining, nuclear |
| Taxes, finance & economy | tax, bank, financial, securities, crypto, digital asset, small business, labor, wage, housing |
| Crime & justice | crime, criminal, police, law enforcement, court, judicial, firearm, gun, prison |
| Government operations & elections | election, voter, federal employee, government, regulat, agency, congressional review, ethic, impeach |
| Education & families | education, school, student, child, family, women, sports |
| Transportation & infrastructure | transportation, highway, aviation, faa, rail, broadband, infrastructure, agricultur, farm |
| Procedural | rule, adjourn, journal, motion to table, quorum, previous question, speaker |
Bills
Sponsored and cosponsored bills, titles, policy areas and latest actions come from the congress.gov API (Library of Congress). “What it does” is the Congressional Research Service summary, which is written to be impartial; Oathstar shows it as published and notes which version it is. Bills without a summary say so. Status words (“In committee”, “Passed a chamber”, “Became law”) are derived from the latest action, whose full text is on every bill page. Roll call votes are matched to bills by bill number. Cosponsor lists cover current members of Congress.
Party split bars show how each party voted: Democrats on the left, Republicans on the right, the dark part yea and the light part nay. A vote is marked “Broke w/ party” when the member voted yea or nay against the majority of their own caucus.
Stories, events and summaries (AI)
Each press release is read by an AI model (Anthropic’s Claude Haiku). It writes a one-sentence neutral summary; names the broad issue (such as Disaster Response) and, when there is one, the specific event (such as Oregon Wildfires or a named bill); says what the member did (announced funding, pushed a bill, sent a letter, requested action, held or spoke at a hearing, visited, reacted, criticized or praised); notes any dollar amount; and records the member’s position on the event or issue (supports, opposes or neutral) with a short stance. The model is shown the issue and event names already in use and told to reuse them, so members are counted together.
Story pages show an AI-written brief of the releases (rewritten daily while the story is active), the events inside an issue, a timeline in which joint releases (same day, same action, matching title or amount) are merged into one line, and money announced (funding actions only, each amount counted once). “Where they stand” splits members by position only when at least two members are on each side; otherwise it says no disagreement was found. Counts are of members, not releases; ceremonial releases are left out. All AI output is labeled and can be wrong: a stance is a short reading of one release, not a full position.
Bills that became law inside other bills
Much legislating happens by folding one member’s bill into a larger one, such as the annual defense authorization or a spending package, or by passing the other chamber’s identical companion. The effectiveness score only follows each member’s own bill, so this work is invisible to it. For context, we list a member’s bills for which the Congressional Research Service names an identical bill, or a bill with similar text, that became law (from congress.gov’s related-bills data). “Similar text” means CRS found substantial overlap, not that every provision survived. The law’s own sponsor is not double-counted, and the score is unchanged.
Sponsors and cosponsors
The sponsor introduces a bill and owns it; cosponsors sign on in support. An original cosponsor signs on the day the bill is introduced, which usually means they helped write or negotiate it; later cosponsors are mostly signaling support. Counts on profiles are shown next to the chamber median for voting members.
Scope of laws
Each law a member sponsored is tagged by reach, separately from the effectiveness score: commemorative (naming a post office, an award, an anniversary); overturns a federal rule (Congressional Review Act disapprovals, which can carry large policy effects despite being short); local or single-entity (a named state, tribe, county, land conveyance or settlement); technical (deadline extensions, technical corrections); and national policy (everything else). Where a bill has been read by AI (see below), its tag comes from that reading: the model sees the title, policy area, latest action and the Congressional Research Service summary, and gives a short reason, shown when you hover over the tag. Bills not yet read fall back to rules on the title and congress.gov policy area. The model reads this Congress’s bills that became law, passed a chamber or got a roll call vote, and current members’ bills that moved past introduction. Local laws are not lesser work: they are often exactly what a member’s constituents asked for. The tags only describe reach; they don’t change the score, and the effectiveness board can be re-sorted by national-policy laws.
Plain-English bill lines (AI)
The same bills are read by an AI model (Anthropic’s Claude Haiku), which writes one neutral sentence of at most 25 words on what each bill does, for readers who aren’t lawyers. It works from the bill’s title, policy area, latest action and the first part of the CRS summary, and is told to name concrete effects and avoid sponsors’ language. The line appears under the title on bill pages and in bill lists, labeled “AI-read”. It is a shortcut, not a substitute: the CRS summary and congress.gov text are the record, and the model can be wrong.
Issues: says vs. does
For each congress.gov policy area, Oathstar puts side by side what share of a member’s press releases are about it, the bills they sponsored in it and how far those got, how often they sided with their party on party-line votes in it (next to the party median), and their vote on the closest final-passage vote in that area this Congress. Bills and votes carry congress.gov’s official policy areas. Press releases don’t, so they are assigned by keywords in the title and first sentence; about three in four match an area. A gap between talk and bills is shown as a fact, not a judgment: members also legislate through amendments, appropriations and other members’ bills.
Breaking with the party, by issue
For each issue, Oathstar counts the party-line votes (roll calls where most Democrats and most Republicans voted opposite ways) and how many times the member voted against the majority of their own caucus. The rate is shown next to the median rate of their party colleagues in the same chamber, and issues with fewer than three party-line votes are left out. Issues are assigned to roll calls with the published keyword rules below. A break is a fact about a vote, not a judgment of it.
Legislative effectiveness
Effectiveness follows the method of the Center for Effective Lawmaking (Volden and Wiseman). Each bill or joint resolution a member sponsored is counted at five stages: introduced, action in committee, action beyond committee, passed the chamber, and became law. Bills are weighted 1 if commemorative (naming a post office, an awareness week), 5 if substantive and 10 if significant. At each stage a member gets their share of the chamber’s weighted total; the five shares are added and scaled so the average member scores 1.00.
“Expected” is the average score of members in the same position: majority or minority party, and committee chair, ranking member or neither. A score more than 1.5 times expected is labeled above expectations, under half is below. The Congress in progress is scored so far.
Where Oathstar differs from the Center: significance uses an open signal (the bill got a recorded roll call vote) instead of licensed Congressional Quarterly coverage; the stage comes from each bill’s latest action on congress.gov rather than its full history; and the benchmark is a peer average rather than a regression that also accounts for seniority. The score measures moving one’s own bills. Members also legislate through amendments, negotiations and bills folded into larger packages, which it does not capture.
Statements and posts
Press releases come from the open congress-press dataset (Derek Willis, MIT license), which collects releases daily from every member’s official website and tags each with the member’s Bioguide ID. Posts come from Bluesky’s public API for members whose accounts are listed in the congress-legislators data; reposts and replies are left out. Oathstar keeps the last three months, shows an excerpt and always links to the original.
Bill numbers named in a statement (“H.R. 2214”, “S. 880”) are matched to bills in the Congress in session on the statement’s date. When the member voted on that bill, the vote is shown next to the statement as a fact; Oathstar does not label statements as consistent or inconsistent with votes.
Elections and candidates
A seat is on the ballot when its current term ends in the January after a general election, or when it is a special election seat whose term ends that November. Candidates are everyone registered with the FEC for that seat who has raised money and is not marked inactive (last updated Oct 4, 2026). Candidates who lost a primary can appear until they close their committee. Incumbents are matched to their member profile by FEC candidate ID, and a seat is called open only when the FEC lists candidates for it as running for an open seat, it is vacant, or its holder is running for another office.
Campaign money
Money figures come from the FEC’s candidate summary file for each two-year cycle (the 2025–26 cycle runs from January 2025 to December 2026). A member who has registered more than once (for the House and later the Senate, or a re-registration) has every registration added together. Raised is total receipts. From individuals and From PACs are contributions from individuals and from other political committees; their shares are of total receipts, which also count loans and transfers between a campaign’s own committees, so they need not add to 100%. Self-funding is the candidate’s own contributions plus loans. Cash on hand and debts are at the end of the latest report. Every figure links to the candidate’s FEC page for that two-year period, and the exact amount is in its tooltip. Filings lag, so each section shows the date it runs through. A leadership PAC is a separate committee a member sponsors to give to other candidates; the sponsor comes from the committee’s FEC registration. Oathstar shows money and votes side by side; a contribution is not evidence of how anyone votes.
Who funds a member
“Who funds” lists the committees that gave directly to a member’s campaign, from the FEC’s file of contributions from committees to candidates. Only direct contributions count (FEC transaction types 24K, and 24Z for in-kind gifts); money a group spends on its own to support or oppose a candidate (independent expenditures) is left out. Memo entries are skipped so nothing is counted twice, and refunds and corrections are kept as negative amounts so each total is net. A committee is named for the organization behind it when the FEC records one, so “Acme Corp Employees PAC” appears as Acme Corp. The organization itself did not give: a corporate or labor PAC gives money raised from employees or members. Each committee is labeled by the kind the FEC records: corporate, trade association, labor union, membership group, cooperative, independent (not tied to an organization), a member’s leadership PAC, a party committee, or another candidate’s campaign. “Also gave to” counts the other members and candidates Oathstar tracks that the committee funded in the same cycle, and the split shows how its money to sitting members divided by caucus. Contributions from individual donors are not shown.
Campaign finance (earlier method)
Until the bulk files load for a member, totals are for the member’s principal campaign committee in its most recent two-year cycle, as reported to the FEC. Top employers group itemized contributions from individuals by the employer each donor reported. Entries such as retired, self-employed or not employed are excluded. Employers did not make these contributions; their employees did.