Helpdesk
Triage inbound support: answer what it can, escalate what it cannot, and never promise a refund. It is also the reference product — the smallest complete example of every file kind a product can ship.
What it does
A message arrives on whatever channel you have wired. The agent classifies it — billing, technical, or account — answers the technical ones from the knowledge you seeded, and escalates the other two instead of guessing. Every reply quotes the ticket id, because a support answer without one costs a round trip.
The escalation rule is the point. An agent that guesses about a refund is worse than one that says “this needs a human, I have flagged it”, and the difference between those two behaviours is four lines in a file you can read.
A sample exchange
user I was charged twice for March, ticket 4417.
agent Ticket 4417 — that's a billing question, so I'm escalating it
rather than guessing at your account state. Flagged for the
billing rota now.
user how long until someone looks at it?
agent Ticket 4417 — first response target is 2 hours during business
hours.
The second answer comes from facts/sla.md, a
one-line file. That is the whole mechanism: knowledge is a file
in the group, not a fine-tune and not a vector store.
Why this one is the reference
Every other product in this catalog ships persona and knowledge. Helpdesk ships one of every payload kind that has a consumer, so it is the example to copy when you want to see the whole shape at once:
| File | What it is |
|---|---|
PRODUCT.md | the manifest — name, brand, tagline, env hints. TOML, despite the extension |
PERSONA.md | who the agent is |
CLAUDE.md | operating rules; lands in a marked region so your own text is never touched |
facts/sla.md | knowledge the agent answers from |
skills/triage/ | a skill only this product ships; relocated under .claude/ |
.claude/settings.json | agent settings, merged key by key |
BRANDING.md | anything unnamed: copied whole |
Build a product
walks this exact tree from empty directory to applied, and
tests/lab/product-lab.sh in the repo applies it on a
throwaway instance so you can watch where each file lands.
Who it is for
A team with inbound support that is mostly repetitive and occasionally consequential. It is deliberately conservative: it would rather escalate than be clever, which is the right default when the cost of a wrong answer is a refund dispute.