From 50 Reports to 4,000: Automating Donor Stewardship at Texas A&M Foundation
Here is a math problem that a $60,000 vendor could not solve.
Texas A&M Foundation managed thousands of endowed funds. Each endowment had a donor household. Each donor household deserved to know what their generosity had accomplished: which scholarships were awarded, how the fund performed, what impact their gift created. The Foundation believed deeply in this. Stewardship was not a box to check. It was core to their mission.
The problem was production capacity. Creating a single endowment report required pulling financial data, researching fund activity, compiling it into a branded document, reviewing it for accuracy, and delivering it to the donor. The team could produce about 20 to 50 reports per year. At roughly 100 hours per batch of five, the math was brutal. Reaching all 4,000+ donor households would require approximately 80,000 hours of work annually. That is 38 full-time employees doing nothing else.
The Foundation evaluated a vendor solution at $60,000 per year. It was inadequate. The output did not meet their quality standards, the customization was limited, and the dependency on a third party for something this central to their mission felt wrong.
That is when I got involved.
The Strategy: Every Donor Deserves to Know
The strategic question was never "should we do this?" The leadership was already aligned. Every donor who creates an endowment should receive a report showing the impact of their gift. Period.
The question was: how do you deliver personalized, branded, accurate reports to 4,000+ households when your current capacity is 50?
You cannot hire your way out of a 100x gap. You have to build your way out.
The Experience I Was Designing
Before getting into the technical work, I spent time thinking about the end product. What should a donor experience when they open this report?
A donor who gave $50,000 to a scholarship fund has likely wondered, maybe for years, what happened to their money. Did it help anyone? Is the fund growing? Was it worth it?
The report needed to answer all of that. Clearly. Beautifully. Personally. The donor's name, their specific fund, the actual financial performance, the real impact. Not a generic fundraising letter with a mail merge name at the top. A genuine, substantive accounting of their generosity.
That experience standard was the design constraint for everything I built. Every technical decision was in service of a report that would make a donor feel seen, valued, and informed.
One Month, Zero Budget
I built the entire pipeline in one month with no external budget.
The system worked like this:
Data extraction. Pull endowment data from Salesforce, including fund performance, gift history, and donor household information.
Data transformation. This is where the complexity lived. Households needed to be consolidated (a married couple should receive one report, not two). Deceased donors needed to be handled with appropriate sensitivity. Over 210 academic organization codes needed to be translated from internal database shorthand into readable names that would mean something to a donor. "ENGL" becomes "Department of English." "BIMS" becomes "Department of Biology and Medical Sciences."
Document generation. Node.js, Handlebars templates, and Puppeteer for PDF rendering. Each report was branded to Foundation standards with the donor's specific data populated throughout.
Distribution. Generated PDFs were delivered through HubSpot for tracked email delivery, with archival copies stored for internal reference.
Coordination. The pipeline required alignment across four teams: the stewardship team, the data team, the marketing team, and the development officers who maintained donor relationships. Each had different requirements and different definitions of "correct."
The 210+ academic organization translations were particularly demanding. These translations had never been compiled into a single reference. I built the lookup table from scratch, cross-referencing internal databases with public university records and verifying with staff who knew the institutional history.
What Happened
The system increased capacity from 20-50 reports per year to 4,000+. An 80-100x improvement.
The $60,000/year vendor solution was eliminated before it was ever implemented.
Five years of backlogged stewardship was unlocked. Donor households that had never received a report about their endowment's performance could now receive one. Think about that: donors who gave generously and then heard nothing for years. The system did not just solve a production problem. It solved a relationship problem.
Accuracy in production was 100%. Every report went through automated validation before generation. Every data transformation was logged and auditable. The Foundation's stewardship team reviewed output samples and approved the quality before any donor-facing delivery.
What This Work Taught Me
This project reshaped how I think about the relationship between strategy and systems.
The strategy was clear before I wrote a single line of code. The Foundation knew what they wanted to do and why. They did not need a consultant to tell them that donor stewardship matters. What they needed was someone who could look at a 100x capacity gap and build a bridge across it.
The experience was the design constraint. Every technical decision served the moment when a donor opens an envelope (or an email) and sees a personalized, beautifully branded report about their endowment. If the system produced accurate but ugly reports, it would have failed. If it produced beautiful but inaccurate reports, it would have been worse. Both had to be true.
The system was the enabler. Not the point. Nobody at the Foundation cared about Node.js or Handlebars or Puppeteer. They cared about reaching 4,000 donors instead of 50. The technology was invisible, as it should be.
I also learned something about constraint as a creative force. Zero budget meant I could not buy a solution. I had to build one. One month meant I could not over-engineer. I had to find the most direct path from data to donor. Those constraints produced a system that was simpler, cheaper, and more capable than the $60,000 vendor alternative. Sometimes the best thing you can have is no budget and a deadline.