Skip to content
All case studies
SaaS & Web AppsDraftDraft · Vertical SaaS, seed stage· Draft

Illustrative engagement. This write-up describes how we approach this kind of work. It is an anonymised archetype rather than a named client project — the figures are representative, not audited.

From founder's prototype to a multi-tenant product.

Rebuilt a demo that had accidentally acquired paying customers into a real multi-tenant SaaS — auth, roles, billing, and a data model that could take the next thousand accounts.

01

Enforced at the database

Tenant isolation

02

No human in the loop

Self-serve signup to paid

03

Week 3

First production deploy

The challenge

The founder's prototype had won real customers, which was the problem: every new account was provisioned by hand, tenants shared a database with no isolation, and pricing lived in a spreadsheet. Any serious security review would have ended the deal, and the team knew it.

How we approached it

01

Fixed the data model first — tenant scoping enforced at the database with row-level security, so isolation could not be forgotten in a query.

02

Replaced hand-provisioning with self-serve signup, org invites, and role-based permissions built around how customers actually organise their teams.

03

Wired billing to metered usage so plan changes, trials, and upgrades stopped being a founder task performed inside Stripe's dashboard.

04

Shipped in slices behind flags, migrating existing accounts onto the new foundation one at a time rather than in a single cutover.

What shipped

Signup, billing, and provisioning run without anyone watching, and the founder stopped being a dependency of their own product. The tenancy model held up under a customer's security review — the milestone that had been blocking their move upmarket.