One client can never open another's books.
Client portals, invoicing, statement tracking — built from a plain-language description, and held until the database proves each client's numbers stay their own.
A crossed ledger costs you the client, and maybe the practice. The inspection here treats it that way.
Isolation lives in the database.
Your app's records live in a database provisioned for it alone; no other customer's data shares it. Inside it, every table that holds a client's financial records carries a row-level security policy — a rule the database applies to every query, whatever the app code above it does.
A gate called rls checks that the policy is present on every sensitive table, on every build. A missing policy stops the build right there.
A live attack, before every release.
A policy on paper proves little until something tries to get past it. So a second gate, rls-enforce, stands up a real database and seeds two separate clients. Signed in as the first, it tries to read the second client's invoices and balances; signed in as the second, it tries the first's. Both reads must come back empty.
seed client_a, client_b
as client_a → read client_b ledger · 0 rows
as client_b → read client_a ledger · 0 rows
pass — isolation held
One leaked row blocks the build. The full inspection line — all twelve gates — is on the trust page.
What a hold looks like.
When a gate fails, the build is held. It does not deploy, and there is no switch to make it. You see the findings in plain English, and from there you can run the fix loop again or change the request.
Financial data also leaks through quieter paths — a balance in a server log, an invoice total in a URL. A third gate, pii, reads the code and traces where fields like those reach a log call or a query string. A hit is a hold, on every build.
finding invoice_total written to a server log
build held — nothing deployed
None of this makes your firm SOC 2 certified, and we won't tell you it does — audits are their own process. The gates handle the technical part and show their work.
The tools a firm runs on.
Most firms start with a client portal or invoicing. Statement tracking usually comes next. You describe the tool the way you'd say it out loud, and the same twelve gates inspect whatever gets built.
“A portal where each client logs in and sees only their own invoices and statements.”