Understanding enterprise privacy standards, ephemeral memory decryption, and why your bank statement data should never train public LLMs.
What "Zero Data Training" Actually Means
Many AI vendors bury in their terms that your uploads improve their models. For a bank statement — with account numbers, IFSC, full transaction history — that is an existential risk: your ledger could surface in another user's completion. Zero Data Training is a contractual and technical promise that no byte of your PDF, extracted table, or chat question is used to fine-tune, RLHF, or store as an embedding outside your account. It is stronger than "we don't sell data" — it means the model owner cannot learn from you at all.
StatementIQ's vector context for chat is scoped to transactions where user_id = $1 with parameterized SQL, and embeddings — if any — are kept in a per-user namespace with a TTL and a delete hook on deleteStatement / deleteAccount.
Ephemeral Memory Decryption
Password-protected PDFs are the sharpest privacy edge. StatementIQ never writes the password to logs, metrics, or error messages. The password arrives over the same TLS 1.3 stream as the PDF bytes, is copied into a Node buffer that is passed to the Python child via stdin (not argv, visible via ps), held in a Python variable that is overwritten after pdfplumber.open, and the temp file at /tmp/stmt-*.pdf is rm -f in a finally block even if parsing throws. After extraction, the only persisted artifact is the normalized table — not the source PDF bytes beyond the encrypted item in Cloudinary or local /uploads, both isolated by prefix check.
Encryption, Compliance & Deletion
At rest: AES-256 for Cloudinary raw resources and for Postgres columns via disk encryption; in transit: TLS 1.3 with HSTS. SOC 2 Type II readiness is reflected in audit logs on Enterprise: every upload, finalize, and delete is timestamped. Most importantly, you can delete any statement or the entire account via Settings → the cascade deletes statements → transactions → chat_sessions → chat_messages plus the remote file via Cloudinary delete-by-prefix.
How to Verify the Claim
Ask your vendor for three artifacts: (1) a DPA clause stating "Customer Data not used to train models", (2) an architecture diagram showing tenant-isolated storage and no cross-tenant vector index, (3) a delete drill with timestamp. Ours is at /security (SOC 2, AES-256, Zero Training) and /privacy §3. If a provider cannot produce them, assume training is happening.