The minimum scope is a commercial decision
A SaaS first version should not be «the product, but smaller». It should be the smallest thing a client agrees to pay for. Those two definitions produce very different scopes, and only the second one funds what comes next.
Data isolation is the critical decision
It is the most structural architecture choice and the hardest to change afterwards. A data leak between clients is an incident a young software company rarely recovers from commercially.
We apply three rules. Tenant filtering is applied globally at the model level, never left to each individual query. A dedicated test suite verifies that one client cannot reach another’s data, including through the API and exports. And any hand-written query goes through a specific review.
Billing: plan for the ugly cases
Failed payments, mid-month tier changes, partial refunds, a trial expiring on a Sunday. These cases represent 10 % of billing code and 80 % of support tickets when handled poorly. We cover them with automated tests before go-live.