Trust and security

Uiia is an in-app assistant a product team embeds in their own web app. This page says what it stores, what it does not, what the model can and cannot do, and what we have not built yet. It describes what is running today — not what is planned.

On this deployment the assistant is currently on, and questions may reach Google (AI Studio), Groq, Cerebras, OpenRouter. Nothing else is sent anywhere.

Nothing answers your users until a person approved it

Answers come only from content your own team marked approved at the approval desk. A draft — including one the AI itself wrote — reaches nobody. That filter lives in one function that every answering path goes through, rather than in a rule several places have to remember.

What the model can and cannot do

Sensitive things are removed before anything is stored

Nobody can stop a person typing a card number into a help box. What we can do is decline to keep it, say so at the moment it happens, and leave a record honest enough that you can check the promise rather than believe it.

Two honest limits. Detection favours precision: it would rather miss an exotic format than eat part of a real question, so it is a strong safety net and not a guarantee. And the times on those receipts are real times — if you keep your own web server logs, you could in principle line one up with a visit. We cannot, and we hold nothing that would let us.

Nobody is named unless they chose to be

Uiia is anonymous by default and stays that way unless a person is asked, in plain words, and says yes. Nothing is ever inferred about anybody: your team tags which of your own articles carry an offer, and the assistant simply notices that the article it answered from is one of them. It never decides that somebody sounds like a prospect.

A handoff travels; it does not live here. When a customer has given Uiia somewhere to send enquiries, the address, that one question and the time are posted to their own system and Uiia's copy is deleted the moment it is accepted — usually about a second after it was typed. That is deliberate rather than tidy: a message we successfully handed on and then also kept would carry their obligation and ours, for the same person, for no benefit to anybody. This deployment can do that, and does it as soon as a customer names a destination.

What is kept, and for how long. A handoff with nowhere to go — no destination set, or one that could not be reached — waits on that customer's approval desk and is deleted automatically after 90 days by a nightly job, because a retention limit nothing enforces is a claim rather than a policy. Delivery is retried on widening gaps and then stops; the record stays visible and marked undelivered rather than quietly disappearing, because losing somebody's request for help in silence is worse than any amount of noise about it.

Who to ask. Before any of that, the customer whose app you were using can delete it on request: they are the data controller and Uiia processes on their behalf, so a request to be forgotten goes to them, and they remove it here. There is deliberately no public "delete this address" door — an unverified one would let anyone erase a company's enquiries, and a verified one would mean holding more about a person rather than less.

What is stored, and what is not

StoredNever stored
The help content your team wrote or approved.
The map of places in your app you registered.
Your guided walks.
A count of questions asked per day.
Questions your guide could not answer — the words, scrubbed of anything sensitive, with nobody attached (see below).
A receipt for each removal: what kind, and when.
Whether people found an answer useful, as a tally.
Model cost per day, in fractions of a cent.
A count of pointers that failed, so we can tell you which ones broke.
Your credentials, as one-way hashes — including each person's own.
Each person's name and role, and who approved which article.
For anyone who asked to be contacted: their address, the one question, and when — until it is delivered, which deletes it.
Where a customer's handoffs should be sent, encrypted at rest.
A read-only GitHub token, if you connected one, encrypted at rest.
Questions that were answered.
The answers people get.
Conversations — they live in the browser tab and vanish with it.
Any identifier for the person asking, unless they chose to give one.
Anybody who declined — including the fact that they declined.
Cookies, session recordings, mouse tracking, IP-linked records.
Anything from your app's own database.
Any credential of yours beyond the two above.
Any line of your source code.

The one thing recorded in words, and exactly why. When somebody asks something your approved content cannot answer, the question itself is kept — because "fourteen people asked about SSO and got nothing" is the most useful sentence this product can say to your team, and no counter can say it. Nothing is attached to it: no identifier, no session, no address, no time finer than a date. Repeat phrasings collapse into one row with a count, so it is a tally rather than a log, your team can delete any of it from the approval desk, and once you write the answer the gap disappears.

A question that was answered is never written down at all, and neither is any answer. Conversations live in the browser tab and vanish with it. Nobody can read back what your users asked and got — including us.

Cost cannot run away

Credentials

One customer cannot see another

Every read and write of customer data goes through a single scoped data layer, so a query without a customer's identity on it is not something a developer here can accidentally write. Every table that holds customer data earns an automated proof before it ships: a second real customer, holding the first one's real identifiers and its own valid credentials, gets exactly what a stranger gets.

What we have not done

A security page with no gaps is a marketing page. These are real, current, and the ones a reviewer would find anyway:

Reporting a problem

No disclosure contact is published on this deployment yet. One is published before the first outside customer — until then this is a development service and should be treated as one.