SaaS development
SaaS products rarely stall on the core feature. They stall on the first enterprise deal, when the buyer asks for SSO, directory provisioning, role management and an audit log, and the answer to each is "not yet". Or on billing, when usage pricing meets a schema that only knew about seats. We build the multi-tenant foundations — tenancy, identity, billing and admin tooling — so the product can be sold to the customer after next, not only the one in front of you.
Four ways this arrives.
Then SCIM, then role mapping, then a security questionnaire. We add SAML and OIDC through a provider or your own identity stack, provision users from their directory, and keep the permission model working for the self-serve customers who never asked for any of it.
Shared tables with a tenant column and every query trusted to filter on it. We enforce isolation below the application, with Postgres row-level security or separate schemas, and write tests that try to read across tenants and must fail.
Moving from seats to usage, adding a free tier, or selling annual contracts beside monthly plans. We model plans and entitlements separately from the payment provider, meter usage into a ledger you can audit, and make proration and dunning tested code rather than a monthly surprise.
Every larger customer asks who changed what, who can reach production and how access ends when someone leaves. We build exportable audit logs, least-privilege access and change control through pull requests, so your answer is a screen, not a spreadsheet.
A multi-tenant platform scoped per organisation, with admin screens for users, access and login alerts, and a way for an administrator to view the app as any user.
Read the write-up →Asked on nearly every call.
Shared database, separate schemas, or a database per tenant?+
Shared tables with row-level security for most products, because it is the cheapest to run and the simplest to migrate. Separate schemas or databases when a customer contractually needs isolation, data kept in a particular region, or its own backup schedule. We design so a large tenant can move to its own database later without rewriting the application, because that request usually arrives with the biggest contract.
When should we add SSO and SCIM?+
Before the deal that needs them, not in the first month. Design the user and organisation model so SSO slots in without a data migration, then switch it on when a paying customer asks. A provider such as WorkOS saves you building SAML and SCIM yourself, which rarely pays off until enterprise customers are a large share of your revenue.
Stripe, or a merchant of record like Paddle?+
Stripe gives you the most control over plans, invoices and the checkout. A merchant of record such as Paddle takes a larger fee and becomes the seller, handling tax wherever you sell. For a small team selling internationally from the start, the merchant of record is often the simpler path. We lay out both at your price point before you choose.
Can you make the product ready for enterprise buyers?+
Yes. Enterprise buyers ask for the same things every time: single sign-on, directory provisioning, roles they can define, an audit log they can export, and admin screens their IT team can use. We design those into the data model early, so saying yes to the next large customer is a configuration change rather than a quarter of rework.
What have you built that carries over to SaaS?+
Multi-tenancy, per-organisation access and admin tooling run through most of what we build. FM360 is a multi-tenant platform with all three: organisations, apps and access managed per customer, usage analytics and login alerts. Subscriptions and billing logic we build inside the product, tested like any other code rather than left to a dashboard.