Skip to main content
TrackGov Symbol TRACKGOV
Rollout Map
Login Sign Up
AU FederalQLD StateUS Federal

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 Against

The 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 Cosponsor

The 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 Against

The 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 chamber

There 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.

© 2026 TrackGov Pty Ltd.
About Contact Attributions Changelog Methodology
Jobs Donate