Spaces:
Running on CPU Upgrade
FEC Campaign Finance Integration - Implementation Summary
β What Was Added
1. Pipeline Module
File: pipeline/create_campaigns_gold_tables.py
Creates 4 campaign finance gold tables per state:
campaigns_candidates.parquet- Federal candidates (House, Senate, President)campaigns_committees.parquet- PACs and campaign committeescampaigns_contributions.parquet- Individual contributions $200+campaigns_nonprofit_donors.parquet- Nonprofit leadership political giving analysis
Key Features:
- State-specific data extraction
- Links to nonprofits via employer matching
- Links to nonprofit officers via name matching
- Configurable contribution limits and cycle years
2. Example Demo Script
File: examples/demo_fec_integration.py
Interactive demonstration of FEC API capabilities:
- Search for candidates in a state
- Find contributions from specific employers
- Track nonprofit leadership donations
- Create gold tables for integration
Usage:
# Basic demo
python examples/demo_fec_integration.py --state MA
# Search specific employer
python examples/demo_fec_integration.py --state MA --employer "Community Health"
# Create gold tables
python examples/demo_fec_integration.py --state MA --create-gold-tables
3. Comprehensive Documentation
File: website/docs/integrations/fec-campaign-finance.md
Complete integration guide including:
- API access setup (get free key from api.data.gov)
- Gold table schemas
- Use case examples
- Data model integration
- Advanced usage patterns
- Best practices
Complements existing file: website/docs/integrations/fec-political-contributions.md
π Integration with Existing Data Model
Data Linkages
The FEC integration connects to existing gold tables:
campaigns_contributions.parquet
βββΊ contributor_employer ββββββββΊ nonprofits_organizations.organization_name
βββΊ contributor_name ββββββββΊ contacts_nonprofit_officers.officer_name
campaigns_nonprofit_donors.parquet (Analysis Table)
βββΊ ein ββββββββΊ nonprofits_organizations.ein
βββΊ organization_name ββββββββΊ nonprofits_organizations.organization_name
βββΊ contributor_name ββββββββΊ contacts_nonprofit_officers.officer_name
campaigns_candidates.parquet
βββΊ state ββββββββΊ State-partitioned data structure
campaigns_committees.parquet
βββΊ state ββββββββΊ State-partitioned data structure
Use Cases Enabled
Track Political Influence on Grant Awards
# Load data contributions = pd.read_parquet('data/gold/states/MA/campaigns_contributions.parquet') grants = pd.read_parquet('data/gold/states/MA/grants_revenue_sources.parquet') # Analyze correlation between political giving and grant receiptIdentify Politically Active Nonprofit Leaders
# Load nonprofit donor analysis donors = pd.read_parquet('data/gold/states/MA/campaigns_nonprofit_donors.parquet') # See which nonprofit officers donate politically print(donors.groupby('organization_name')['contribution_amount'].sum())Map Donor Networks in Healthcare Policy
# Find health sector political contributions health_contribs = contributions[ contributions['contributor_employer'].str.contains('Health', case=False, na=False) ]
π Directory Structure
data/gold/states/{STATE}/
βββ campaigns_candidates.parquet β NEW
βββ campaigns_committees.parquet β NEW
βββ campaigns_contributions.parquet β NEW
βββ campaigns_nonprofit_donors.parquet β NEW (Analysis)
βββ nonprofits_organizations.parquet (Links via employer)
βββ contacts_nonprofit_officers.parquet (Links via name)
βββ grants_revenue_sources.parquet (Cross-reference)
π Quick Start
1. Get FEC API Key
Visit: https://api.data.gov/signup/
- Free tier: 1,000 requests/hour
- Instant activation
2. Set Environment Variable
echo 'FEC_API_KEY="your_key_here"' >> .env
3. Create Gold Tables
# Activate environment
source .venv/bin/activate
# Create campaign finance tables for Massachusetts
python pipeline/create_campaigns_gold_tables.py \
--state MA \
--cycle 2024 \
--max-contributions 10000
4. Analyze Data
import pandas as pd
# Load nonprofit donor analysis
donors = pd.read_parquet('data/gold/states/MA/campaigns_nonprofit_donors.parquet')
# Top nonprofit organizations by political giving
print(donors.groupby('organization_name').agg({
'contribution_amount': 'sum',
'contributor_name': 'count'
}).sort_values('contribution_amount', ascending=False).head(10))
π API Reference
Main Classes
CampaignsGoldTableCreator - Pipeline for creating gold tables
create_campaigns_candidates(cycle)- Extract candidate datacreate_campaigns_committees(cycle)- Extract committee datacreate_campaigns_contributions(min_amount, max_records, cycle)- Extract contributionscreate_campaigns_nonprofit_donors(contributions_df)- Analyze nonprofit leadership donationscreate_all_campaigns_tables(cycle, min_contribution_amount, max_contributions)- Run full pipeline
OpenFECAPI (from discovery/fec_integration.py) - API client
search_individual_contributions(...)- Search contributionssearch_candidates(...)- Find candidatessearch_committees(...)- Find PACs/committees
π Related Files
Existing Files (Enhanced)
discovery/fec_integration.py- FEC API client (already existed)website/docs/integrations/fec-political-contributions.md- General integration guide (already existed)
New Files (Created)
pipeline/create_campaigns_gold_tables.py- NEW - Gold table pipelineexamples/demo_fec_integration.py- NEW - Demo scriptwebsite/docs/integrations/fec-campaign-finance.md- NEW - Technical guide
π― Future Enhancements
Potential additions to consider:
Add to main orchestration script
- Update
scripts/create_all_gold_tables.pyto include campaigns pipeline
- Update
Dashboard integration
- Add FEC visualizations to React app
- Display political connections on nonprofit profiles
- Show donor network graphs
Automated analysis
- Scheduled updates (campaigns data updated daily by FEC)
- Alerts for new major contributions
- Influence score calculations
Extended matching
- Fuzzy name matching for officers
- Organization name normalization
- Cross-reference with local officials data
π Documentation Links
- Technical Guide: FEC Campaign Finance
- General Guide: FEC Political Contributions
- Demo Script: examples/demo_fec_integration.py
- API Client: discovery/fec_integration.py
- Pipeline Module: pipeline/create_campaigns_gold_tables.py
β Checklist for Integration
- Create pipeline module for gold table generation
- Add example demo script
- Write comprehensive documentation
- Add to main orchestration script (optional)
- Create React dashboard components (optional)
- Set up automated updates (optional)
Implementation Date: April 28, 2026 Author: GitHub Copilot License: MIT (consistent with project)