BACK TO INSIGHTS
METHODOLOGY2026.04.087 MIN READ

How we read FEC Q2 filings in 90 minutes.

A walk-through of the DFX pipeline for ingesting, resolving, and ranking the quarterly wave of federal campaign finance disclosures the day they land.

Every quarter, the FEC publishes a wave of filings across federal candidates, committees, PACs, and conduits. The consensus response from campaign and donor intelligence vendors is predictable: wait two weeks for the batch imports to settle, then run a monthly refresh that surfaces headline numbers.

Two weeks is a lifetime. By the time a vendor has repopulated its CRM with refreshed capacity scores, the hot donors have been called, the fence-sitters have committed, and the opposition has already drafted its press hits off the raw receipts data.

DFX runs on a different timing. The pipeline below describes exactly what happens between 4:00pm Eastern on filing day (when the bulk drops go live on the FEC's public endpoints) and 5:30pm, when our clients receive a resolved, ranked, briefed feed of what actually changed.

INGEST (0 to 10 minutes). We pull the new Forms 3, 3X, and 3P directly from the FEC bulk data endpoint, stream each row into a canonical filings table, and fingerprint each record against the previous cycle so we can isolate true deltas. No scraping, no waiting for third-party aggregators. The FEC serves these endpoints fast and they are, by a large margin, the most neglected API in political tech.

RESOLVE (10 to 40 minutes). The FEC data is donor-hostile by design. Names are abbreviated, addresses inconsistent, employer and occupation fields are free-text. We run each new contributor record through our entity resolver, which cross-references against FEC history, SEC filings, state-level PAC records, IRS Form 990 staff lists, and public real estate records. The output is a canonical DFX person ID and, critically, the full network context: who this person has given to before, what role they played in prior campaigns, which LP/GP networks they sit inside.

SCORE (40 to 70 minutes). Once a filing is resolved, we rerun capacity models on every contributor whose profile has materially shifted. The signal that matters is not absolute capacity. It is capacity delta. A donor who gave $3,300 to a Senate primary this cycle and $6,600 to a different Senate primary last cycle is a different person than the raw receipt implies, and the delta is what drives the call list.

BRIEF (70 to 90 minutes). The last step is the one most vendors never ship. We push the ranked output into a structured briefing format, narrated for a human reader. Who changed. Why they changed. What to do about it. The finance director does not need a dashboard. They need the three-paragraph version that tells them which four names to call before the Friday end-of-week push.

The infrastructure that makes this possible is boring. Fast SQL, a tight entity resolver, a cached capacity model, and LLM-generated narration running over a known schema. The insight is that the speed advantage compounds. Every hour you are ahead of the vendor-CRM cycle is an hour your clients are operating on the current state of the race while everyone else is working off last month's data.