SaaS architecture that serves one product to hundreds of businesses, none ever able to see another's data at the database level — proven, with tests, across four separate products.
In SaaS, the Most Expensive Mistake Is One Customer Seeing Another's Data.
We don't leave tenant isolation to the good intentions of application code; we build it into the database itself. Every tenant table is protected by forced PostgreSQL row-level security (RLS), and the application connects with a role that cannot bypass it. A single table missing its policy breaks the build. We apply this approach, with its tests, across four separate products.
Access is never granted on a role alone: the user's role, the data scope they see, the business's plan and the current state are evaluated together, and the interface, API, reports and AI enforce the same boundary. The commercial layer is part of the product too: plan and feature access, subscriptions, payments and invoicing. Tenants can be split by subdomain, country or branch.
What We Build
- Forced database-level RLS with coverage tests
- Authorization by role × data scope × plan
- Subscriptions, plan and feature access, payments and invoicing
- Tenant structures by subdomain, country and branch
- Per-tenant configuration and white-label
Where It Fits
Vertical SaaS products, multi-branch and franchise businesses, platforms licensed to institutions, and multi-country institutional networks.
In Our Own Projects
Motice: a multi-tenant CRM/ERP for pilates, yoga and studio businesses. Keyperties: a B2B2C platform connecting real-estate advisors with residential developments. Mentorual: a mentoring and booking platform offered to institutions, starting with İTÜ Ginova. The Yunus Emre Institute's web network, running 93 centres in 69 countries from one codebase.
