Case study · Stealth · 2025–2026
Stealth: nonprofit platform at national scale
Migrated tens of thousands of legacy records into a single tenant model, wired BigCommerce, and built an attribution engine that matches orders to organizations automatically.

Role
Studio · build + ship
Status
Stealth
Year
2025 → 2026
Surfaces
Web + iOS
Live
In development
The problem
We are rebuilding a national nonprofit's online presence as a single multi-tenant platform: a member directory, an eCommerce storefront, and the back-office tools to run both. Replaces a legacy WordPress + plugins stack. The hardest problem was order attribution, every order in the legacy data had a school name, a company name, and a contact email, but no FK to anything. We shipped an AI-assisted matcher that auto-resolves the majority of orders against the organization directory and routes the rest to a manual queue for HQ.
What we built
- Multi-tenant organization directory replacing a flat WordPress install
- BigCommerce integration with two-way order sync
- AI-assisted order attribution engine, auto-matches most orders, queues the rest
- Member affiliation model that handles people belonging to multiple organizations
- HQ admin tooling, manual review, override, bulk re-attribution
Numbers that matter
Scale
National
tens of thousands of organizations
Migration
Legacy WP → multi-tenant
zero downtime cutover
Attribution
AI-assisted
auto-resolved majority
Status
Building
stealth
Stack
- Frontend
- Next.js 16React 19
- Backend
- FastAPIPython 3.12Celery workers
- AI / ML
- Custom attribution modelLLM-assisted matching
- Data
- Cloud SQL PostgresPolymorphic organizations
- Infra
- Cloud RunVercelBigCommerce integration
What we learned
When a noun is wrong, it is wrong everywhere. We took the deliberate pain of renaming the central concept across 130+ endpoints because shipping the wrong vocabulary at national scale was worse.
AI attribution only earns trust when there is a clear manual queue for the cases it punts on. The handoff is more important than the model.
Have something that looks like this?
Tell us what is broken. We’ll tell you what the first week looks like.
Next case study →
RunLink