Skip to content
Operational transparency

What our assistant actually does, counted and published as is

The figures below come from production, not from a brochure. The site counts them itself on every exchange, recomputes them hourly, and publishes them whether they flatter us or not.

No measurement window available yet

Nothing to show at the moment: collection has not returned a single figure yet. That means one of three things — measurement has just been set up, the aggregate table is not wired in yet, or no exchange took place during the window. We would rather write that than fill the board with sample values.

Conversations handled

Not measured yet

A conversation is counted at its first message. A visitor who comes back later opens a new one: we set nothing that would let us recognise them.

Exchanges

Not measured yet

An exchange is one visitor message followed by one assistant reply. It is the unit every rate on this page is computed against.

Median response time

Not measured yet

The delay between sending the message and the first word appearing, not the end of the reply. Half of all exchanges answer faster than this.

Resolved without a human

Not measured yet

Share of exchanges where the assistant answered without pointing the visitor to our contact form.

Handed over to a human

Not measured yet

Share of exchanges closed by an explicit hand-off to contact. That is not a failure: on a quote or an unusual case, it is the right answer.

Average cost per conversation

Not measured yet

What the model provider bills us in tokens, divided by the number of conversations. Excludes hosting and human time.

This page is recomputed every hour from production counters. No value on it is typed in by hand.

How these figures are produced

Every exchange handled by the assistant route increments counters: the language, the outcome among five — answered, handed to a human, invited to create an account, degraded mode, technical failure — and the latency bucket. Nothing else leaves for the database. No event is stored, only one row per day and per language, made of integers.

Latency is not kept measurement by measurement: it is filed into one of twelve buckets, and the median is reconstructed from that histogram. It is therefore accurate to the bucket, and when it falls into the last one, which is open-ended, it is announced as a floor rather than a value.

An exchange counts as handed over to a human when the reply ends with a link to the contact page. That is a mechanical criterion, readable in the code, not a judgement made after the fact.

Cost relies on the token counts the provider declares in its own stream, multiplied by the rate we pay. If the provider declares nothing, or if the rate is not configured, the tile stays empty rather than receive an estimate.

What this page does not measure

No personal data enters these counters, and not merely in the sense that we would not publish it: in the sense that there never is any. No IP address, no session identifier, no measurement cookie, not one sentence of what was written or answered. The table feeding this page holds no events at all — one row per day and per language, made of integers. There is therefore nothing to re-identify, and nothing to delete on request, since nothing in it points to anyone.

Incident log

The assistant's outages and mistakes are recorded here, dated, with what was fixed. A log that only opens once everything is repaired tells a story where nothing ever breaks; this one keeps its entries.

Resolved on July 28, 2026 · Major incident

The assistant quoted prices that had drifted from the published grid

The rates the assistant quoted came from a block of text hand-copied into its instructions and never refreshed. On some services the gap with the published grid reached 72%, so a visitor could leave with a figure that would not have held at quoting time.

Fix: Prices now have a single source, read by the pricing page, the assistant and the product sheets alike. An automated test blocks any deploy where an amount is written anywhere else.

Resolved on July 28, 2026 · Minor incident

Model provider outages were reported to nobody

When the provider refused a request — quota exhausted, key revoked, model withdrawn — the visitor got an unavailability message and that was the end of it. Nobody was alerted, so an outage could last.

Fix: Route failures now surface in monitoring, with the provider name and the language, and never carry the conversation content or the API key.