Notes on data, nonprofits & the tools we build to make sense of them.
Field reports from the intersection of public-interest data, nonprofit operations, automation, and the command line — written up with the math, the code, and the diagrams left in.
Months of cash, at scale: the runway of 202,827 charities, computed
The last post showed how to compute a nonprofit's months of operating reserve from four lines of the Form 990. This one runs that arithmetic on every Form 990 e-filed in a year — 345,365 filings from the IRS's public extract — and finds a sector where a third of charities sit at or below three months, one in seven is below zero, and the biggest organizations run the thinnest.

Latest
Below zero: which charities are really running on empty
The last post found that one in seven U.S. public charities sits at or below zero months of operating reserve — in expendable terms, underwater. That number sounds like a mass-casualty warning. It isn't. Here is what "below zero" is actually made of: mostly charities whose money is locked in their own buildings, not charities out of cash. Splitting 28,651 organizations three ways finds the smaller, sharper number a donor should really check.
Months of cash, at scale: the runway of 202,827 charities, computed
The last post showed how to compute a nonprofit's months of operating reserve from four lines of the Form 990. This one runs that arithmetic on every Form 990 e-filed in a year — 345,365 filings from the IRS's public extract — and finds a sector where a third of charities sit at or below three months, one in seven is below zero, and the biggest organizations run the thinnest.
Every save is a pull request: a visual, PR-gated CMS for an Astro site
site.noprofits.org grew a content management system — a node-map editor where every routed page is a clickable node, and every save becomes a pull request. How the splice-back engine works, why a curly brace is the scariest character in an Astro template, how a CI job proves a diff is pure text, and what this design gets wrong.
The overhead myth: the first number donors check is the worst one
The program-expense ratio is the number donors, watchdogs, and grantmakers reach for first — and the people who built the rating recanted it in 2013. A look at why the sector's favorite efficiency metric is gameable, corrosive, and best distrusted.
How many months of cash? Computing a nonprofit's real reserve from the 990
The resilience number every donor should check — months of operating reserve — isn't printed anywhere on the Form 990, but four lines of the balance sheet compute it. How to do the arithmetic honestly, what the sector's distribution actually looks like, and why half of American nonprofits are three bad months from a crisis.
Stop renting what you can own: a nonprofit back office on free tools
Small nonprofits quietly bleed donor and grant money on SaaS subscriptions they don't need, while free tiers from Vercel, Supabase, Firebase, and Google Apps Script would do the same job and leave them owning the infrastructure. A field guide to building your own digital footprint for near zero.
How to actually vet a charity before you donate
A donor's guide to the four numbers on a Form 990 that actually tell you whether a charity is run well — where to find each one, what a healthy range looks like, and the trap hiding in every one of them.
501(c)(3) vs (c)(4) vs (c)(6): what the letter after the number means
A plain-language guide to the three tax-exempt types you actually run into — the charity, the advocacy group, and the trade association — and what each one can and can't do with your money, your donation deduction, and an election.
How grants.noprofits.org works: tracing federal money through a live graph
A walk through the live tool at grants.noprofits.org — pulling a federal grant-flow graph straight from USAspending.gov, enriching it with ProPublica 990 data, and the decisions (sub-agency grouping, name normalization, proximity-first trimming, a fuzzy-match gate, fiscal-year-normalized taxpayer ratios) that keep it honest.
Astro, Apps Script, and Firebase: how site.noprofits.org is built
A factual tour of the noprofits-web-engineering stack — a static Astro site on Firebase Hosting, a Google Apps Script standing in for a backend, and a keyless GitHub Actions deploy. Architecture, configuration, and data flow, with diagrams.
What a food bank's tax return actually says
Building a Spreadsheet-Based API Tool with Google Sheets
How to leverage Google Sheets and Google Apps Script to create a powerful data retrieval system that connects to external APIs, demonstrating capabilities beyond what free Excel Online can offer.
Automating IRS Form 990 Data Extraction - A Computational Approach to Nonprofit Financial Metrics
A programmatic approach to extracting and analyzing financial metrics from IRS Form 990 filings, enabling the calculation of program efficiency and fundraising efficiency for United Way Worldwide across multiple years.
Programmatic Retrieval of IRS Form 990 Data - A Browser Automation Approach
A practical methodology for programmatically retrieving nonprofit financial data from Form 990 XML filings using browser automation techniques.
Mapping the IRS Form 990 Data Repository - A Computational Approach to Nonprofit Data Discovery
A computational approach to mapping the structure of the IRS Form 990 data repository, identifying indices and file relationships to enable targeted retrieval of nonprofit financial data.
Computational Extraction of Financial Metrics from IRS Form 990 Data Using ProPublica's Nonprofit Explorer API
A computational approach to extract financial metrics from IRS Form 990 filings using ProPublica's Nonprofit Explorer API, addressing challenges in data format variability and availability, with application to nonprofit evaluation.
AI-Powered Non-Profit Transparency - Comparing Modern Tools for Financial Analysis
A comparative analysis of AI search tools in extracting and analyzing non-profit financial data, with practical applications for donors and stakeholders seeking transparency.
No posts under this topic yet.