How positions are computed
Scope: this page describes the position resolver for US federal bills only. Other jurisdictions (Australian federal bills, Queensland state bills) and other content types use different data shapes and don't apply this four-tier cascade.
TrackGov resolves each member's position on each bill through a four-tier cascade. We always prefer the strongest direct evidence available, falling back to inference only when recorded evidence is absent.
The tier shown in the position modal tells you which level of evidence we used. Lower numbers mean stronger evidence.
Tier 1 - Direct vote
For AgainstThe member is named in a recorded roll call on a passage-form vote of the bill in their own chamber - On Passage, Conference Report, Suspend the Rules and Pass, Motion to Recommit, Cloture, Veto Override, and similar. The official roll-call list places them on Yea, Nay, Aye, or No.
When multiple passage-form roll calls exist on the same bill (e.g. a Cloture vote followed by Final Passage), we take the highest-rank vote as the verdict. Veto Override and Conference Report rank above Final Passage; Cloture and Suspend-the-Rules rank below.
Polarity is inverted for hostile motions. A Yea vote on a Motion to Recommit or Motion to Table reads as Against the bill, because the motion itself is hostile to passage.
When a Tier 1 vote contradicts the member's own caucus majority, we mark it as a rebellion (crossed party).
Tier 2 - Explicit endorsement
Sponsor CosponsorThe member didn't vote, but they are the bill's sponsor or appear in the cosponsors list. Sponsors are presumed to support their own bills; cosponsors publicly endorse a bill at introduction or later. Both resolve as For.
Sponsorship is treated as a stronger signal than caucus inference, so even when a member's caucus dominates the cascade, an explicit sponsor or cosponsor entry takes precedence.
Tier 3 - Caucus-derived
Presumed For Presumed AgainstThe member didn't vote, isn't a sponsor or cosponsor, but their caucus did vote on the bill. We infer their position from the caucus majority on the highest-rank passage-form roll call in their chamber. If the caucus split or had no recorded position, we don't infer.
Tier 3 positions are marked presumed in the UI to make the inference visible - they are not a substitute for direct evidence.
Three independents currently caucus with the Democrats (Sanders, King, and others); they are treated as Democratic for Tier 3 purposes. True independents - caucusing with neither party - fall through to Tier 4.
If the member rebelled on any roll call linked to this bill, including a procedural one, Tier 3 is skipped. A recorded act of independence overrides the caucus-line inference.
Tier 4 - No record
— No record — Not in chamberThere are two reasons we won't infer a position:
- Not in chamber - the member's term in the House or Senate doesn't overlap with the bill's activity, so they had no opportunity to vote.
- No record - the member's term overlaps the bill, but they didn't vote, didn't sponsor, didn't cosponsor, and their caucus either split or had no passage-form vote in their chamber.
Tier 4 is the only outcome where we explicitly say we don't know.
Freshness and versioning
Each position carries a last_updated timestamp and a resolver version number. When
we change how the cascade decides, we bump the version so old computations can be recognised
and re-run.
Source data - Congress.gov bill metadata and cosponsorship, House Clerk and Senate roll call XML, caucus rosters - is refreshed daily.
Reporting an error
If a position looks wrong to you, we want to know. Email admin@trackgov.com with the bill, the member, and what you saw.