Demo
A support desk that keeps its facts straight
Three small tools for the support team of an invented photo printing lab: a weekly sync that keeps the AI agent’s knowledge in step with the help centre without ever deleting an article, a booking card that works inside the chat, and a panel that shows who the customer is the moment a conversation opens.
This is a simulation. The lab, its help centre, the customer, the calendar and every figure are invented, and no AI model runs here. The runs, the requests and the lookups happen in this page with made-up data and pretend timings; the one real part is the signature, made with a key your browser creates when the page loads. Nothing you type or do leaves your browser or is kept, and reloading the page starts again.
1 Knowledge sync, three weeks replayed
Once a week a scheduler starts a stopped machine. The job lists every article on the help centre’s 6 topic pages, cleans each one to plain text and fingerprints it. A new fingerprint means an update; the same one means nothing is written. An article missing from a run is only flagged. Only if it is still missing the next week is it archived, and even then it is kept, never deleted.
Weekly runs
- Week 1: Not run yet
- Week 2: Not run yet
- Week 3: Not run yet
Run log
- No run yet. Press “Run week 1”.
Knowledge base
- In use
- 0
- Flagged
- 0
- Archived
- 0
Each article is kept twice: as a knowledge article for the team and as a page the AI agent answers from.
Archive file
- Empty. Nothing has been archived.
What the run did
The help centre has 30 articles and the knowledge base is empty. Each run fills this table: the fingerprint the knowledge base held, the one found this week and what the job did.
| Article | Fingerprint | Action |
|---|
Team chat
Each run posts one summary line here.
2 Booking inside the chat
A teammate adds a booking card to the conversation, and the customer books without leaving the chat. Every click is a separate request to a booking service that keeps nothing between requests: what the next step needs travels inside the card’s own data. On confirm the service checks the time again, so a time someone else took in the meantime brings fresh times, not an error.
Chat with the lab
Rosemary, customer
Hi! Could we talk through an album of the photos I took at my sister’s wedding?
Wren, support team
Of course. Pick a time that suits you here:
Booking card
Step 1 of 4: choose a meeting
What the booking service sees
Card data, carried to the next step
{
"step": "type"
}Requests to the service
- Card added to the conversation: the first request drew the meeting types.
3 Customer context beside the conversation
When a teammate opens a conversation, the help desk sends a signed request to a small panel service. It checks the signature over the exact bytes it received, finds the customer’s email in whichever request shape arrived, and asks billing for four things at once. One card comes back. The panel only reads from billing and never writes to it.
Conversation
Rosemary, customer
Hello, my last order says it is on hold. Is something wrong with my account?
Customer panel
Open the conversation to see who you are talking to.
Invoices
Services
Notes
Recent tickets
What happened, in order
- Help desk to Panel service: Conversation opened: a signed request, Waiting
- Panel service: Check the signature over the raw bytes, Waiting
- Panel service: Find the customer in the request, Waiting
- Panel service to Billing: Look up the customer, Waiting
- Panel service to Billing: Services, notes, tickets and invoices, all at once, Waiting
- Panel service to Help desk: One card back, Waiting
Signature
Billing lookups, pretend timings
What the demo shows
- Change detection that ignores formatting. Each article is cleaned to plain text before it is fingerprinted, so an edit to the words updates it and a change to the markup alone does not.
- Nothing deleted by mistake. An article that fails to load looks the same to the job as one that was taken down. Flagging on the first miss and archiving only on the second means a fetch that fails once costs nothing, and an archived article is kept with a notice rather than deleted.
- A run that looks after itself. The machine only exists while the job runs: it is started by a scheduler, waits for its extraction service to be healthy, calls the help desk at a steady pace and waits as long as it is asked to when throttled, saves its state safely, reports to the team chat and powers off.
- A multi step card with no server session. Each click is its own request, and the booking service keeps nothing between them; the card carries its own data. The meeting type is checked against a strict pattern before it can reach the scheduling service, so changed card data is refused.
- Booking races handled. A time that looked free can be gone by the time the customer confirms. The service checks again at that moment and offers the times free now, keeping the customer’s details.
- Signed requests checked over the raw bytes. The signature is a real HMAC SHA-256 over the exact bytes received, compared in constant time after a length check.
- Four lookups at once, one card back. Services, notes, tickets and invoices are asked for together, so the card waits only for the slowest. With the billing extension missing, the client adds the invoices up itself and says so.