Custom Software for SaaS Startups: Building What You Won't Rebuild After Series A
The architectural decisions you make in months two through six will either compound into a competitive moat or turn into the technical debt that stalls your Series A.

Most SaaS startups do not fail because they built the wrong product. They fail — or plateau badly — because they built the right product on a foundation that cannot carry the weight of growth. The authentication model that works for fifty users becomes an ops nightmare at five thousand. The billing logic bolted on in week three becomes the reason you can't launch enterprise pricing. The data model chosen for speed-to-launch becomes the migration you dread for years.
This is the engineering conversation almost no early-stage founder has early enough. The decisions you make in months two through six will either compound into a competitive advantage or turn into the technical debt that consumes your Series A runway. Here is what to get right from the start — and why the choices matter more than most founders understand until they're stuck with the wrong ones.
If you're earlier in the journey and still scoping what to build first, read Building an MVP That Scales: What to Get Right Before You Grow — it covers the decision layer that precedes everything here.
The multi-tenancy decision you cannot undo cheaply
Multi-tenancy — how your software separates one customer's data from another's — is the first irreversible architectural choice in any SaaS product. There are three models: shared database with a tenant ID column, schema-per-tenant on a shared database server, and database-per-tenant. Each has legitimate use cases. The catastrophic mistake is choosing based on what's fastest to code in week one rather than what your eventual customers will actually require.
Enterprise customers — the ones who pay $50,000 ARR and above — increasingly require data isolation guarantees that shared-row multi-tenancy cannot provide. HIPAA-covered entities and financial services firms often contractually require it. If your growth path runs through enterprise, schema-per-tenant or database-per-tenant is not premature optimization. It is table stakes. Retrofitting isolation from a shared-row model after you have production data and live contracts is one of the most expensive migrations in SaaS engineering.
Shared-row multi-tenancy: lowest infrastructure cost, fastest to build, but leaks data if a query misses the tenant filter. Never acceptable for regulated industries.
Schema-per-tenant: good isolation without per-tenant database overhead. Migration-heavy as schemas evolve, but manageable at most growth stages.
Database-per-tenant: strongest isolation, easiest customer-specific backups and restores, but infrastructure cost scales with customer count and requires automation to manage.
Authentication and authorization: the gap most startups ignore
Authentication (who are you?) and authorization (what are you allowed to do?) are different problems that most early-stage SaaS products treat as one. The result is authorization logic scattered across the codebase — some in the API routes, some in the frontend, some in database queries — with no single enforceable source of truth. This creates security vulnerabilities and makes features like role-based access control (RBAC), team permissions, and SSO exponentially harder to add later.
A proper authorization layer — whether you build it using a library like Casbin, adopt a service like Permit.io, or roll your own policy model — should be defined at the data model level and enforced at a single layer before any business logic runs. The half-day investment at the start saves weeks of refactoring and eliminates an entire class of privilege escalation bugs.
SSO via SAML 2.0 and OIDC is not a nice-to-have for enterprise. It is usually a procurement requirement. Startups that defer SSO are locked out of enterprise deals — not because of price, but because enterprise IT simply cannot onboard a SaaS product that does not support their identity provider. Build for it from the auth layer, even if you do not activate it until your first enterprise prospect asks.
Billing logic that actually supports your pricing model
Billing in SaaS is not just charging a card. It is the system that enforces your pricing model, handles plan changes mid-cycle, manages trials and extensions, tracks usage for consumption-based pricing, issues prorated credits, and generates the financial data your investors will scrutinize. Most early-stage startups build a minimum viable billing layer — a Stripe integration that handles basic subscriptions — and then spend six to twelve months retrofitting it as the pricing model evolves.
The decision to build custom billing logic versus using a billing infrastructure provider like Stripe Billing, Chargebee, or Lago should be made at the start, not during the sprint where someone realizes the current setup cannot handle annual plans with monthly invoicing. Each has real trade-offs: Stripe Billing handles simple subscription models well but requires significant custom development for usage-based or hybrid pricing. Chargebee and Lago handle complex pricing but add integration overhead and a dependency. Rolling custom billing logic is almost always a mistake unless your pricing is genuinely sui generis and you have engineering bandwidth to maintain it.
The data model problem that kills velocity after month twelve
Startup engineering lore says "normalize later" — ship fast, denormalize for speed, worry about schema once you have product-market fit. This is sound advice for features. It is terrible advice for the core data model that your entire product is built on.
The tables that model your core entities — users, organizations, plans, the objects your product is actually about — have high migration costs once they have production data attached. A poorly designed user-organization relationship can block the multi-seat and role features that enterprise sales requires. A flat event table that works for basic analytics becomes the performance bottleneck that requires a full data warehouse migration at scale. The two to four hours spent on data modeling before the first migration pays dividends for years.
The startups that scale cleanly past Series A did not have fewer technical opinions in the early days. They had better ones — applied earlier.
How TTGC approaches early-stage SaaS builds
Ravve Jay Prevendido and the TTGC engineering team have worked with SaaS founders across fintech, health tech, and B2B tooling. The consistent finding: the teams that arrive at Series A with clean architecture had not been more cautious — they'd been more intentional. Multi-tenancy, auth, billing, and the data model were treated as architecture decisions, not just implementation details. The code moved fast. The foundation was deliberate.
TTGC offers early-stage SaaS builds with architecture review baked into the scoping process — not as an add-on after the sprint plan is set. The goal is software you won't rebuild. The details are at /growth-assessment.
Building a SaaS product? Talk to TTGC before the architecture decisions are made for you by speed.
Book a free Brand and Growth Assessment and see exactly how Through The Glass Creatives would approach it.
Sources
- a16z — "The Software Is Eating the World" and follow-up infrastructure reports on SaaS scalability (2023–2024).
- Stripe — Billing architecture patterns for SaaS: usage-based and hybrid pricing (2024).
- McKinsey & Company — "The state of AI and software engineering in enterprise SaaS" (2024).
- Gartner — Enterprise SaaS procurement requirements: SSO, data isolation, and compliance (2024).

