Skip to content

The AI assistant

For whoever is running the desk, and agents who use it.

The desk can draft replies, summarise conversations, triage new tickets, answer the first line of a chat, read one message closely, and take instructions in a console. All of it is optional, per brand, and off until you configure it.

The console: a conversation with the desk, with the ticket it is looking at beside it

Providers and keys

Keys are pooled and managed centrally in Settings → AI: Anthropic, OpenAI, Google, and any OpenAI-compatible endpoint with its own base URL and model list, such as Mistral, DeepSeek, Groq, OpenRouter, Ollama, vLLM, a model on your own hardware.

Each brand then picks a key and model separately for drafts, summaries and triage, with one master switch for the brand. So a brand can draft on a large model and triage on a cheap one, or a regulated brand can run entirely on a self-hosted endpoint while another uses a hosted provider.

The console is desk-wide and runs on Claude.

The brand’s voice

Per brand, and it makes more difference than the model choice:

  • Company name and a product primer: a paragraph or two about what you sell. It enters every prompt.
  • House style rules: “never promise a refund”, “use British spelling”, “sign off as the team”.
  • Tones: six built-in, or write your own list.
  • Documentation sites the assistant may consult.

Suggested replies

On the ticket composer and the chat composer. Answer the conversation, or write from a brief you type. Choose a tone and a language (English, match the client, or a named language with an English version beside it for the agent), add instructions, optionally start from a canned response.

It streams as it writes. Then you can refine in place, shorter, longer, more formal, plain English, step by step, fix grammar, translate, and undo. Polish rewrites your reply without changing what it says.

Every draft is checked before you see it, and warnings are shown for: promising money back or credits, committing to a time, quoting an internal note, and anything that looks like a credential. A cheap model can be asked for a second opinion.

Nothing is ever sent to a client automatically. A draft is a draft.

What it is allowed to see

Each switchable per brand: the client’s platform account (services, invoices), their other tickets, similar closed tickets across the brand, matching canned responses and knowledge notes, the agent’s own recent replies (for voice), recent client screenshots as images, and your documentation pages.

How quoted material is handled

Everything the desk did not write (the client’s messages and files, and every retrieved document) is placed between markers carrying a random tag generated for that one request, with any marker-shaped text inside it rewritten. The system prompt says that only lines carrying that tag are boundaries and nothing between them is an instruction.

That is what stops a crawled page, or a client’s message, from telling the model what to do. Pasted keys and certificates are left exactly as written.

Summaries

Manual, automatic when a ticket is opened, or re-queued after each reply. A summary is marked stale when the conversation has moved past it, rather than quietly aging.

Triage

On new tickets, and optionally on client replies, capped per brand per day. It produces: a department prediction with a confidence, urgency, a spam score, topic, sentiment, language, request type, product area, suggested tags from the brand’s own list, identifiers found in the text, and flags for things like credentials in the body, a threat, churn risk, answerable from documentation, abusive, a deadline, a duplicate contact, machine translated.

Triage changes nothing by itself. It is input for rules, which decide what to do with it, and for the agent, who can see it on the ticket.

Reading one message

The Analyse button on any message opens a side sheet where you say what you want done with it, “list every server ID”, “explain this log”, “what are they actually asking for”. Only that message goes to the model: no subject, no other messages, no account data. Select text first and it reads only that passage. Tick “include attachments” and that message’s own files go too, images through the vision path, and text-ish files and PDFs read as text.

Readings are kept on the message, so “Analysed 5 minutes ago” is there when you come back. Each is private until its author ticks Visible to the team, and you can ask follow-up questions, which adds turns to the same reading. Copy it, add it as an internal note, or draft a reply from it.

The console

A command assistant for staff, as a side sheet (⌘K) or a full page: ask about tickets, clients, workload, hours, trends and history, or say what you want done.

It can read: tickets, clients, client history, statistics and trends, department hours, rule activity, knowledge notes. It can act, only after you confirm a proposal shown as a before-and-after: update tickets, bulk update, reply, add a note, create a ticket, merge, trash and restore, manage recipients, and create, pause, resume and delete rules.

It streams its thinking and its tool steps, and has Stop, Try again and Edit. Access is a per-person permission.

Costs and limits

Per-brand daily caps on triage and on message readings. Draft outcomes are recorded as used as-is, edited (with how much survived) or discarded, with per-brand statistics by model and tone, which is the honest way to decide whether a bigger model is worth it.

Every run is listed in Logs → AI.

Advice for switching it on

  1. Start with suggested replies only. Agents keep control and you learn what the model does with your material.
  2. Write the product primer properly before anything else. It is worth more than any setting.
  3. Then triage in shadow: let rules read it without acting for a week.
  4. Then the chat first line, if at all, and only with a hand-over after one or two turns.
  5. Watch Logs → AI and the draft outcome statistics rather than opinions.