Omnigraph
Graph engine for context assembly. Object-storage native. Agents work with graph data the way engineers work with code: branched, typed, reviewed, merged, audited, and governed.
Free, sourced spending breakdowns of 25,343 US charities from their own Form 990 filings: program share, executive pay, revenue mix and trends. No ratings.
DataPython · HTMLGitHub @theguysaccountOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Where charities' money goes: sourced Form 990 spending breakdowns of 25,000+ US charities. Program share, executive pay, revenue mix, trends. No ratings. Machine-run, CC0.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Live: https://theguysaccount.github.io/charity-impact-media/ · Data (CC0): latest release · Screens: desktop and phone
Sourced spending breakdowns of every US 501(c)(3) public charity with $10 million or more in revenue (about 25,000), built from each charity's own IRS Form 990 filings and refreshed as new filings post:
Every figure shows its filing year and links to the filing it came from. Every page has a public correction link and a right-of-reply for the charity. There are no ratings, ads, accounts or tracking cookies.
| What | Where | When |
|---|---|---|
| Fetch new filings, rebuild, test, guard, publish a data release | .github/workflows/refresh.yml | weekly; rebuilds only when an index, the BMF or the data code changed |
| Build the site from the latest release and deploy to GitHub Pages; IndexNow | .github/workflows/deploy.yml | after each refresh, on site changes, when new reply issues appear |
| Live site check, reply sync; weekly live source self-test | .github/workflows/health.yml | daily; self-test Sundays |
| Tests | .github/workflows/test.yml | every push |
Each job fails safe: nothing is published unless every step passes, and the live site keeps the last good build. Scheduled workflows keep themselves enabled (scripts/keepalive.sh). Details, alerting and the optional keys (custom domain, support link, analytics, Search Console): OPERATIONS.md.
pipeline/ Python 3.9+, standard library only (Pillow optional, for share cards)
sources.py fingerprint the public inputs, download them, guard a rebuild
select_filings.py covered charities (IRS BMF + data-lake indexes) and every Form 990 they filed since 2019
fetch_filings.py fetch + parse into the cache: data lake over S3, IRS-only filings by HTTP range request
irszip.py, inflate64.py read single members of the IRS monthly zips (incl. Deflate64) without downloading them
parse990.py Form 990 XML -> compact record; never reads personal names
build_data.py pick each year's return (amended wins), compute measures, medians, ranks
render.py, pages.py HTML templates (charity pages; home, causes, states, A-Z, guides, method, corrections)
build_site.py write dist/: pages, data.json, search index, sitemap, feed, CSV, IndexNow lists
og_cards.py 1200x630 share cards ("Of every $100 spent")
crosslinks.py WHOFUNDS cross-links; replies.py: right-of-reply and correction issues by EIN
indexnow.py, healthcheck.py
content/guides/ the guide backlog, with live-data placeholders
site/static/ app.css, app.js (search, share, compare, embed, chart tooltips, opt-in analytics), favicon
tests/ unit, privacy, content-rule and build tests; test_live.py checks the live sources
Inputs are public and anonymous; no keys.
python3 pipeline/sources.py check && python3 pipeline/sources.py download # indexes + BMF, ~2.5 GB
python3 pipeline/select_filings.py # ~25,000 charities, ~150,000 filings
python3 pipeline/fetch_filings.py --workers 48 # ~30 min cold, resumable
python3 pipeline/build_data.py
CIM_BASE_URL=http://localhost:8765/charity-impact-media python3 pipeline/build_site.py
mkdir -p /tmp/serve && ln -sfn "$PWD/dist" /tmp/serve/charity-impact-media && python3 -m http.server 8765 --directory /tmp/serve
python3 -m unittest discover -s tests -v # parser, privacy, measures, Deflate64, guard, full site build + content rules
CIM_LIVE=1 python3 -m unittest tests.test_live -v # parse the newest filing from each live source
node scripts/screens.mjs <site url> # screenshots at 1280px and a real 390px mobile viewport -> docs/screens/
IRS Form 990 e-file data from the GivingTuesday 990 Data Lake and the IRS Form 990 series downloads; the IRS Exempt Organizations Business Master File. Filings are public under 26 U.S.C. § 6104. Filing pages link to ProPublica Nonprofit Explorer.
CC0 1.0 for data and code. See LICENSE.