Security
AES-256-GCM at the application layer. PostgreSQL row-level security. AI requests redacted at the boundary. Australian Privacy Act compliance, including the 2024 amendments.
Last updated: 9 May 2026 · For the binding detail, see our Privacy Policy and (for practice tier) Data Processing Agreement.
Infrastructure
Database
Supabase (PostgreSQL) hosted in Sydney (ap-southeast-2). At-rest encryption is Supabase-managed AES-256.
Backend
FastAPI on Render (Oregon). All API requests are processed in-memory and not persisted to Render disk.
Frontend
Next.js on Vercel with Sydney edge cache for AU visitors. HTTPS enforced everywhere; HSTS preloaded.
Payments
Stripe (PCI-DSS Level 1) handles every card transaction. We never see, store, or process your card data — Stripe Checkout posts directly to Stripe, bypassing our backend.
Encryption
In transit
TLS 1.2+ on every connection — to us, to Supabase, to every sub-processor. HSTS prevents downgrade.
At rest (database)
Supabase-managed AES-256 across all stored data, plus AU-region tenancy.
Sensitive fields
Tax File Numbers, dates of birth and MFA secrets are additionally encrypted at the application layer using AES-256-GCM with a 96-bit nonce per write (NIST SP 800-38D). Legacy Fernet ciphertexts (AES-128-CBC + HMAC-SHA256) continue to decrypt for backwards compatibility and are migrated to AES-256-GCM on next write.
Key management
Encryption keys are environment-scoped secrets in the production hosting environment, not in code or version control. Cipher upgrades happen without notice; cipher downgrades require prior notice — see the DPA.
Authentication
AI privacy
AI provider
Frank chat is powered by Anthropic Claude. Document semantic search uses OpenAI embeddings (canonical document types only — receipts and ad-hoc statements are not embedded).
No model training
Anthropic and OpenAI are subject to commercial terms that prohibit them from training their base models on your data. We do not fine-tune any model on customer data.
Redaction at the boundary
A redaction layer sits between our backend and every AI API call. Tax File Numbers, bank account numbers, BSB numbers and Luhn-validated payment-card numbers are substituted with neutral placeholders (e.g. [REDACTED:TFN]) before any inference call — including background calls like conversation title generation and summarisation.
Minimal context
Each AI call gets only the slice of your data the request needs — never your full dataset.
Application
Isolation
Compliance
Monitoring
Backups
Sub-processors
Our complete sub-processor list — with each provider's purpose, recipient location, data hosting region and contractual safeguards — lives in the Privacy Policy. Every sub-processor we use is independently audited: Supabase, Anthropic, OpenAI, Stripe, Render, Vercel and Resend are all SOC 2 Type II attested; Render adds ISO 27001; Stripe adds PCI-DSS Level 1. Practice-tier customers receive at least 30 days' written notice before any new sub-processor is added, with the right to object on legitimate grounds (per the DPA).
Incident response
We follow the Notifiable Data Breaches (NDB) scheme under Part IIIC of the Privacy Act 1988. We assess any suspected breach within the statutory s 26WH window, notify the OAIC and affected users within 72 hours of confirmation, and move immediately to contain and mitigate harm. Pre-confirmation, we may also send Controllers an early-warning notice for security incidents under investigation.
Disclosure
Email security@financefrank.ai with enough detail to reproduce. Please don't publicly disclose before we've had a chance to address it, and don't access or modify other users' data. We acknowledge responsible disclosures within 24 hours and credit reporters who want it.
Reach our security team directly. For practice-tier procurement reviews, we can also share a security questionnaire response on request.
security@financefrank.ai