An AI ecosystem for fundraising letters

Solo, end to end: analysis, prompt design, prototype, Claude skill

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

Two panels. Left: average fundraising return by mailing month, indexed so the average month is 100; September stands out at 160, the other months sit between 78 and 102. Right: every mailing on record against its own month's average; May runs from minus 89 to plus 90 percent, September from minus 69 to plus 85, and only December stays within plus or minus 20 percent. View full size ↗
Fig. 01

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.
Get in touch