{"tiers":{"primary":[{"key":"irs_bmf","name":"IRS Exempt Organizations Business Master File (EO BMF)","tier":"primary","provider":"Internal Revenue Service","url":"https://www.irs.gov/charities-non-profits/exempt-organizations-business-master-file-extract-eo-bmf","cadence":"monthly","yields":"The universe of registered exempt orgs (~1.97M): EIN, name, NTEE, location, subsection, ruling date, foundation code, BMF assets/income/revenue.","populates":["organizations"],"source_tags":["irs_bmf"],"ingest":"ingest/bmf.py"},{"key":"irs_determination_letters","name":"IRS Determination Letters","tier":"primary","provider":"Internal Revenue Service","url":"https://www.irs.gov/charities-non-profits/tax-exempt-organization-search-bulk-data-downloads","cadence":"monthly","yields":"Baseline rows (EIN, name, city, state, recognition date) for orgs newly recognized by the IRS that haven't yet reached the BMF/Pub78/990-N bulk extracts, so their hub exists ahead of their first 990.","populates":["organizations"],"source_tags":["irs_determination_letters"],"ingest":"ingest/determination_letters.py"},{"key":"irs_990_efile","name":"IRS Form 990 / 990-EZ / 990-PF e-file XML","tier":"primary","provider":"IRS (annual TEOS archives) + GivingTuesday data lake (per-filing mirror)","url":"https://www.irs.gov/charities-non-profits/form-990-series-downloads","cadence":"annual bulk archives + rolling per-filing","yields":"The complete e-filed return — every element of the core form and all appended schedules (A public support, B contributors, D donor-advised funds, G fundraisers, L insider transactions, R related orgs, plus 990-PF Part XV / Schedule I grants): financials, officers, programs, contractors, governance, narratives.","populates":["financial_amounts","filing_governance","filing_public_support","filing_daf","filings","officers","donors","programs","contractors","foundation_grants","related_orgs","insider_transactions","fundraisers","filing_xml","organizations"],"source_tags":["irs_990_xml","irs_990pf_xml","irs_990_schedule_a","irs_990_sched_d"],"ingest":"ingest/bulk_xml.py, ingest/efile_xml.py, ingest/foundation_pf.py"},{"key":"irs_efile_index","name":"IRS e-file annual index","tier":"primary","provider":"Internal Revenue Service","url":"https://apps.irs.gov/pub/epostcard/990/xml/","cadence":"annual (per processing year)","yields":"The EIN → OBJECT_ID filing locator that maps an org to its e-filed returns, so a filing fetch is an O(1) probe instead of a bulk scan.","populates":["filing_index"],"source_tags":[],"ingest":"ingest/filing_index.py"},{"key":"irs_revocation","name":"IRS Automatic Revocation of Exemption List","tier":"primary","provider":"Internal Revenue Service","url":"https://www.irs.gov/charities-non-profits/automatic-revocation-of-exemption-list","cadence":"monthly","yields":"Auto-revocation status and date (exemption lost for non-filing) — a hard compliance signal.","populates":["compliance_events"],"source_tags":["irs_revocation"],"ingest":"ingest/revocation.py"},{"key":"fac_single_audit","name":"Federal Audit Clearinghouse (FAC) — Single Audits","tier":"primary","provider":"U.S. GSA / Federal Audit Clearinghouse","url":"https://www.fac.gov/api/","cadence":"rolling","yields":"Single-audit findings for orgs above the federal-expenditure threshold: going-concern doubt, material weaknesses, questioned costs.","populates":["audit_findings"],"source_tags":[],"ingest":"ingest/fac.py"},{"key":"state_registries","name":"State charity registries (direct from each state)","tier":"primary","provider":"State AG / Secretary-of-State charity regulators (pulled directly)","url":"https://data.colorado.gov/resource/37wu-kn3g","cadence":"varies by state (Socrata datasets refresh daily–weekly)","yields":"State charitable-registration status and lapses, pulled DIRECTLY from each state's own open-data registry (no aggregator) into state_registrations, with state_lapse events derived for orgs not in good standing. Live: Colorado. Portal-only states (CA, NY) are backlog pending a direct scraper.","populates":["state_registrations","compliance_events"],"source_tags":["CO:socrata"],"ingest":"ingest/state/ (socrata.py + per-state configs; scripts/ingest_state.py)"}],"aggregated":[{"key":"charity_ratings","name":"Charity ratings & seals (Charity Navigator, Candid, BBB)","tier":"aggregated","provider":"Charity Navigator, Candid/GuideStar, BBB Wise Giving Alliance","url":"https://www.charitynavigator.org/","cadence":"rolling","yields":"Third-party ratings, transparency seals, and donor advisories — shown ONLY as badges (their assessment = X). They never feed a core field; if a provider drops us we lose the badge, not data.","populates":["external_ratings"],"source_tags":[],"ingest":"ingest/ratings.py"}],"signal":[{"key":"websites","name":"Organization websites","tier":"signal","provider":"Each nonprofit's own homepage","url":"","cadence":"on-demand harvest","yields":"Homepage text for the semantic-similarity layer (embeddings) and program-language enrichment.","populates":["source_documents","evidence_chunks"],"source_tags":[],"ingest":"ingest/website.py"},{"key":"social_discovery","name":"Reach & discovery signals (YouTube, Brave Search, GDELT)","tier":"signal","provider":"YouTube Data API, Brave Search, GDELT","url":"https://api.gdeltproject.org/","cadence":"on-demand","yields":"Public reach/engagement and news-presence signals used for organizational-vigor scoring — diagnostic, never authoritative.","populates":["social_signals"],"source_tags":[],"ingest":"social/connectors.py"}]},"coverage":{"organizations":2076172,"filings":0,"financial_amounts":0,"foundation_grants":15316220,"officers":0,"contractors":654497,"insider_transactions":112721,"fundraisers":51562,"returns_retained":238845,"last_bulk_ingest":"2026-09-09 16:53:01","zips_ingested":52}}