When multi-tenant is the wrong choice

Most software should be multi-tenant. A CRM that agencies resell, with agents writing to client data, is where the trade flips.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.

app.salescrew.io/today
The daily working view

The short answer

  • Multi-tenant means one shared database for every customer. It's the right default for most SaaS products, because it's cheaper to run and simpler to grow.
  • It's the wrong choice when a customer needs one of three things. Those are a full database export, a region they pick, or a wall that doesn't rest on an access rule.
  • Some CRMs are resold by agencies as separately branded client instances, or let AI agents write straight to client data. Those CRMs have a stronger case than most for all three.
  • SalesCrew chose single-tenant, one Supabase project per client, because both of those apply. Agency resale and agent write access are core to what it's built for.

Multi-tenant is the right default, most of the time

Most software should be multi-tenant. It's cheaper for the vendor to run, which usually makes it cheaper for you to buy. For most uses, a well-built multi-tenant system keeps data apart well enough. Row-level security, careful checks in the app, and a customer ID on each row of shared tables can keep customers separate in practice.

So the case against multi-tenant isn't that it's insecure. Its promises hold only while its rules stay right. For most products, that's a fair risk given what it saves. So don't ask whether multi-tenant is bad. Ask whether this product, for this use, needs something a shared database can't give by its structure. Three needs tend to answer yes.

The three conditions that flip the trade

The first is a real export. Say a customer needs the actual database, not a hand-picked set of CSVs. A shared database can't give them that, because it also holds every other customer's rows. This matters most where the data is deeply linked, like a CRM's contacts, deals, notes and threads. A flat export loses much more there.

The second is data residency that varies by customer. A shared database lives in one region. If your customers need their data in different countries, one shared database can't serve them all. Only a database per customer, set up in the region each one needs, can do that.

The third matters most for an AI-native product: an agent with write access. A person who makes a mistake in a shared database can only click so fast. An agent working through an API can make the same mistake much faster, across far more records, before anyone notices. So the reach of an agent's errors matters. In that world, a database wall that doesn't rest on an access rule is worth more. It's worth less in a product where only people write data, now and then, through a form.

Why this specific combination pushed SalesCrew to single-tenant

SalesCrew sits where two of those three needs meet, on purpose. Agencies resell it as separately set up, separately branded client instances. That's closer to the export and residency case than to a normal SaaS account. An agency's client expects their instance and their data to be theirs, not a filtered view into a shared system.

SalesCrew is also built for agents. Through 145 MCP tools, they write straight to client records. That's closer to the agent-write case than a product where AI only reads and suggests. Either need alone might not be reason enough for a database per client. Together, agency resale and agent write access describe a product where isolation does more real work than in most SaaS. That's the actual reason for the choice. It isn't a belief that single-tenant is always the more serious design.

Here's the lesson for judging any product, not only a CRM. Check whether it fits this pattern before you assume either design is right. A tool one person uses, with modest export needs and no agent writing data, is very likely well served by multi-tenant. Paying for promises you'll never use is a poor trade too. The design should follow from what the product needs to promise, not from which one sounds safer on a features page.

Questions

Is multi-tenant architecture insecure?
Not by nature. A well-built multi-tenant system, with correct row-level security and checks in the app, can be secure in practice. The difference is what its safety rests on. It depends on those rules staying right, all the time, rather than on a wall in the structure that needs no rule at all.
Why do most SaaS products choose multi-tenant anyway?
Cost and simplicity. One shared database is cheaper to run than a database per customer, and it's easier to add a new customer to. For most kinds of software, the isolation and export a dedicated database gives you aren't worth that extra cost.
What should a buyer actually ask, rather than assuming single-tenant is always safer?
Ask three things. What does export mean (a full dump or a few CSVs)? Can you choose where your data lives? How is isolation enforced? Those three answers matter more than the label. You can find a badly built single-tenant system and a well-built multi-tenant one.