The first customer proved the product. The second exposed the business model.
The first account had a custom import and a hard-coded plan. The founder handled support. That worked once. The next buyer needed different roles and invoice terms; by customer five, one product had turned into five branches under a shared logo.
SaaS starts when expected variation becomes configuration and every tenant remains inside the same operable product.
SaaS proof
- 16 weeks
- Gula product release
- RaftLabs co-built and held a stake
- 50
- restaurants in month one
- Recorded case-study result
- Acquired
- by Runchise
- Outcome recorded in the project history
The Gula case study documents an owned B2B product, restaurant onboarding, integrations, and the acquisition. It does not establish that the same tenancy or growth model fits another SaaS company.
A SaaS build needs a repeatable customer, not recurring invoices alone.
If every account needs a different product, the business may be custom software with a subscription contract.
A fit01Several customers share one core job and bounded configuration can absorb expected differences.
02Demand exists, but onboarding, tenancy, billing, permissions, or support no longer works by hand.
03The company knows its buyer and can state the enterprise or growth constraint the next release must remove.
Not a fit01The core user problem still needs cheap validation before production architecture.
02Each customer needs a different workflow, data model, and release path.
03The only requirement is a browser application for one organisation's internal use.
Shared storage vs stronger tenant separation
| Shared tables with tenant controls | Separate schema or database |
|---|
| Isolation | Logical separation enforced in shared data access | Stronger storage boundary per tenant |
| Operations | Simpler migrations and lower per-tenant overhead | More provisioning, migration, monitoring, and cost per tenant |
| Best fit | Many similar customers with accepted shared infrastructure | Buyer, residency, contract, or risk needs justify separation |
| Decision evidence | Threat model and automated isolation tests | Threat model, procurement need, and operating-cost model |
Scope
What makes the SaaS product repeatable
01Tenant and account model
Represent organisations, workspaces, teams, users, roles, and invitations so a customer can administer its account without engineering help.
02Permissions and isolation
Apply tenant and role boundaries across screens, APIs, search, export, files, background jobs, caches, analytics, and support tools.
03Plans, entitlements, and billing
Keep product access separate from payment events so trials, contracts, upgrades, downgrades, credits, failed payments, and pricing changes remain manageable.
04Onboarding and migration
Turn provisioning, configuration, imports, validation, and activation into a visible product path with recoverable errors.
Give authorised staff narrow tools for account support, flags, usage, incidents, and billing without normalising unrestricted customer access.
How it works
From product proof to repeatable SaaS
- Phase 1
01Define the customer and tenant
Map the buyer, account hierarchy, roles, configuration, onboarding, billing, support, and first valuable journey.
- Phase 2
02Choose the isolation and commercial model
Decide how data, infrastructure, plans, entitlements, usage, and enterprise exceptions work.
- Phase 3
03Test product and operator paths
Validate customer workflows alongside provisioning, billing, support access, failed payments, exports, and tenant boundaries.
- Phase 4
04Onboard controlled cohorts
Release to a small customer group, monitor product and business operations, and expand after onboarding is repeatable.
Risk
SaaS failures that appear after the demo
- Tenant checks exist only in queries
- Centralise enforcement and test every access path, including search, export, files, jobs, caches, and support.
- Payment state controls product state directly
- Use explicit entitlements and idempotent billing events so retries or provider delays do not corrupt access.
- Support has permanent broad access
- Use narrow roles, approval, time limits, and logs that match the support job and customer contract.
- Configuration becomes customer code
- Define the allowed variation. Product requests outside it need a product decision, not another tenant branch.
A European customer may ask for more than an EU cloud region. The product
boundary should identify controller and processor roles, tenant isolation,
subprocessors, support access, backups, international transfers, retention,
deletion, accessibility, languages, billing providers, payment authentication,
tax inputs, incident handling, and change notice. These decisions belong in
the architecture and operating model before they become sales promises.
Europe is not one procurement or legal market. Start with named countries and
one buyer segment. RaftLabs documents the implemented controls and provider
chain so the client's security, privacy, finance, procurement, and qualified
advisers can review what actually exists.
Scope and price
A focused SaaS release starts at $25,000.
Start with one product journey, tenant and account controls, onboarding, plans, billing, and the integration needed to complete the job.
A wider platform is priced after customer variation, isolation, product operations, commercial rules, integrations, and existing architecture are mapped.
Starting investment
Starts at $25,000
A focused first release usually takes 10 to 16 weeks. Migration, mobile, enterprise identity, regional hosting, and complex billing can extend the plan.
Fixed-price phase
Once the first phase is scoped, its price is locked in writing. New requirements enter through an agreed change.
Post-launch support
Eight weeks of support are included for defects within the agreed scope while the first customer cohort is monitored.