They run residential trauma retreats for police, fire, EMS, corrections and dispatch, and for their partners. Around 120 people per retreat, several retreats a year, seven years of history. Two staff who do everything, a board that shows up, and a volunteer who has kept the website running for free since the beginning.
They came to us because the registration spreadsheet had stopped being trustworthy. That turned out to be the smallest problem.
Registration
The form was dropping one of every couple’s two answers to the same question, silently, and had been for as long as the field existed. A blank is indistinguishable from “they didn’t answer,” so nothing had ever flagged it. We fixed it at the form rather than teaching the importer to work around it, and rebuilt the pipeline so every attendee gets an identifier that survives across retreats. A returning attendee is now recognized as the same person instead of entered fresh.
The donor database
Measured against source records, fewer than one in six gifts made over a three-year window had made it into the CRM. Every dollar was received, deposited and accounted for by the organization’s own accountant. What was missing was the answer to “who gave this, and have we thanked them.”
Nothing about that is unusual for an organization this size, and none of it was carelessness. A small nonprofit accumulates giving channels because donors and employers add them. An employee picks a workplace-giving platform. A company routes its match through a donor-advised fund. A board member sets up a payment button for an event, and it works, so it stays. Nobody chose that architecture. It accreted.
What was actually true was narrower and more fixable than “we’re disorganized.” They had always been good at receiving money. They had never had a system for recognizing who sent it.
The database itself
Nobody currently at the organization had chosen their CRM. Somebody picked it years ago and then left. We worked out whether it still fit before recommending anything, which is the opposite of how that conversation usually goes, and found about $1,300 a year of headroom sitting in their own record counts.
The list
3,547 rows in the master attendee list, and a rebuild some months before we arrived had dropped 531 people with nothing anywhere recording that it had happened. We recovered 528. Three have never been explained, and this is the honest place to say they probably never will be.
Six and a half years of evaluations
1,877 responses going back to late 2019, sitting in five survey instruments that had never been compared to each other. They’re now one dataset behind one report that rebuilds itself from the data on every import, rather than a hand-maintained summary that quietly stops being true. Where an older instrument never asked a question, the report prints a dash. A zero would say nobody answered, which is a different claim.
What we didn’t do
We don’t do accounting, and we said so in writing, early, and more than once. Whether money is correctly booked is a question for their accountant. Whether a gift is in the donor database and recorded correctly is ours. Being clear about the edge of the work is part of the work.
We also didn’t move their website. The volunteer who had hosted it free for seven years sits on their board. The security argument for moving it dissolved the moment he brought the software current, which he did, promptly. What was left was a relationship, and a relationship is a bad reason to move a website but an excellent reason not to.
The honest part
This is ongoing and some of it isn’t finished. The donor reconciliation is mid-flight. The day-of check-in system goes into live use at the December retreat, and this page gets updated afterward with what actually happened at the door.
The engagement also ran well past its original quote, because the quote was scoped against the problem they described and the real problem was four problems. We talked about that before it happened rather than after.