Security
How Clavis protects your data
Compliance documents are sensitive by definition. This page lists the controls running in production today, who processes your data, and — just as plainly — what we haven't verified yet. No security absolutes, no vague badges.
In production today
Each of these is enforced in code and covered by automated guard tests.
One exception right now: antivirus scanning is not yet live in this environment. Document uploads are limited to our own team's trusted files while the self-hosted scanner is deployed, and every document record and audit entry names the scan provider — so the state of each file is never ambiguous. The malware-scanning statements below describe the shipped pipeline this mode temporarily stands in for.
Browser sessions cannot write to the database
Signed-in sessions hold read-only database credentials scoped to your organization. Every change goes through a server-side action that re-checks your role and stamps your organization and program — the database itself revokes direct writes, and automated tests fail the build if a write path skips the check.
Tenant isolation on every read
Row-level security policies scope every query to your organization. There is no cross-tenant query path in the product, and AI calls are assembled from a single tenant's data only.
Quarantine-first document handling
Uploaded documents land in a quarantine bucket with no user-facing access — no download, no preview, no parsing, no AI. Only after a malware scan reports clean does a file move to readable storage. Files that fail the scan are deleted immediately and the event is flagged to you.
AI suggests; only you decide
Document analysis is per-document opt-out, and the AI can only propose values for a fixed, reviewable list of profile fields. Every suggestion must quote the document verbatim — the quote is machine-checked — and nothing becomes an answer until a person confirms it. Critical fields can only be confirmed one at a time.
Append-only audit trail
Uploads, scans, suggestions, confirmations, dismissals and attestations are recorded in an audit ledger that even our own service role cannot edit or delete. Audit entries carry metadata only — never document contents.
Short-lived download links
Document downloads use signed URLs that expire after 60 seconds and are only issued for files that passed the malware scan.
Attestations preserve what you saw
When an officer attests the business profile, Clavis stores the exact rendered summary, the attestation wording, the questionnaire version and the answers as an immutable version — so what was agreed to can always be reconstructed.
Subprocessors
The services that process customer data on our behalf.
Vercel
Application hosting and compute
Supabase
Database, authentication and file storage
Anthropic (via Vercel AI Gateway)
AI document analysis — only when AI processing is enabled, and only for documents you allow
What we're still verifying
Security pages tend to overclaim. We'd rather tell you what isn't settled yet:
- AI provider data-retention and model-training terms. Until we have verified them in writing, we make no claims about how prompts are retained or used.
- Data-residency and region configuration across our hosting and database providers. Until verified, we make no residency claims.
- Antivirus scanning. This environment currently runs document intake in an explicit trusted-passthrough mode for our own team's files — no antivirus executes, and every document record and audit entry names that provider. The self-hosted ClamAV scanner replaces it before anyone outside the team uploads.
- An independent third-party security review.