For bookkeepers

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.

The mechanism

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.

The proof

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.

gate rls-enforce · live database
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.

The hold

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.

gate pii · BLOCK
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.

What you can build

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 first request, as you might type it

“A portal where each client logs in and sees only their own invoices and statements.”

Describe what your firm needs.

Start a build