Move at study speed. Stay inspectable.
AI drafts the eCRF from your protocol, so a study is configured in days rather than weeks — and data cleans as it arrives, so database lock is a milestone instead of a scramble. What makes that pace safe is where the controls live: the database itself enforces isolation, immutability and the freeze on signed records, so speed never costs you defensibility.
Tenants can't see each other. The database enforces it.
Isolation shouldn't rest on remembering a WHERE clause. Every request runs as a constrained role inside a per-tenant transaction, so row-level security applies to reads and writes alike — even raw queries.
- Row-level security, not app trust
- The app connects as a non-owner role; each query is bound by the tenant set on the request. A connection with no tenant context reads nothing.
- Append-only audit engine
- A database trigger writes an immutable row for every insert, update, and delete — and auto-attaches to any new table, so coverage can't drift.
- Signed records are frozen
- Once a form is e-signed, a trigger blocks further change at the database level — the freeze doesn't depend on application code behaving.
- Every export is traceable
- Each export carries a server-generated receipt binding actor, scope, time, row count and an SHA-256 digest of the file — so a dataset in a statistician's or an auditor's hands can be tied back to the exact moment it left the system.
Each control, demonstrable in the product.
The software supplies technical controls; compliance itself is achieved by your validated deployment and procedures. Here is what the system enforces.
Ask us to demonstrate any control, live.
Every row above can be shown in the running product — from the audit trigger to the RLS policy to the signature hash check.