An AI ecosystem for fundraising letters
At a donor-funded nonprofit, some fundraising letters raised noticeably more than others, and nobody had a record of why. I built the analysis that found the pattern, the Claude Project that turns it into a draft, the web prototype that puts someone in control of that draft, and the Claude skill that carries the same voice into notifications, web banners, and video scripts. All of it done solo, at the layer where prompt design meets product design.
The problem
The gap between the over-performers and the rest was real, but nobody could say exactly why beyond a guess about the season. Every campaign still needed a letter that read warm, specific and unmistakably the organization's own — drafted from scratch, several times a year.
The follow-up content built to carry the same message into notifications, the web and video scripts had two options: get copy-pasted, and lose the specificity that made the original work, or get written from a blank page again, and lose the time. The blank page kept eating the calendar.
What I built
1. A performance analysis of the source material
Six years of mailings, shown as percentages, not amounts. By the calendar, September looks like the answer. Against its own month, every month except December has letters more than 20% above and more than 20% below its average.
Read the reasoning behind this decision
I went back through six years of fundraising letters and their results. First, normalize: return per thousand letters sent, so a large mailing and a small one can be compared. Then the calendar: September raised the most on average, which made the obvious reading "send in September". So I measured every letter against the average for its own month instead. That changed the picture. Ten of the sixteen strongest letters were not from September, and in one May, two letters landed at +90% and −89%. The month set the baseline; the letter decided the result.
Only then did the pattern work start: what the real over-performers shared, compared against the voice-and-tone analysis and the writing handbook. A concrete, tangible need beat an abstract mission. Dramatic openings beat jokes and gentle questions. The PS worked as a second ask, not a repeat. That analysis is the ground truth the whole ecosystem sits on.
2. A Claude Project that guides the generation with follow-up questions
The analysis, together with the style guide, is encoded into a Claude Project. Crucially, the Project doesn't just take a prompt and produce a letter. It asks follow-up questions before generating, clarifying the campaign occasion, the audience segment, the specific program or milestone the letter should reference. The interaction is a multi-turn clarification loop with a human, not a single-shot completion.
3. A web prototype for the generation flow
The flow isn't chat-only. I built a web prototype that gives the generation a proper surface: inputs for the context Claude needs, a side-by-side view of the working draft, iteration in place. Prompt engineering shows up in the model's behavior; the prototype shows up in the human's ability to drive it.
4. A Claude skill for multi-surface follow-up content
The fundraising letter is only the first surface. The same message has to land as a notification, as a banner on the web, and as the script for a fundraising video. I built a Claude skill that takes the letter's tone and message as its ground state and produces follow-up content across all three surfaces. One voice, three surfaces, one source of truth.
Want to hear more?
- Ask me why the fundraising AI won't generate until it knows what campaign and what program a letter is for, and how one letter becomes a notification, a web banner, and a video script without anyone rewriting it.