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.

your browser ──HTTPS──▶ our server ──HTTPS (redacted text only)──▶ OpenAI │ ├── page search runs on our server (local embedding model) └── the bank's public pages are fetched from the bank's website

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

RecordHoldsWho can see itKept
Numberswhen a chat happened, how many turns, outcome, timing, token use, your ratingthe bank, and us in aggregate across banksindefinitely
Redacted conversationthe question and answer as the model saw them, stand-ins in place of personal detailsthe bank you were chatting with, after a login with a second factor90 days (a bank may shorten it; never more than two years)
Debugging detailprompts, model reasoning, the real values behind stand-insnobody on the hosted service: it is never written therenot stored
Access logevery dashboard login, failed login and conversation view, with who and whenthe bank, on requestone 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

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

Back to the demo