Security overview
A plain-language summary of how PacketProof protects your data. For the engineering detail see our public security model in the docs repository.
Hosting + data location
- App + serverless functions: Vercel, Frankfurt region (`fra1`).
- Database, auth, storage: Supabase EU.
- Billing: Stripe EU billing entity.
- AI inference: OpenAI by default; Azure OpenAI EU available via configuration.
Tenancy + access control
- Per-workspace Postgres Row Level Security on every tenant table.
- Application bugs cannot leak across tenants — RLS is the last line of defence.
- Anti-enumeration on auth, invite, and workspace lookup endpoints.
- Owner / admin / editor / viewer roles with least-privilege defaults.
Data minimisation
- Audit log + notification metadata is PII-safe: identifiers only, never card data, never invite tokens, never raw email local part.
- Evidence files stay in Supabase Storage with workspace-scoped access. Signed URLs expire quickly.
- We never send raw evidence files, source URLs, or storage filenames to the AI provider — only the question, the cited evidence ids and titles, a description of up to 600 characters, and (for text-format evidence only) a single excerpt of up to 1 500 characters of extracted text.
Operational
- Append-only audit log; INSERT/UPDATE/DELETE revoked from app roles at the database privilege layer.
- Stripe webhooks verified by signature; idempotent on event id.
- Internal cron endpoints gated by a constant-time Bearer secret.
- Quarterly secret rotation runbook.
What this is not
PacketProof is preparation tooling. It is not a substitute for legal counsel, an accredited auditor, or a SOC report. We track readiness coverage from the evidence you record — we do not assert framework status on your behalf.
Found a vulnerability? Mail support@packetproof.io with reproduction steps. We respond within five working days.