Security
Built for documents with your name on them.
Bills carry addresses, account numbers, and usage patterns. Here is how Billdial handles them.
Masking on ingest
Any run of six or more digits (account, card, policy numbers) is replaced with its last four before text is sent to a model, and again on every field of the result. The full number is never stored and never sent to your browser.
Encryption at rest
Each audit is sealed with AES-256-GCM under a key derived per user (HKDF-SHA256). Only tracking fields are stored in the clear: category, provider name, month, total, and savings figures.
No files kept
Uploaded bills are read in memory and dropped once the audit is saved. Demo uploads are never saved at all.
Never trained on
We call model providers with training storage turned off and do not train our own models on customer bills.
In transit
HTTPS everywhere with HSTS. Strict security headers on every response.
Accounts
Passwords are hashed with bcrypt. Sessions are signed. Google sign-in is available. Rate limits on every public endpoint.
Deletion
Delete a bill, every bill, or your whole account from Settings. Deletes are real deletes from the database, not soft flags.
Vendors
Hosting on Vercel (US). Model providers for reading bills. Stripe for payments; we never see card numbers. Email delivery for verification and alerts.
Report a vulnerability
Write to security@billdial.org. We acknowledge within two business days and will not pursue good-faith research.