How we handle data
This is a demonstration of a bank website assistant. It is not a product of the banks it answers for. Updated 2026-10-15.
What leaves the server, and what never does
Before anything is sent to the language model, personal details in your message are replaced with stand-ins: names, phone numbers, email and street addresses become realistic fakes; the model only ever sees the stand-ins, and the real values are put back only in the answer shown to you. Four things are removed outright and never written anywhere, not even on our own server: passwords and PINs, Social Security numbers, full card numbers and full account numbers.
Only one connection carries anything derived from a conversation: the redacted question, the retrieved page text and the redacted history go to OpenAI to produce the answer. Searching the bank's pages happens on our server with a local model, so your question is not sent anywhere to be searched.
Who sees what
| Record | Holds | Who can see it | Kept |
|---|---|---|---|
| Numbers | when a chat happened, how many turns, outcome, timing, token use, your rating | the bank, and us in aggregate across banks | indefinitely |
| Redacted conversation | the question and answer as the model saw them, stand-ins in place of personal details | the bank you were chatting with, after a login with a second factor | 90 days (a bank may shorten it; never more than two years) |
| Debugging detail | prompts, model reasoning, the real values behind stand-ins | nobody on the hosted service: it is never written there | not stored |
| Access log | every dashboard login, failed login and conversation view, with who and when | the bank, on request | one year |
Our own view across banks is built from daily totals only; our dashboard has no route to a conversation. Every line in every log is chained to the one before it with a SHA-256 hash, so an edit after the fact is detectable. A bank can ask for a conversation to be deleted at any time; its redacted text is removed and the numbers stay.
Service providers
- OpenAI (United States): generates the answers from redacted text. Requests are sent with storage disabled; OpenAI does not use API data to train its models.
- Hosting: one virtual machine on Google Cloud in a United States region once the demo is deployed; on a laptop until then. The embedding model runs on that machine, not at a third party.
No other company receives conversation data. A bank is told before a provider is added or changed.
Cryptography
Every HTTPS connection we terminate negotiates hybrid post-quantum key exchange (X25519MLKEM768) with current browsers, and our connection to OpenAI does too. Data at rest is AES-256. We keep an inventory of our cryptography and can change algorithms by configuration, and we are tracking NIST's plan to deprecate today's public-key algorithms after 2030 and disallow them after 2035, and the G7 banking roadmap's 2035 target. Dashboard logins use a password hashed with scrypt plus a time-based one-time code.
We do not claim "quantum-safe": certificates and signatures on the public web are still classical, and connections we do not control (the banks' own websites, older browsers) may not negotiate the hybrid exchange.
What to expect from the assistant
- It answers from the bank's public website and shows its sources under each answer.
- When the site does not cover something, it says so and points you to a person at the bank.
- It never asks for, and cannot use, a password, PIN, one-time code or account number.
- You are told before your first message that it is automated and who processes your messages.