I build the last mile of nonprofit data.

Data analyst at Student Leadership Network. The part I care about is what happens after the data is correct — getting it in front of the person who has to act on it, in a form they will actually open. Ten or so internal web apps so far, each one built from a specific business problem, several in weekly use by my team.

Running: NJ Transit dashboard, Expense Dashboard, Morning Digest Building: Activity Log

Nonprofit data operations

Weekly reporting for 26 schools, without anyone logging in

case study · salesforce · apps script · bigquery

An entire leadership layer was pulling its own numbers out of Salesforce, one person at a time. I replaced that with an individualised report that arrives in their inbox every Monday morning — built around the fact that the people who most needed the data were never going to log in to get it.

Schools reporting weekly
26
Logins required
None

Includes the decisions that mattered — among them throwing out a weighted priority score, because nobody trusts a number they cannot reason about.

Built in the open

How late is your NJ Transit train?

live · python · github actions · public data

A scheduled pipeline over NJ Transit's published performance data. It reads eighteen files every week from a source that intermittently fails, merges rather than rebuilds so a failed download can never delete history, and publishes figures that anyone can recompute. The work I do at my job I can only describe. This one you can read.

Counting every late train
85.5%
Amtrak-adjusted
92.1%

Northeast Corridor, the twelve months to June 2026. NJ Transit publishes both figures and leads with the second. Every number here is recomputed from their own files by a verification script that fails loudly if any published figure drifts.

Also running

Earlier builds

About

I've been building things in spreadsheets since I was twenty. The tools got bigger; the instinct didn't. What I keep running into in nonprofit work is the same gap — the data exists, it's even correct, and it still isn't reaching the person who has to make a decision with it. That last stretch is the work I'm best at and the work I find most worth doing.

The side projects are the same instinct at small scale. I notice a bit of friction in my own week, and instead of tolerating it I go build the smallest thing that removes it. Most of them are a Google Sheet, a script, and a trigger. They're still running, which is the only review that counts.

How I work

The tools and methods behind these

Get in touch