Client tickets.
A deployed ticketing system for an agency's client apps, where AI agents reply and requalify through the same authorization layer as people and every agent action is copied to the whole team. Approval of an agent's write is procedural: the code does not enforce it. It runs as Halo.
Deployed system — this configuration is running in production. Client identities are withheld.
Classified as a system: an arrangement of automations, capabilities and human judgment responsible for an outcome. The outcome belongs to the arrangement, not to any one component in it.
A model produces the input, and everything downstream of it is deterministic. The check that judges the model's output contains no model.
Objective
Let a client report a problem or ask for a change in their own words, give the team the context it would otherwise have to ask for, and let agents work tickets only where everything they send is seen by a person.
Runtime
01
Sign in
Email and a 6-digit code, no password. Access is granted per organization, by domain or by exact address.
02
Report
A guided form: the type, three structured questions and attachments. Browser, OS, screen, language, time zone and date are captured automatically.
03
Authorise
Every query takes an actor and is scoped to the projects that actor may see. One authorization layer serves the interface and the API.
04
Act
An agent calls the maintainer API with a bearer token and acts as the admin who created it, with that admin's rights.
05
Copy
Every agent action appears in the thread under the token's name with an agent badge, is recorded in the event data, and is copied to every admin in English, the agent named as such.
Anatomy
Context
- Organizations and their projects
- Ticket threads and event history
- The client environment captured at submission
- The author's language, English or French
- The admin list
Capabilities
- Open a ticket
- Comment on a ticket
- Change a ticket's status
- Requalify a ticket
- Attach files
- Notify the author in the language they used
Activation
- Client submission through the guided form
- Admin action in the surface
- Agent call to the maintainer API
Authority
What can it change?
- Autonomy
- Recommend
- Horizon
- Client-, admin- or agent-invoked
Read
- Tickets in the projects the actor may see
- Attachments, after an access check
- Every project, for an agent token — it acts as an admin
Write
- Tickets, comments and status
- Requalifications
- Attachments, in a private bucket
Conditional
- An agent writes with the rights of the admin who created its token, while that email stays on the admin list
- Approval of an agent's write is procedural: a person says yes to each write in the agent's own tooling, and the code does not enforce it
Prohibited
- Run a query without an actor
- Serve an attachment before the access check
- Act on a token whose creator has left the admin list
- Send an agent's action without a copy to every admin
Escalate
- Support is reached only by requalifying a ticket
- Every agent action reaches every admin, requalifications included, even without a note
Composition and verification
Made from explicit parts.
Composition
- Next.js on Cloudflare Workers
- Cloudflare D1 database
- Private file bucket, served after an access check
- Email delivery through Mailgun
- Optional Slack messages per admin
- No queue, no cron, no ORM
Verification
- One authorization layer for the interface and the API
- Tokens listed to, and revocable by, the admin who created them only
- Unit tests, browser smoke tests and CI since 2026-10-28
- No read-only token scope and no approval gate in the code — stated here, not implied
No evidence is published for this entry. The items above are our own account of its source, read before publishing — not something you can check without taking our word for it.
Next step
What you can do with this.
This configuration runs in production, client identity withheld. To discuss the same for your operation, start with the problem rather than the system: a first call is thirty minutes and costs nothing.
Related entries