Skip to the page
Seatledger

Why this exists

All of this is already public. None of it is easy to find.

Every figure on this site comes from a government filing anyone may read. Reading them is the problem: the archives are complete, and they were never built to answer the question you actually have.

What it takes to answer one question: who funded my senator?

  1. Find the committee

    Campaign money is filed by committees, not by people. Your senator’s name is not the key — a committee ID like C00696948 is, and you have to know which of several belongs to them.

    committee master12 rows matching SANDERS
    • C00811380BRENDA K. SANDERS FOR CONGRESSprincipal campaign committee
    • C00931550BRENDA K. SANDERS FOR SENATEprincipal campaign committee
    • C00719088BRENDA K. SANDERS INDEPENDENT FOR CONGRESSprincipal campaign committee
    • C00411330FRIENDS OF BERNIE SANDERSprincipal campaign committee
    • C00936088REV. JARMAL JABBAR SANDERS FOR U.S. HOUSE DISTRICT 2principal campaign committee
    • C00890301REV. JARMAL JABBAR SANDERS FOR UNITED STATES CONGRESS DISTRICT 2principal campaign committee
    • C00593301SANDERS FOR CONGRESS INCprincipal campaign committee
    • C00852962SANDERS FOR OKLAHOMAprincipal campaign committee
    • C00709238DRAFT SARAH HUCKABEE SANDERS FOR ARKANSASunauthorized
    • C00960872GOD PLEASE SAVE US I REPEAT PHIL MURPHY VS BERNIE SANDERSunauthorized
    • C90018987HARRISBURG DSA FOR BERNIE SANDERSunauthorized
    • C00412445WAYNE-SANDERSON FARMS LLC POLITICAL ACTION COMMITTEEunauthorized

    The id above points at BERNIE 2020, which is not in that list at all: the surname is not in its filed name.

  2. Pull the filings

    The FEC publishes complete bulk files, which is a service to researchers and a wall to everyone else: pipe-separated records, coded columns, one row per contribution across a two-year cycle, and no header row in the file.

    itpas2.txt22 fields, one row
    CMTE_ID|AMNDT_IND|RPT_TP|TRANSACTION_PGI|IMAGE_NUM|TRANSACTION_TP|ENTITY_TP|NAME|CITY|STATE|ZIP_CODE|EMPLOYER|OCCUPATION|TRANSACTION_DT|TRANSACTION_AMT|OTHER_ID|CAND_ID|TRAN_ID|FILE_NUM|MEMO_CD|MEMO_TEXT|SUB_ID

    The file carries no names for these; they are from the Commission’s file description (opens in a new tab). Drag the line to read the rest of it.

  3. Ask who is behind it

    Then the hard part. Of 20,624 committees here, only 3,97919% — name the organisation behind them at all. The rest file NONE or leave it blank, and no amount of reading the filing will tell you more.

    connected_orgas answered by 20,624 committees
  4. Do it again for the votes

    Roll calls live somewhere else entirely, in research files keyed to member IDs of their own. Election results live in 15 different state systems, in 15 different formats.

Here it is one search.

The work above is done, on a schedule, for every seat: 539 members, 978,387 votes, 98,462 contributions from 20,624 committees. Type a ZIP code, a name, or a district and the answer is a page — with the filing it came from linked under every number.

The charter

Doing that work creates a second problem: you now have to trust me.

So here are the six clauses this site is written to. Each one is a thing the code does and a line it does not cross — not a standard anybody granted it, and not a promise about intentions. Every clause names what it publishes, so you can go and check that it did.

  1. A vote is a vote, not a position

    It publishes 978,387 recorded votes, each with how the chamber split

    It refuses to tell you what they support

    A vote is a thing someone voted on, not a position. Two readers of the same votes reach different conclusions, and choosing one for you would be the only unsourced number on the page.

  2. Sourced, or not published

    It publishes every figure with the document behind it — 44 provenance entries across 30 parts of the record

    It refuses to print a number it cannot trace

    Provenance travels with the figure, and text you copy carries the citation with it. Where a source is silent, the page says so instead of estimating.

  3. A price is a price, not a probability

    It publishes prediction-market prices, as prices

    It refuses to publish a forecast, including its own

    A price is what a trader will pay for a contract, carrying their fees, their tied-up capital, and however few of them are trading. It is not a probability, and this site has none.

  4. The filer’s words, not ours

    It publishes the FEC’s own filing for all 20,624 committees behind 98,462 contributions

    It refuses to invent an industry and ship it as fact

    Corporation, labor organization, leadership PAC — those are the government's words, not ours. Where an outside publisher has assigned a category, their name travels with it.

  5. Absence stays visible

    It publishes absences, labelled as absences

    It refuses to draw missing data as zero

    A member with no record and a member who voted no are different facts. A chart that renders them the same has made a claim nobody checked.

  6. A measurement, not a verdict

    It publishes the gap between how a district votes and how its member does, for the 528 members it can be computed for

    It refuses to call that gap good or bad

    It is a measurement against the district's own presidential result — an arithmetic distance, not a verdict. What it means is the reader's to decide.

How to hold it to them: every figure carries its filing, and the sources page lists all 36 publishers with the date each part of the record was last read. Words that could hide a judgement are defined in the glossary.

Whose work this is.

Almost none of it is mine. The Federal Election Commission collects the filings; Voteview publishes the roll calls and the ideology estimates; the Census Bureau runs the American Community Survey; each state canvasses and certifies its own returns. This site reads 36 publishers in all and cites every one of them where their figures appear.

Every source, and what it gave