Free 15-min triage

Cross-tenant data leak

Your customers can see each other's data. It is never just the one screen you found.

If one customer has seen another's records, treat it as a category, not a single bug. AI builders assemble the interface first, which is the right way to get a product into your hands quickly, but it means isolation tends to live in the interface: lists look filtered, admin pages look hidden, and the database underneath answers anyone who asks it directly. The route you found is rarely the only one. Here are the six places I check first, and the test that proves they are closed rather than merely quiet.

Fixed £4,500 · 3 days · pass-or-refund · next slot w/c 3 August

What actually breaks

How I prove your tenants are actually isolated

The fix is not credible without an adversarial test, so I write one first. Two real accounts in two organisations. I drive the app as customer A with a proxy recording every request the browser makes: pages, API calls, database queries, exports. Then I replay each request as customer B, substituting A's record ids, and again with no session at all. On Supabase I also query the data API directly with the public key, because that route skips your application code entirely. The test asserts one thing: zero rows cross the boundary by any route. It stays in your repository and runs on every deploy, so the next feature you prompt into existence gets held to the same standard.

What “done” looks like

We agree one of these in writing before you pay anything. If it passes, the sprint passed. If it doesn't, you get a full refund and keep the work.

Pass-or-refund guarantee

We agree the acceptance test before any work starts. If it doesn't pass within three working days, you get a full refund and keep every change I've committed. The risk is mine, not yours.

Get a yes/no on your blocker · free, 15 min