Sandboxed parsers
Every AI-generated parser runs in a hardened Docker container with no network, read-only FS, locked-down syscalls, and a 30-second soft timeout. The parser process can't reach your data store, your secrets, or the host.
Six controls that ship in every plan. Diligence-ready under NDA.
Every AI-generated parser runs in a hardened Docker container with no network, read-only FS, locked-down syscalls, and a 30-second soft timeout. The parser process can't reach your data store, your secrets, or the host.
Every query carries an org_id and is filtered by a SQLAlchemy event hook before it leaves the app. Cross-tenant reads are impossible by construction, not by convention.
Passwords and API keys are hashed with Argon2id (m=64MB, t=3, p=4). Plaintext keys are visible exactly once, in the create-key dialog. After that we keep a SHA-256 lookup hash and the Argon2id verifier — never the original.
TLS 1.3 to the API. Postgres at rest is encrypted on Neon's managed disks; object storage uses SSE-S3 on Cloudflare R2.
Every owner-level action — login, key create, member invite, plan change, settings change, file upload, transformation — writes an immutable audit row with a SHA-256 of the previous event. Break one and the chain visibly fractures.
R2 versioning + 30-day lifecycle on every input/output bucket. Daily Postgres pg_dump → R2 with restore drill documented in docs/runbooks/backups-and-restore.md.
SOC 2 Type II report, ISO 27001 certificate, penetration-test summary, sub-processor change feed, DPA. We send under NDA — usually same-day.