Classify Support Tickets with AI
Billing, Technical, Account, How-To, Feature Request — ticket triage with definitions that decide the borderline cases for the model.
Discovery, Demo, Negotiation, Follow-Up, Closed Won, Closed Lost — classify activity notes by sales stage so pipeline reports stop lying.
Pipeline reports are only as good as the stage labels on activity notes — and reps label inconsistently. This setup classifies CRM notes into six stage labels with definitions that anchor each stage to observable activity ("active discussion of terms, pricing, or contract details" = Negotiation, regardless of what the rep titled the note). Conservative ambiguity fits reporting: choose a label only when the definition genuinely covers the note, and when torn between stages, the closer definition wins — not the more optimistic one.
One note, one label
Single-label mode: a note describing a demo AND price talk gets the primary-purpose rule — what the meeting mainly was.
Anchor stages to activity
The definitions describe what happened, not how the rep felt about it — that's what makes the labels comparable.
Watch the Negotiation drift
Conservative mode plus "the closer definition wins" stops every promising call from being labeled Negotiation.
The edge-case rule picks by primary purpose — "what the writer mainly wants" — so a note that was mostly a demo with some price talk lands on Demo, not both. If two labels genuinely fit equally, the ambiguity policy re-reads both definitions and takes the closer one. It returns exactly one label as JSON, and a human still owns pipeline decisions.
Conservative labeling plus definition-anchoring. Negotiation is defined as "active discussion of terms, pricing, or contract details," and the rules judge by content against that definition, not by the label name or an optimistic read. When torn, the closer definition wins rather than the more hopeful one — the guard against the Negotiation drift the workflow warns about.
It doesn't forecast anything. This labels the past — matching a note against six activity-anchored definitions — not predicting the future; forecasting is explicitly out of scope. The label reflects the model's read of the note text, so accuracy depends on the note and your review. Treat it as normalized stage data for reporting, not a deal-outcome prediction.
Billing, Technical, Account, How-To, Feature Request — ticket triage with definitions that decide the borderline cases for the model.
The blocks a reliable classification prompt needs: defined labels, classification rules, edge-case rules, an ambiguity policy, and a confidence contract.
Praise, Complaint, Feature Request, Bug Report, Question — multi-label feedback categorization where one message can carry three signals.
Free text in, named fields out. The extraction prompt pattern that turns any unstructured text into consistent, parseable records.
Stop getting 'Sure, here is the JSON…' — the output-contract pattern that forces models to return only parseable JSON: schema, example, and a strict rule block.
The JSON won't parse and you can't see why. Deterministic cause-sniffing — trailing commas, single quotes, unclosed brackets — and the repair prompt that fixes it.
Build classification prompts that assign labels from a closed set — with label definitions and edge-case rules.