·4 min read
Follow the money: FundTrace maps the nonprofit sector as one graph
IRS 990 filings, EU and UK registries — resolved into a single Neo4j entity graph where every fact cites its source document. A tour of FundTrace, and why your data is probably a graph too.
Ask a spreadsheet how much a nonprofit raised last year and it answers instantly. Ask where that money came from, where it went next, and how the organization at the end of the chain connects back to the one at the start — and the spreadsheet goes quiet. Those are graph questions, and most interesting questions about money are graph questions.
So we built FundTrace, live at 990.fixit.works: type any NGO and see who funds it, who it funds, and which financial patterns deserve a closer look — every fact one click from its primary source document.
Try it right here
One organization, five databases
The raw material is public: IRS 990 e-file XML, ProPublica's Nonprofit Explorer, USASpending.gov, the EU's Financial Transparency System, the UK Charity Commission register. The problem is that none of them agree on what an organization is. The same real-world charity shows up as an EIN in a 990 filing, a charity number in the UK register, and a free-text beneficiary line in an EU grant — three spellings, three schemas, zero shared keys.
Entity resolution — deciding that those records are the same real-world thing, and proving it — is the unglamorous heart of the project. FundTrace's first tracked case bridges all of it: the La Strada International network, resolved across EU grants, the UK register and its US 990 filers, seeded from The Freedom Fund in Brooklyn. One organization, one node, every registry it appears in hanging off it.
It's also half of the data work businesses actually need. "Is this customer in the CRM the same one in the billing system?" is the same problem wearing a different shirt.
Warehouse, graph, provenance
Three layers carry the design:
- Warehouse. Raw filings land first and stay raw — the system never edits its evidence.
- Graph. Organizations, people, filings and grants become nodes and edges in Neo4j. "Who funds whom" stops being a twelve-way join and becomes a path you can walk — ego networks around any org, A→B path finding between any two.
- Provenance. Every fact carries a locator into the document it came from. Money in, money out, officers and compensation — each one is a click away from the filing that says so.
Org profiles are live today; the interactive graph explorer, watchlists with connection alerts, and Sankey flow views are staged next on the public roadmap. The whole engine is deliberately neutral: indicators describe patterns and show their sources — they never draw conclusions. And it's open source, Apache-2.0, so you can read exactly how it works.
Your data is a graph too
Nobody hires us to map the nonprofit sector. But swap the nouns and this is ordinary business data:
- Customers across systems — the CRM, the billing platform and the support desk each hold a copy of the same person. Entity resolution turns three half-truths into one record.
- Vendors, payments and approvals — "how is this account connected to that chargeback" is path finding, not a report.
- Anything with a network in it — referral chains, supply chains, affiliate structures, fraud rings. If drawing it on a whiteboard needs circles and arrows, it's a graph.
When your questions sound like who's connected to whom, through what — a graph database answers in milliseconds what a relational report can't answer at all.
Explore it
990.fixit.works is live. Search a nonprofit you know, open its profile, and click any number — you'll land on the filing it came from. That click is the whole philosophy.