CharityRight — Donation Infrastructure Rebuild
UK charity, ~£3.3M/year. When I joined, the technology was in fragments. Every donate button routed through an agency's hosted checkout the charity didn't own. Donations were scattered across three platforms with different payout cycles (2 days vs weekly vs two months). CRM integration was broken. Gift Aid reconciliation was manual. Mobile donation flow took over 30 seconds.
Over 18 months as the sole developer, I replaced every external dependency — 14 repositories. New checkout with Stripe PaymentIntents + SetupIntents, Apple/Google Pay, progressive disclosure, Zod validation. P2P fundraising engine with team pages, leaderboards, and URL attribution across 15 Prisma models. Config-driven campaign pages with a 30-field interface so the fundraising team could launch Ramadan appeals without a developer.
Then the data layer. Three sync pipelines: Enthuse via Playwright with a four-layer auth chain (SSO → magic-link email → Gmail OAuth → TOTP), LaunchGood via Playwright CSV export, and a MySQL→PostgreSQL warehouse with five data streams landing in raw tables then transforming into a canonical model. That model feeds N3O CRM queue payloads and a donor messaging system on n8n + Chatwoot + WAHA. Terminated the agency retainer (£1,200/month saved). Migrated hosting.
The decision that mattered
Nobody told me to handle Zakat compliance. I just knew that if a Muslim donor selects Zakat, the system needs to give them a clear choice about admin fees — because Zakat is a religious obligation with specific rules about how the money is used, and that choice needs to be explicit, not buried. I built it as a per-donation and per-plan toggle so the donor controls what happens, not the system. Nobody told me to move Gift Aid capture to post-payment either. But asking a donor for their home address before they've committed to giving kills conversion. I moved it. HMRC still gets what they need. The charity gets more donations. These aren't in any spec. They're the kind of decisions you only make if you understand the domain, not just the technology.