SOPHIA XT

Security

What we keep, what we never keep, and who sees what.

Written for the person at your firm who has to answer for it. Everything here describes the system as it runs today. Where something is planned rather than done, it says so.

The one-line version

Chat messages, AI answers and the values we catch are never stored. Everything in transit is encrypted with TLS, and the AI model receives placeholders, never the client values our rules catch. The only record we keep of a message is who sent it, when, and what kind of thing was caught.

The gate is updated continuously: new rules and identifier formats ship to every firm, and every update must pass our full automated attack suite before it goes live.

How a message is handled

StepWhat happens
1. CheckThe message is read against your industry template. Identifiers with checksums (cards, SSNs, routing numbers, IBANs, VINs) are only counted when the checksum holds.
2. SwapCaught values become numbered placeholders such as [SSN_1]. Passwords, keys and privileged material are stopped outright; nothing is sent.
3. AskOnly the placeholder version goes to the AI model.
4. RestoreThe swap table travels with the conversation sealed (AES-256-GCM, bound to the account). Our server opens it for one request, puts the real values back into the answer, and never writes it to disk or to a log.
5. RecordThe owner's log gets a line: who, when, the outcome and the names of the rules that fired. Never the value.

Controls in place

AreaControlStatus
Encryption in transitHTTPS only, with HSTS. Session cookies are HttpOnly, Secure and SameSite=Strict.In place
Encryption at restStaff names and emails, and the activity trail, are encrypted in the database with AES-256-GCM; sign-in finds an account by a keyed hash of the email. Daily backups are encrypted whole. Keys live outside the data and web folders, readable by the service account only.In place
Sealed swap tableThe table that turns placeholders back into values leaves the server only sealed with AES-256-GCM and bound to one account. Browsers, the extension and API callers hold ciphertext they cannot read, alter or reuse for another account.In place
Passwordsscrypt with a per-user salt. Sessions are random 256-bit tokens; only their hashes are stored.In place
Firm isolationEvery query is scoped to the signed-in user's firm. An automated attack suite checks one firm cannot read or change another's data on every build.In place
Access rolesStaff and owners are separate roles; owner screens are refused to staff by the server, not only hidden.In place
Request safetyStrict content security policy, same-origin checks on every change, request size limits, rate limits on sign-in, sign-up and chat.In place
Audit trailSign-ins, failed sign-ins, staff changes, setting changes and billing changes are recorded. Owners can read their firm's trail.In place
Error monitoringServer and browser errors are recorded after the same scrubbing as chat messages, and new errors alert us immediately.In place
BackupsA consistent copy of the database is made daily; fourteen days are kept, readable by the service account only.In place
Off-site backupsCopies stored with a second provider.Planned
Two-factor sign-inA second factor for owners and for our own admin access.Planned
Names, places, datesA firm's client list is matched exactly and stored only as keyed hashes. Other names, addresses and dates are detected from context, a best effort each firm can set to off, flag or protect.In place
Independent testingA third-party penetration test.Planned

Data we store, and for how long

DataKept
Chat messages and AI answersNever stored
The owner's log (who, when, what kind of thing was caught)400 days
Client listOnly as one-way keyed hashes, until the owner replaces it
Usage counts (messages and AI tokens per month)For billing, while the account exists
Activity trail400 days
Error records (scrubbed)90 days after last seen
Accounts: names, work emails, password hashesWhile the account exists
Daily backups14 days
Card detailsNever; Stripe holds them

Who processes what

ServicePurposeWhat it receives
HostingerHostingThe application and its database
StripeBillingOwner name, email, billing address and card
AI model providerWriting answers, only if your firm uses the built-in chatMessage text with caught values replaced by placeholders
ChatGPT or Claude, through the extensionOnly when your staff use themThe placeholder version of what staff paste or send; the extension restores answers on screen
ntfy.shPhone alerts, if the owner turns them onStaff name and the names of rules that fired; never a value

SOC 2

Safe-Desk has not been audited for SOC 2. We are building to the SOC 2 Trust Services Criteria for security, availability and confidentiality, and the controls above are the first part of that work. The remaining steps are written policies, the planned controls above, a compliance monitoring platform, and then an audit by an independent CPA firm. When a report exists we will say so here, and share it under NDA.

It also does not make your firm compliant on its own. It helps you meet confidentiality obligations by keeping client data out of AI tools and keeping a record.

Report a problem

Found a security issue? Email contactus@sophiaxt.com with "Security" in the subject. We read every report and will not take action against good-faith research.