Federal law requires that campaigns collect and disclose the occupation and employer of every individual donor who gives more than $200 in a cycle. The requirement sounds straightforward. The reality, as anyone who has queried the FEC's individual contribution file knows, is considerably messier — and the mess is itself informative.
This post walks through what LobbyVault does to normalize donor occupations, why the unprocessed data is so noisy, and what the cleaned data reveals.
What the Field Looks Like Raw
The FEC's fec_individual_contribution table has two fields: occupation and employer. Both are free-text, filled in by the campaign's compliance staff based on what the donor wrote on the contribution form (or the campaign's best guess from the check).
A typical sample from a single cycle will include entries like:
SOFTWARE ENGINEERSoftware EngineerSW ENGINEERENGINEER, SOFTWAREENGINEERENG.TECHRETIRED(for a person who used to be a software engineer)N/ANOT EMPLOYED- Blank
For the same donor, across different contributions, the occupation may vary. FEC staff make no attempt to normalize. The aggregate bulk file is reprinted as-filed.
The Problem of Retired Donors
"Retired" is the single most common occupation in the FEC file in most cycles. That is interesting — high-propensity donors skew older — but it also means simple groupings like "top 10 occupations" will be dominated by retirees. For most analyses, you want to break retirees out separately.
A second issue: "Homemaker" and "Not Employed" occupations are often paired with a high-dollar contribution where the employer field names a firm. In almost all such cases, the donor is the spouse of someone with a direct association with the employer, and the contribution is effectively a couple's bundled giving. If you're tracking industry concentration, the employer field is the useful one, not the occupation.
Our Normalization
LobbyVault runs a rule-based normalizer over the raw occupation field that:
- Uppercases and strips punctuation.
- Collapses obvious synonyms.
SW ENGINEER,SOFTWARE ENG,SOFTWARE ENGINEER, andPROGRAMMERall becomeSOFTWARE ENGINEER. - Buckets professional categories.
PHYSICIAN,DOCTOR,MD,SURGEON→PHYSICIAN.ATTORNEY,LAWYER,LEGAL COUNSEL→ATTORNEY. - Flags sentinel values.
RETIRED,HOMEMAKER,NOT EMPLOYED,STUDENTare kept distinct and surfaced separately on occupation index pages. - Leaves long-tail entries alone. Anything below a frequency threshold stays as raw text in a catch-all bucket.
The normalized table is what powers /occupations and the occupation filters on candidate pages. The raw text is preserved in case you want to audit a specific donation.
What the Cleaned Data Shows
With normalized occupations, three patterns become visible:
- Attorneys and physicians punch above their weight. In every recent cycle, attorneys and physicians contribute a disproportionate share of itemized individual contributions relative to their share of the labor force. This has been a consistent finding in academic campaign-finance research for decades.
- Industry-specific cycles are real. The share of contributions from specific occupations spikes in cycles where related legislation is active. Tech industry contributions rise before major antitrust or privacy votes; finance contributions rise before major banking regulation.
- Retired donors dominate small-dollar landings. Donors listed as "Retired" are a majority of repeat small-dollar contributors to national campaigns. This matters for predicting the sustainability of a grassroots fundraising operation.
Caveats When Using Occupation Data
- Reporting threshold. Only contributions over $200 aggregated per donor per cycle have to be itemized. Below that, occupation isn't collected. If a candidate's small-dollar share is huge, the occupation data you can see represents only the top slice.
- Employer matters more than occupation for industry analysis. If you want to know "how much of Candidate X's money came from finance," aggregate on normalized employer, not occupation. Occupation will undercount because "Senior Vice President" doesn't tell you what industry.
- Self-reporting bias. Donors choose how to describe themselves. "Consultant" is a common dodge that obscures the real employer; "Investor" is another.
A Worked Example
To pull a candidate's top donor occupations:
SELECT normalized_occupation, COUNT(*) AS donations, SUM(transaction_amt) AS total
FROM fec_individual_contribution
WHERE cand_id = 'H8NY00000'
AND transaction_amt > 0
AND normalized_occupation NOT IN ('RETIRED','HOMEMAKER','NOT EMPLOYED')
GROUP BY normalized_occupation
ORDER BY total DESC
LIMIT 20;
That query gives you the occupational profile of the candidate's working-age itemized donor base. LobbyVault's candidate detail pages run a version of this query when data is available.
Further Reading
- FEC guidance on best-efforts reporting of donor occupations
- Bonica, "Mapping the Ideological Marketplace" — canonical academic work using FEC donor data
- OpenSecrets industry codes — an alternative normalization scheme based on employer field
Raw FEC occupation data is maddening. The cleaned version is one of the most useful tools we have for understanding the economic fingerprint of American political money.