Security

Built so an auditor and a security reviewer see the same answer.

Tenant isolation by row-level security

Every business record carries an organization reference, and database policies restrict reads and writes to organizations the signed-in user actually belongs to. Isolation is enforced at the data layer, not in application code.

Role-based permissions

Owner, admin, manager, member and viewer roles are stored in a dedicated membership table and evaluated by security-definer functions — never trusted from the client.

Private evidence storage

Uploaded files live in a private bucket with organization-scoped access paths. Links are signed and short-lived.

Immutable audit trail

Creation, status transitions, assignment changes and verification verdicts are appended to an activity log with actor and timestamp.

Least-privilege by default

New members join as viewers. Escalation is explicit, logged, and limited to admins and owners.