Security
Last updated: 18 April 2026
We handle business data — reviews, invoices, contracts, customer conversations. This page is an honest account of how it's protected, what we're actively working on, and what's not yet in place.
Multi-tenant isolation
In placeEvery row of tenant data in the database is scoped by tenant_id and enforced by Postgres Row-Level Security policies. Every query we run sets the tenant context via SELECT set_config('app.current_tenant', $1, true), and the database itself refuses to return rows that don't match. A cross-tenant leak would require a Postgres-level vulnerability, not an application bug.
Encryption
In place- In transit: TLS 1.2+ on every connection (Cloudflare + Vercel + Railway).
- At rest: AES-256 via Supabase disk encryption.
- Sensitive credentials (OAuth tokens to your third-party services): encrypted at the application layer with AES-256-GCM before being stored. Even a compromised database doesn't yield plaintext tokens.
Authentication
In placeClerk manages all authentication. We never see or store passwords. Supported sign-in methods:
- Google, Apple, and Microsoft SSO
- Passwordless magic links
- WebAuthn / passkeys
- SSO (SAML, OIDC) on our Business tier (coming)
Sessions are short-lived JWTs signed by Clerk. Every API call verifies the token server-side against Clerk's JWKS.
Observability & audit
Being hardened- All backend exceptions captured in Sentry with tenant-scoped context (never raw PII).
- Every user action that changes data writes an audit record (who, when, what, before/after).
- All AI outputs — drafts, analyses, decisions — are retained with their full prompt + model + cost for replay and review.
Human-in-the-loop by default
In placeProductiviti agents never send, post, or publish anything without explicit user approval, unless you have intentionally enabled auto-approve for that specific agent. The default is draft + review, even for paid tiers. Approvals are logged with the exact reviewer, timestamp, and edit diff.
Compliance
In progress- SOC 2 Type 1 audit scheduled for Q3 2026
- GDPR-aligned by architecture (DPO available, 30-day deletion, export)
- CCPA-aligned (data access, deletion, opt-out)
- Australian Privacy Act aligned (APP 1-13)
- Industry-specific credentials (AHPRA for health, ABN verification for AU trades) planned for the relevant industry packs.
Operational practices
In place- Code changes reviewed before merge; automated tests on pull requests.
- Secrets managed via platform vaults (Railway + Vercel), rotated on compromise.
- Principle of least privilege on all infrastructure access.
- Database backups with point-in-time recovery.
- Quarterly credentials rotation on shared third-party services.
Report a vulnerability
OpenWe take responsible disclosure seriously. If you find a vulnerability, please email security@productiviti.net with a description and, if possible, a proof of concept. We respond within 48 hours and commit to public credit (if you want it) after a fix ships.
What we don't claim yet
We are a young product. We have not yet completed a SOC 2 audit. We are not HIPAA-covered. We do not have ISO 27001. If your organisation requires any of these, talk to us — we can walk you through our controls, timeline, and current pre-audit documentation.