Case Study 36.2: ODA's Campaign Finance Tracking Dashboard — Design, Data, and Decisions

Overview

This case study examines the design of OpenDemocracy Analytics' campaign finance tracking dashboard, focusing on the technical and methodological decisions that Adaeze Nwosu's team made in building a tool that tries to provide genuinely useful campaign finance intelligence for journalists, advocacy organizations, and the public. The case illustrates the gap between "data is available" and "useful analysis is possible."

The Problem with Existing Tools

When Adaeze Nwosu joined ODA, the standard campaign finance research workflow for journalists and advocates involved: 1. Navigate to OpenSecrets or FEC.gov 2. Search for a specific candidate or committee 3. Retrieve summary data on total fundraising, top donors, industry breakdowns 4. Report the numbers in an article or memo

This workflow produces accurate information but misses several analytically important dimensions:

Static snapshots vs. dynamic tracking: Standard tools provide the current state of campaign finance at a given moment. Analysts who want to track changes over time — who just gave, which industries ramped up giving when, whether contributions shifted after a key vote or policy announcement — have to manually build comparison tables.

Candidate-centric vs. race-centric: FEC data is organized around committees, not races. A competitive Senate race involves not just two candidate committees but multiple aligned Super PACs, party committee spending, and potentially significant dark money activity. Standard tools require the analyst to aggregate across multiple entities manually.

Disclosure gaps: Standard tools stop at the FEC disclosure boundary. The 501(c)(4) layer — where a substantial fraction of political money now lives — is invisible in FEC-only analysis. Any race analysis that doesn't incorporate at least an attempt to address dark money is presenting an incomplete picture.

Context-free numbers: "$5 million raised" is meaningless without context. Is that a lot for this type of race? Is it more or less than the opponent? Is it more small-dollar or large-dollar? Is it early money (harder to raise, suggests strong candidate quality) or late money (often indicates reactive emergency fundraising)?

ODA's Design Principles

Nwosu's team designed the ODA campaign finance dashboard around four principles:

1. Race-centric, not committee-centric: The unit of analysis is the competitive race, not the individual committee. All relevant spending entities — both candidates' committees, aligned Super PACs, party committee spending, and estimated dark money activity — are aggregated to the race level.

2. Dynamic tracking, not static snapshots: The dashboard ingests FEC filings as they're posted (FEC posts filings within 24-48 hours) and generates alerts when significant changes occur: large contributions above threshold amounts, new Super PAC registrations related to a tracked race, significant fundraising pace changes.

3. Explicit transparency about what's missing: Every race summary includes an explicit "opacity indicator" — an estimate of how much political spending in the race is not captured in FEC disclosure. For races with significant identified dark money activity, the indicator is flagged prominently. The goal is to prevent users from treating the disclosed portion as the whole.

4. Comparative context: Every metric is presented in comparative context. "$5 million raised" is displayed alongside: average for Senate races in this state in the last cycle, average for competitive Senate races nationally, and the opponent's total. Context transforms a number into information.

The Data Engineering Behind the Dashboard

Building the dashboard required data engineering decisions with analytical implications:

FEC filing ingestion: ODA uses the FEC's bulk data files (updated nightly) and the electronic filing feed (near-real-time for large committees). Automated ingestion parses the structured data into ODA's database, matching transactions to races and flagging data quality issues (common in self-reported FEC filings: typos in employer names, inconsistent address formats, duplicates).

Super PAC tracking: For each tracked race, ODA maintains a manually curated list of aligned Super PACs based on: FEC registration information (which candidate is named as related), investigative journalism reports, and organizational officer cross-referencing. This list requires regular human review — new Super PACs are created throughout election cycles, and alignment can shift.

Dark money estimation: The dashboard's dark money layer uses a combination of: - 990 filings from known dark money organizations (scraped from ProPublica Nonprofit Explorer quarterly) - FCC broadcast political advertising filings (which capture TV/radio ad spending by all entities, including 501(c)(4)s running issue ads) - Digital advertising transparency reports from Google and Meta - Investigative journalism reports

These sources are combined into a "dark money activity indicator" that ranges from "minimal/no identified dark money activity" to "significant dark money activity identified — substantial spending may not be captured in FEC data." This is explicitly an indicator, not a precise measure.

Out-of-state analysis: FEC donor records include zip code information. ODA geocodes all itemized contributions to congressional district and state, enabling the in-state/out-of-state breakdown and geographic distribution analysis. The geocoding process catches approximately 94 percent of records; the remaining 6 percent (incomplete addresses, PO boxes, foreign addresses) are flagged as ungeocoded.

A Walk Through the Garza-Whitfield Dashboard

The ODA dashboard for the Garza-Whitfield race provides the following analytical view:

Fundraising Totals (as of most recent filing period)

Garza Whitfield
Total Raised $24.1M | $21.8M
Total Spent $18.7M | $16.3M
Cash on Hand $5.4M | $5.5M
Unitemized % 34% 21%
Out-of-State Itemized % 42% 51%

Outside Spending in Race (total, all sources)

Source Pro-Garza Pro-Whitfield
Aligned Super PACs $7.2M | $6.1M
Party Committees $3.8M | $4.2M
Identified Dark Money (FCC + 990) $0.8–1.5M | $1.2–2.1M
Estimated Total Outside $11.8–12.5M | $11.5–12.4M

Opacity Indicator: HIGH. Estimated 15–25% of total political spending in this race may not be captured in available disclosure data.

Industry Breakdown (Garza Top 5 PAC Sources)

  1. Environmental organizations: $890K
  2. Healthcare: $720K
  3. Legal/professional services PACs: $610K
  4. Technology/innovation PACs: $580K
  5. Labor unions: $520K

Industry Breakdown (Whitfield Top 5 PAC Sources)

  1. Energy/natural resources: $1.1M
  2. Finance, insurance, real estate: $980K
  3. Defense contractors: $340K
  4. Agriculture: $310K
  5. Republican Party affiliated PACs: $290K

Donor Network Flag

The dashboard flags three "anomalous patterns": 1. Late-cycle large contribution: A $400,000 contribution to a Whitfield-aligned Super PAC from an out-of-state LLC registered to a commercial real estate developer filed 15 days before the election 2. 990 cross-reference hit: A 501(c)(4) that made a $750,000 grant to a Whitfield-aligned Super PAC has officers who also appear in lobbying disclosure records for the oil and gas industry 3. Fundraising pace anomaly: Garza's July fundraising pace was 2.8x her June pace — likely the result of a national fundraising email blast, but worth investigating whether there was a triggering political event

The Methodological Humility Principle

The most important design decision in the ODA dashboard is not technical — it's epistemological. Nwosu insists that the dashboard communicate what it doesn't know as prominently as what it does.

"Campaign finance data tells you the disclosed part of the story," Nwosu explained at an ODA all-hands meeting during the election season. "Our job is to be honest about what that means. We tell users: here's what we can see, here's what we can't see, and here's our best estimate of how much you're missing. If they report that Whitfield has raised X million without flagging that there's likely another Y million in undisclosed spending that we can't fully see, they've helped create a false impression."

This principle — explicit uncertainty quantification, prominent flagging of data gaps — is not standard in political journalism or political analytics. Most coverage reports disclosed fundraising totals as if they were complete. ODA's explicit opacity indicators are a direct response to the "measurement shapes reality" problem: if analysts present incomplete data as complete, they construct a false picture of political reality that decision-makers then act on.

Discussion Questions

  1. ODA's dashboard includes an "opacity indicator" that estimates how much political spending is not captured in disclosed data. A critic might argue that publishing estimates of undisclosed spending — when the estimate is necessarily uncertain — is worse than acknowledging the limitation without estimating it. Evaluate this critique.

  2. The dashboard's "anomalous patterns" flag — which identifies unusual financial activities that may warrant further investigation — could theoretically be used to generate negative press coverage without sufficient evidentiary basis. How should ODA balance the value of surfacing anomalies for investigation against the risk of defamatory inference?

  3. ODA's design philosophy of race-centric (rather than committee-centric) analysis changes the analytical frame significantly. What are the implications of this design choice for how users understand which candidates are "better funded"? Does aggregating outside spending with candidate committees create an accurate picture or a misleading one?