Live data · v0.1 · built July 2026 · 117th Congress, U.S. House

The Representation Gap Index

One score per representative: of the floor votes where a stable national supermajority stood on one side and organized money stood on the other, how often did they vote with the public? Computed from official House Clerk roll-call records — every number below is a real vote by a real member.

members scored
slate votes
avg support for slate
became law
§ 01

Find your representative

Score against which voters? The majority position changes with the electorate you pick — e.g. a Republican-voter majority opposes the assault-weapons ban, so a Nay there counts as voting with Republican voters. Issues where the selected group has no clear majority (45–55%) drop out of the score.

MemberParty / StateGap IndexSlate votes (hover a square)Band
Squares left→right follow the slate order in §03. Green = voted with the selected electorate's majority; red = against it; hollow = no recorded Yea/Nay; faded = that group has no clear majority, so the vote is excluded from scoring. Members without enough countable votes are excluded.
§ 02

The shape of the gap

If the House tracked public opinion, scores would cluster near the top. Instead the chamber splits into two poles — and the near-empty middle is the finding: on supermajority issues, most members vote as a bloc, for or against the public position, regardless of what their voters have told pollsters for a decade.

Distribution of Gap Index scores, 117th House, for the voter demographic selected in §01. Bars are member counts per score decile. Switch the demographic above and watch the shape move.
§ 03

The vote slate, with receipts

Slate v0.1: eight House floor votes where national polling showed a ≥60% stable majority and lobbying records show organized, funded opposition. All eight passed the House with public-majority backing; several then died without a Senate vote.

Bill · roll callIssue · monied oppositionSupport by voter group (bold = selected)
§ 04

Methodology & honest limitations

Score = 100 × (slate votes cast with the polled national majority) ÷ (slate votes cast Yea or Nay). Source of record: House Clerk roll-call XML (clerk.house.gov/evs). No modeling, no weighting — v0.1 is deliberately auditable by hand.

Known bias, stated plainly. Every bill on slate v0.1 was brought to the floor by the House majority party, so the raw score correlates with party. That reflects two entangled facts — which party's floor agenda matched supermajority opinion in 2021–22, and agenda control itself. The v1.0 fixes: (1) score only district-conflict votes using MRP district-level opinion instead of national polling; (2) balance the slate with majority-supported measures the other party championed; (3) weight by FEC donor-conflict per member. The middle band already shows the instrument works: it isolates exactly the crossover members (Fitzpatrick, Golden, Upton, Bacon, Cuellar…) known for splitting from their party on these issues.

Roadmap: v0.2 adds the Senate and the 118th–119th Congresses (Congress.gov API, verified working). v1.0 adds district-level MRP opinion, per-member FEC out-of-district money share, confidence intervals, and an academic audit board. The pipeline is ~200 lines of dependency-free Python; everything regenerates with one command.