Back to case studies

Multi-Tenant Fundraising Platform

Built and scaled a multi-tenant Rails platform that lets non-profits run fundraising campaigns and social media operations from one place. Stripe + Plaid for payments, Resque for background work at scale, Elasticsearch for search.

Client
Anonymous (multi-tenant SaaS)
Engagement
Senior engineering + architecture

The product

A SaaS platform that lets non-profits and cause-driven organizations run fundraising campaigns, manage donor relationships, and coordinate social media — all from one tenanted instance. Each customer organization gets its own scoped data, branded experience, and team management.

What we built

Multi-tenant Rails 5 architecture with strong tenant isolation, Stripe Connect for payment processing, Plaid for ACH verification, Elasticsearch for cross-tenant search where it was authorized, and Resque + Redis for background jobs at the scale that fundraising spikes demand. React on the front end where interactivity mattered, server-rendered Bootstrap views where it didn't.

The interesting engineering problem was tenant scope: every query, every background job, every mailer had to know which org it belonged to without leaking. We built that into the application layer so individual contributors couldn't accidentally write a query that crossed tenant boundaries.

What this case study illustrates

Multi-tenant systems break in subtle ways at the edges — background jobs, email sending, search indices. The patterns we built here ship as a default in the AI tools we now build for client orgs that have multiple programs or sub-organizations. If you've ever shipped a CRM and then realized "wait, but each program needs its own view" three months later, you know the problem.