A classification prompt a support team can trust
The five-part prompt shape I use to classify customer messages with Claude: role, labels, examples, output format and what to do when unsure.
Classification is the first job I give Claude in any support workflow. Read the message, say what it is about, how urgent it is, and which team owns it. It sounds simple. It only works when the brief is written like a spec.
The five parts
01Rolewho is reading and for which team
02Labelsa closed list of intents and priorities
03Examplesa few real messages with the right label
04Formata fixed JSON shape, nothing else
05Unsurea confidence score and a "needs review" flag
Free text vs a closed list
Free-text answer
- "Seems like a delivery issue, maybe urgent?"
- Different wording every time
- Hard to route or report on
- No way to know how sure it is
Closed label list
- intent: delivery.not_collected
- priority: high
- team: ops-delivery
- confidence: 0.94
The line that makes it safe
If the message does not clearly fit one label, set
needs_reviewto true and explain why in one sentence. Do not guess.
That one instruction is what lets the rest of the workflow trust the output. Anything flagged goes to the human review queue instead of being routed on a guess.
Checklist before it goes live
Labels match the team's real queuesnot the ones in an old report
Examples come from last month's inboxreal wording, typos included
The output is parsed, never read by eyea parse failure counts as "unsure"
A daily sample is checked by a personthe labels drift as the business changes