๐งพ 501(c) Foundation Tracker
IRS 990-PF ยท Grant Networks ยท Transparency
Overview
The 501(c) Tracker is an open-source tool that parses IRS Form 990-PF filings from the IRS bulk data archive and loads them into a graph database (Memgraph) for analysis. It surfaces who is funding whom, how foundation assets change over time, and which networks of organizations share common funders.
What It Tracks
- Private Foundation Financials โ assets, contributions, payout ratios, and expense breakdowns from 990-PF returns
- Grant Networks โ who gave to whom, how much, and for what stated purpose
- Co-funding Patterns โ which funders share recipients, revealing influence clusters
- Sector Analysis โ aggregated asset trends by NTEE code (education, health, civic, etc.)
Sample Data (2023 Example Filing)
| Tax Year | Recipient | City, State | Amount | Purpose |
|---|---|---|---|---|
| 2023 | Community Empowerment Network | Chicago, IL | $150,000 | Voter education initiative |
| 2023 | Youth Civic Alliance | Atlanta, GA | $100,000 | Civic leadership training |
| 2023 | Access to Democracy | Phoenix, AZ | $80,000 | Community outreach and research |
| Tax Year | Total Revenue | Program Services | Mgmt & General | Fundraising |
|---|---|---|---|---|
| 2023 | $2,500,000 | $1,700,000 | $300,000 | $200,000 |
Data Pipeline
- Download โ IRS 990-PF XML filings from the AWS S3 public dataset or IRS bulk download
- Parse โ Extract financials and grant schedules from each XML filing
- Enrich โ Match EINs against the IRS Business Master File (BMF) for NTEE codes and organization names
- Load โ Insert Foundation, PFReturn, and Recipient nodes + FILED/GRANT edges into Memgraph
- Visualize โ Streamlit dashboard with bar charts, line charts, and a pyvis co-funding network graph
Access the Full Dashboard
The interactive dashboard requires a running Memgraph instance with IRS data loaded. To run it locally:
# 1. Start Memgraph (Docker)
docker run -p 7687:7687 -p 7690:7690 memgraph/memgraph
# 2. Install dependencies
pip install streamlit pandas gqlalchemy pyvis
# 3. Run the ETL pipeline
python src/cli.py --xml-dir samples/
# 4. Launch the dashboard
streamlit run app.py
Full source code and documentation: github.com/civicresilience/501c-tracker