How I automated grant-application tracking for a nonprofit
Deadlines, reporting, and renewals for a charity Northwind helps — never miss a submission window again.
By Awadesh Madhogaria · Published Oct 8, 2025
A small charity Northwind helps runs almost entirely on grant money. Grants come with deadlines, and a missed deadline can mean a year without funding.
For a long time, the only thing standing between the charity and a missed window was one person’s memory. The board treasurer was tracking ten active grant relationships in their head — each with its own submission dates, interim reporting dates, and renewal cycle. Every funder has a different calendar, and one person held all of it, with no backup if they were ill or away.
That is a fragile place to keep a year’s budget. A late report can quietly disqualify the charity from the next round, so this wasn’t a tedious task worth tidying up — it was a single point of failure sitting on top of the charity’s income. Here is how I made it boring instead.
How it works
The principle was to get the deadlines out of one person’s head and into a system anyone on the board could see. The build is deliberately plain:
- The treasurer keeps each grant as a row in a
Grantssheet, with columns forfunder,awarded,reportDueDates, andrenewalDate. - A scheduled script reads the sheet and writes every date to a shared
GrantsCalendar. - If a date changes in the sheet, the next run updates the matching event.
- As each deadline approaches, the script emails the treasurer at 30, 14, and 3 days out.
- The 3-day reminder is deliberately blunt — it is the last safety net.
The tiered reminders matter more than they look. One nudge a month out is easy to dismiss; a sequence is hard to ignore. Just as important, the deadlines now live somewhere the whole board can see, so the charity is no longer one sick day from a missed report.
One thing I deliberately did not build was a web app frontend. I had sketched a dashboard with status colours and progress bars, but the treasurer was perfectly happy with the Sheet, so the dashboard never got made — and the project shipped a week sooner for it. Don’t build UI nobody asked for.
Was it worth it
The headline number is zero missed deadlines in 12 months, and the treasurer’s stress dropped visibly. Beyond that:
- The deadlines now live somewhere the whole board can see, not in one head.
- A shared Calendar means the charity is no longer one sick day from a missed report.
- The treasurer plans ahead instead of reacting to a sudden panic.
When a critical process depends on one person remembering, the fix isn’t a fancier tool — it’s moving the knowledge somewhere it can’t be lost. Build the simplest thing that does that, and resist the urge to add UI nobody asked for.