Outside money is the least accountable part of an American campaign and the best documented part of it. Every dollar a super PAC — a committee allowed to raise unlimited sums on the condition that it spends them without coordinating with any candidate — spends for or against a candidate has to be reported to the Federal Election Commission. The Commission publishes the whole cycle as one file that anybody can download for nothing. So the obvious questions look answerable. How much was there in 2024, and was it spent promoting candidates or attacking them?
Both are questions a citizen has a stake in, because this is the money nobody can be asked about. A campaign that runs a dishonest advertisement can be made to answer for it. A super PAC cannot be voted out, and the candidate it helps can disclaim it truthfully, because coordinating with it — planning or paying for the spending together — would be illegal. Buckley v. Valeo (1976) drew the line that makes this possible, allowing limits on what a person gives to a campaign but not on what they spend on their own;1 Citizens United v. FEC (2010) extended it to corporations and unions, on the reasoning that money spent independently cannot corrupt.2 Whether it mostly promotes or mostly attacks is one of the few things about it a reader can check.
So you download the file and add up a column. Can you?
The data is the file of independent expenditures the Commission publishes for the 2024 cycle — the two years ending with the November 2024 election — downloadable from its bulk-data page at https://www.fec.gov/data/browse-data/?tab=bulk-data with no account and no fee: 73,449 rows, one per reportable expenditure. An independent expenditure is money spent for or against a candidate by somebody the candidate does not control. Anyone who spends above a threshold on a message urging the election or defeat of a named federal candidate has to report it, and in the closing weeks of a campaign within a day or two of writing the check.3
This file can answer the question because of one column. Schedule E, the page of the Commission’s reporting form on which independent expenditures are listed, makes the spender code every line as supporting or opposing the candidate it names. Almost no other record of political money in the United States carries that field, and without it the only answerable question is how much, which is the less interesting one. What the file does not carry is any checking. Nobody stands between the filer and the reader: the Commission is a disclosure agency rather than an auditor, for the reasons this cluster’s chapter on campaign finance disclosure sets out.
The test is to add the column up as the file arrives, look at the largest rows, and add it up again.
The table every number here rests on is that bulk file: 23 columns, 73,449 rows. Here is every column, with the part worth insisting on — what each one actually contains across all 73,449 rows, rather than whatever it happened to say in the first one.
| # | Column as it arrives | What is in it | Blank | What it holds |
|---|---|---|---|---|
| 1 | cand_id | 749 distinct, e.g. "H4CO08034" |
12.9% | FEC ID of the candidate the money is about |
| 2 | cand_name | 1,323 distinct, e.g. "Evans, Gabe" |
— | that candidate’s name |
| 3 | spe_id | 1,001 distinct, e.g. "C00866517" |
— | FEC ID of the committee doing the spending |
| 4 | spe_nam | 1,081 distinct,
e.g. " Go America PAC" |
— | the spender’s name, as the filer typed it |
| 5 | ele_type | G · P · O ·
S · R · C |
— | which election: P primary, G
general, and four more — O other, S special,
R runoff, C convention |
| 6 | can_office_state | 57 distinct, e.g. "CO" |
17.6% | state of the office sought |
| 7 | can_office_dis | 46 distinct, e.g. "08" |
— | district of the office sought — a code, not a quantity |
| 8 | can_office | H · P · S |
— | office sought: H, S or
P |
| 9 | cand_pty_aff | 9 distinct, e.g. "REPUBLICAN PARTY" |
15.0% | the candidate’s party |
| 10 | exp_amo | 30,236 distinct, -580,000 to 9,978,412,568 | — | the amount of this one expenditure |
| 11 | exp_date | 581 distinct, e.g. "27-SEP-24" |
35.1% | the date of the expenditure — often blank, see below |
| 12 | agg_amo | 30,148 distinct, 0 to 2,888,374,799 | 0.2% | running total this spender has aggregated for or against this candidate |
| 13 | sup_opp | S · O |
0.2% | S support or O oppose — the
single character this chapter counts |
| 14 | pur | 5,785 distinct,
e.g. "texts supporting Gabe Evans CO-8" |
— | purpose, in the filer’s own words |
| 15 | pay | 5,448 distinct, e.g. "TTHM.com" |
— | who was paid |
| 16 | file_num | 11,837 distinct, e.g. "1845617" |
— | the FEC filing this row came from |
| 17 | amndt_ind | N · A1 · A2 ·
A3 · A4 |
— | N new filing;
A1–A4 a first, second, third or fourth
amendment |
| 18 | tran_id | 49,153 distinct,
e.g. "E2D2833410CAA40CB9A5" |
— | the filer’s own transaction ID |
| 19 | image_num | 37,632 distinct,
e.g. "202410319719900778" |
— | the scanned image of the paper filing |
| 20 | receipt_dat | 698 distinct, e.g. "31-OCT-24" |
— | the date the FEC received it |
| 21 | fec_election_yr | 2024 |
— | the election year — the same value on every row, so it carries nothing |
| 22 | prev_file_num | 1,185 distinct, e.g. "1832140" |
82.5% | the filing this one amends, where it amends one |
| 23 | dissem_dt | 693 distinct, e.g. "30-OCT-24" |
19.3% | the date the message actually went out |
Three things in that table are worth stopping on.
The spender’s name begins with a space.
" Go America PAC", not "Go America PAC". Group
the file by spender without trimming and this committee becomes two
committees, sorted to opposite ends of any alphabetical list, with its
money split between them. Nothing announces it. It is one invisible
character.
There are three date columns and the obvious one is the
emptiest. exp_date is the date of the expenditure,
the column anyone would reach for, and it is blank on 35.1% of
rows. dissem_dt, the date the message actually
went out, is blank on 19.3%. Only receipt_dat is filled in
on every row, and that is the date the Commission received the paperwork
rather than the date anybody spent anything.
sup_opp is one letter, and this brief’s central
finding is a count of it. S for support,
O for oppose, written by the filer and checked by nobody.
The whole argument about whether outside money attacks or promotes is
that single character added up across 73,449 rows.
Two decisions were made before any of that was counted, and both are
written down rather than assumed. Candidate names were
uppercased so that case variants of one person would merge:
Evans, Gabe becomes EVANS, GABE. The key is a
name rather than an identifier, and it does not fully work.
One exclusion rule was applied, stated as a number:
rows above $100 million are dropped. That is a threshold and not a
diagnosis. Every row it removes is published beside this brief in
ie_outliers.csv, so a reader can disagree with the cut and
recompute from the discarded rows. Nothing else was touched: no amount
corrected, no filer contacted, no obviously false row quietly
deleted.
One number below cannot be recomputed from the tables handed over at the end. The Commission’s file runs to roughly 19 megabytes and is not among them, so 73,449 is the row count it had on the day it was read. A reader who downloads it later may find more, because filings and amendments keep arriving after a cycle closes.
Before you read on, commit to a number. 16 of those 73,449 rows sit above the cut and come out. A count that small, in a file that large, ought to leave a percentage where it was. Write down how far you think the share of money spent supporting candidates moves when they go. A tenth of a point? A point? Five? Put an actual number on the page before you turn it.
Here is the file added up exactly as it arrives.
| Quantity | Value |
|---|---|
| Filings in the 2024 independent-expenditure file | 73,449 |
| Total reported | $49.67 billion |
| Spent supporting a candidate | $46.94 billion (94.5%) |
| Spent opposing a candidate | $2.73 billion (5.5%) |
$49.67 billion, of which 94.5% supports candidates and 5.5% opposes them. Both of those numbers are wrong. One is wrong by a factor of ten. The other is backwards, and it is the dangerous one.
| Filing committee | Candidate named | Amount | Stated purpose |
|---|---|---|---|
| THE COURT OF DIVINE JUSTICE | AKHLAGHY, NADER | $9,978,412,568 | Political Contribution |
| THE COMMITTEE OF 300 | AKHLAGHY, NADER | $9,778,412,568 | Political Contribution |
| THE COMMITTEE OF 300 | AKHLAGHY, NADER | $9,000,000,000 | DEPOSIT FOR WINNING IN ELECTION |
| THE COMMITTEE OF 300 | AKHLAGHY, NADER | $7,959,594,848 | FOR WIN THIS ELECTION |
| Republican Emo Girl | BOUNNHARAT, AMANDRA | $6,347,882,325 | Senate campaign. |
| The Masonic Illuminati Eye | AKHLAGHY, NADER | $579,874,829 | Political Contribution |
| Gus Associates | WHITE, WALTER | $255,000,000 | funding for waltuh white’s campaign |
| Quantity | Value |
|---|---|
| Rows in the file | 73,449 |
| Rows above $100 million | 16 |
| Their share of all rows | 0.022% |
| Their share of all dollars | 90.4% |
16 rows, 0.02% of the file, carry 90.4% of the dollars. Read who filed them. “THE COURT OF DIVINE JUSTICE.” “THE COMMITTEE OF 300.” “The Masonic Illuminati Eye.” Nearly ten billion dollars each, almost all naming one obscure candidate, for purposes including “DEPOSIT FOR WINNING IN ELECTION”.
One of them can be read in full, because the Commission publishes the submissions as well as the summary file.
Figure 1. One junk filing, as the Federal Election Commission
received and published it. A facsimile of the record fits this
question better than any chart would, because the claim is about what a
federal agency published rather than about a quantity. Every value on
the card is read out of ie_filing_1707511.fec rather than
retyped: 418 bytes, three records, fields separated by the ASCII
file-separator character. The payee is a fictional lawyer, the treasurer
a fictional drug distributor, the candidate the protagonist of a
television series, and the amount $255,000,000. The single letter in the
support-or-oppose field, shown in blue, decides which side of every
total below the money lands on.
Read the card from the top. The filing committee, Gus Associates, is the spender: the entity that says it paid. The payee is who it says it paid, and the stated purpose is what for. The candidate line, Walter Hartwell White (H4NM02098), is who the money was about, and the office line says which seat. The single letter on the support-or-oppose line, S (support), decides whether the $255,000,000 counts as money for that candidate or against. Every row in the file has these same fields, and adding that one letter up across 73,449 of them is the whole of this brief’s arithmetic.
These are not errors. They are junk filings, sitting in the federal government’s official record of campaign spending, published exactly as submitted. That is not an oversight. An agency empowered to decide which political filings are real would hold a power over political speech that nobody would want it to have, exercised by commissioners appointed on a partisan basis.4 There is no free version of this, and the cost of the arrangement we have is a national statistic that is wrong by a factor of ten until somebody reads 16 rows.
Not every bad row is somebody lying, either.
| Filing committee | Candidate | Amount | FEC file number |
|---|---|---|---|
| Food & Water Action | HARRIS, KAMALA | $114,056,874 | 1848231 |
| Food & Water Action | HARRIS, KAMALA | $114,056,874 | 1848231 |
| Food & Water Action | HARRIS, KAMALA | $114,056,874 | 1848231 |
| Food & Water Action | HARRIS, KAMALA | $114,056,874 | 1848231 |
9 rows, all $114,056,874, all the same committee, all supporting the same candidate — and all carrying the same file number. One filing, exported 9 times, worth $1.03 billion of spending that never happened. The junk filings are people lying to the government. This is the government’s own export repeating a row. They need different fixes, and calling both of them “bad data” loses the distinction.
Now take all 16 out.
| Version | Direction | Dollars | % of that version |
|---|---|---|---|
| Raw file | supporting a candidate | $46.94 billion | 94.5% |
| Raw file | opposing a candidate | $2.73 billion | 5.5% |
| 16 rows removed | supporting a candidate | $2.02 billion | 42.4% |
| 16 rows removed | opposing a candidate | $2.73 billion | 57.6% |
The total falls from $49.67 billion to $4.75 billion, which is about what the Commission’s own running summary of independent spending, and the watchdog groups that track it, report for the cycle.5 And the headline reverses. In the raw file, 94.5% of outside money supports candidates. Once 16 rows are gone, 57.6% of it is spent attacking somebody. The supportive share does not slip by a point or two. It falls 52.1 points and crosses the halfway line on the way down.
Figure 2. Removing 16 rows out of 73,449 does not shrink the answer. It reverses it. Each bar is the share of its own version’s dollars spent attacking a candidate: 5.5% as published, 57.6% with 16 rows gone. One bar against a line at half works better here than a pair of totals, because the two versions differ tenfold in size and the point is not size. The point is which side of the line they land on.
Here is why that matters more than the ten-fold error. $49.67 billion is obviously wrong, and anyone would query it. 94.5% supportive is a perfectly plausible number. It would pass a referee, sit unremarked in a paper, and be cited. Wrongness that announces itself is the safe kind.
Two exceptions have to be told, because a finding that depends on where a threshold sits is not a finding.
| Quantity | Value |
|---|---|
| Smallest row removed | $114,056,874 |
| Largest row kept | $30,033,271 |
| Rows anywhere in the file between $50m and $100m | 0 |
Nothing sits anywhere near the cut. The largest row the rule keeps is $30,033,271 and the smallest it removes is $114,056,874, a gap of $84 million with 0 rows in it. Any threshold between those two figures removes the same 16 rows and gives the same answer, so the cut could have been set anywhere across a factor of 3.8 without changing a number here. That slack is what makes the rule defensible, and it is the thing to check rather than the roundness of the number chosen.
The second exception is sharper. Put back only the 9 duplicated rows, the export bug rather than the fantasy, and see whether the finding survives.
| Version | Supporting | Opposing |
|---|---|---|
| 16 rows removed (as published) | 42.4% | 57.6% |
| with the 9 duplicate rows restored | 52.7% | 47.3% |
It does not. Restoring one committee’s duplicated filing is enough on its own to flip the conclusion back. So the honest sentence is narrower than “most outside money is negative.” It is “most outside money is negative, and that conclusion depends on handling one export bug correctly.” Which is exactly why the 16 removed rows are published beside the total instead of being quietly dropped.
The cleaned file is not clean. Uppercasing merged
Harris, Kamala with HARRIS, KAMALA, and could
not merge TRUMP, DONALD with TRUMP, DONALD J..
2 spellings of Donald Trump and 2 of Jon Tester survive into
ie_candidates.csv, each carrying part of the money.
Cleaning is not a phase that finishes.
Nothing here is evidence of fraud, and nobody was prosecuted. The 16 rows look like what they probably are: nonsense, or somebody’s error, sitting unremarked in a system that publishes what it receives.
“Independent” is a legal claim rather than an observed property. Coordination is decided after the fact if at all, and it is not a field. The constitutional argument that this spending cannot corrupt rests on a factual premise no dataset can check.
There is no persuasion data anywhere in this. Dollars and direction are here; effects are not. The obvious next source is the platform advertising libraries, and they are closed: Meta requires identity verification and Google reports each advertisement’s spending only as a range.6 This is also one category of spending in one cycle. Electioneering communications (broadcast ads that name a candidate close to an election without urging a vote either way), party spending, and groups that never file at all are elsewhere or nowhere.
None of these is answered above, and every one can be answered from the tables the Sources section hands over.
ie_outliers.csv lists every filing the rule cut, with
spender, amount and pur. Read
them. What makes these obviously wrong, and what would a plausibly wrong
one look like?ie_columns.csv gives each column a blank
percentage. Sort by it and find the columns that are mostly empty. Which
of them would you have assumed was reliable?ie_candidates.csv has pct_against for
every candidate, with supporting and opposing
beside it. Sort it. Who was money mostly spent against rather than for,
and does office explain it?ie_committees.csv has pct_against and
amount per spender. Which committees exist almost entirely
to attack, and how much of the cycle’s money do they hold between
them?Two stretch ideas point past the spreadsheet. Take the largest row in
ie_outliers.csv, look the committee up on fec.gov, and see
what else it filed and whether anything ever happened to it. And
download the 2022 cycle’s file from the same address, apply the same
rule, and find out whether junk of this size is a feature of the
register or an accident of one year.
Data
ie_outliers.csv, so the decision can be checked rather than
trusted. The 73,449 row count is the file’s on the day it was read; the
file itself, at roughly 19 megabytes, is not handed over here.ie_filing_1707511.fec, 418 bytes, retrieved 10 August 2026
from https://docquery.fec.gov/dcdev/posted/1707511.fec. This
is the original submission behind the $255,000,000 row in
ie_outliers.csv, in the FEC’s own delimited filing format;
every value in the figure is parsed from it.Academic literature
The data itself
Every figure above is drawn from these tables. They are plain CSV, they open in a spreadsheet, and they are yours to take further.
ie_candidates.csv,
ie_columns.csv,
ie_committees.csv,
ie_facts.csv, ie_outliers.csv, ie_summary.csv
I want to rebuild a public dataset from its original source, without any starting files. Please do the following and show your work. THE SOURCE. Federal Election Commission, bulk download of independent expenditures for the 2024 cycle — money spent for or against a candidate by people the candidate does not control and may not coordinate with. One CSV, about 19 MB, twenty-three columns, no account or key: https://www.fec.gov/files/bulk-downloads/2024/independent_expenditure_2024.csv Each row is one reported expenditure. The FEC publishes what is filed; it does not check whether it is true. One filing can also be read exactly as it was submitted, at https://docquery.fec.gov/dcdev/posted/1707511.fec — the raw electronic filing behind a $255,000,000 row supporting a candidate named Walter White, its fields separated by an invisible character (ASCII 28). WHAT TO BUILD. 1. The raw file's total, split into money supporting candidates and money opposing them. It will come to about ten times what was actually spent on the 2024 election. 2. The rows above a hundred million dollars. There should be sixteen, of two kinds: fantasy filings from committees with names like "THE COURT OF DIVINE JUSTICE", and one real filing exported nine times over. List every one. 3. The totals again without those sixteen rows, and the support-versus-oppose split before and after. The split reverses — the junk does not just inflate the total, it flips which way most outside money points. CHECK YOUR WORK. The copy this book used was downloaded in August 2026. If your rebuild matches it, you should find: - 73,449 rows, totalling about $49.7 billion raw - 16 rows above $100,000,000; the largest claims $9,978,412,568 - nine of the sixteen are the same $114,056,874 filing, every one carrying file number 1848231 - raw, 94.5% of the money supports candidates; without the sixteen rows, 57.6% opposes The FEC amends this file as corrections arrive; small movements mean revision, not error.
Buckley v. Valeo, 424 U.S. 1 (1976): https://www.law.cornell.edu/supremecourt/text/424/1.↩︎
Citizens United v. Federal Election Commission, 558 U.S. 310 (2010): https://www.law.cornell.edu/supremecourt/text/08-205.↩︎
52 U.S.C. §30104(c) and (g): $1,000 or more spent in the last twenty days before an election must be reported within 24 hours, and $10,000 or more earlier in the cycle within 48 hours: https://www.law.cornell.edu/uscode/text/52/30104. The Commission’s plain-language guide: https://www.fec.gov/help-candidates-and-committees/making-independent-expenditures/.↩︎
Six commissioners, no more than three from one party, and four votes needed for the Commission to act: 52 U.S.C. §30106, https://www.law.cornell.edu/uscode/text/52/30106.↩︎
The Commission’s summary, which can be filtered by cycle: https://www.fec.gov/data/independent-expenditures/.↩︎
Google’s political advertising transparency report: https://adstransparency.google.com/political.↩︎