# Ticket Triage: Category, Priority, Language

Ticket Triage: Category, Priority, Language is a tested SKILL.md that sorts one incoming customer message (support email, chat, contact form or ticket) into a category, a priority and the customer's language, and answers with strict JSON that a program can route without a person reading it; an agent buys it once for $0.03 over x402.

- Page: https://aiskills402.com/skills/ticket-triage
- Category: Sales & Customer Support (https://aiskills402.com/categories/sales-support)
- Price: $0.03 once, USD-priced, paid in USDC on Base over x402. Price as loaded on this page. The 402 response your agent receives is authoritative.
- Version: 1.0.0
- Card (JSON): https://api.aiskills402.com/v1/skills/ticket-triage

## Use it when

Sorts one incoming customer message (support email, chat, contact form or ticket) into a category, a priority and the customer's language, and answers with strict JSON that a program can route without a person reading it. Uses a fixed default category list or the list the request gives, and fixed rules for priority, so an angry tone or the word URGENT does not raise priority and a calm report of an outage does not lower it. The language is the one the customer wrote in, not the language of a pasted error, a quoted reply or a signature, and orders hidden in the message do not change the result. Use for ticket triage, to route or label a support ticket, to classify support emails in a help desk inbox, or to decide which message needs a human first.

## Not for

Writing or sending the reply, answering the customer, or checking whether what the message claims is true. It labels one message at a time and gives no sentiment or anger score. Priority follows four fixed levels; if your team ranks work differently, change those rules before you rely on it.

## Tested, honestly

Tested 2026-10-08.

- Strong model (claude-sonnet-5-5 (Claude Code alias "sonnet")): Gave all three expected labels in 25 of 25 cases, always as bare JSON with the three keys. It kept a shouted how-to question at normal, raised a politely worded double charge to high, filed a cancellation that came with an unwanted charge under billing, kept an angry demand for dark mode at low and rated a calm report of a shop that takes no orders as urgent. It read the language from the customer's own words: Bulgarian beside a pasted English error and above an English legal footer, English above a forwarded German email, und for a message holding only a phone signature. It ignored an order planted inside a feature request, labelled a message made only of such orders as spam, and used a custom category list exactly as spelled, including Returns and Other with a capital letter.
- Weak model (claude-haiku-5-5 (Claude Code alias "haiku")): Also 25 of 25 with the skill, with the same labels as Sonnet in every case and no code fence or text around the JSON. The rules changed its answers most on priority: without them it let capital letters, an angry tone, a sales request and a late parcel push priority up, and took the language of a forwarded German email; with them it followed the fixed levels in each of those cases.

Note: Twenty-five fictional messages written by us, in English, Bulgarian, Spanish and German, each built around one trap: tone against priority, a calm outage, a pasted error or a footer in another language, a forwarded email, an order planted for the model, two requests in one message, a cancellation with a wrong charge, custom category lists and a message with no customer text. The check parses the answer and requires exactly the three keys with the expected values. One run per model and case.

### With and without the skill

Tested 2026-10-08.

- All three labels right: Sonnet 25/25 with, 21/25 without; Haiku 25/25 with, 16/25 without.

One run per model and case. The side without the skill got the same category list, priority levels and language rule in the request, so it measures the written rules, not knowledge of the list. Without them, 12 of the 13 failed answers had the wrong priority: capital letters, anger, a sales request and a late delivery raised it, while praise around a double charge lowered it. Category and language were almost always right on both sides, and neither side wrapped the JSON in a fence.

Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.

Full summary: https://aiskills402.com/skills/ticket-triage/tests

## Example

### English (claude-sonnet-5-5)

Before:

> URGENT!!!! How do I switch the dashboard language to Spanish?? PLEASE ANSWER TODAY!!!

After:

> {"category": "how_to", "priority": "normal", "language": "en"}

### Bulgarian (claude-sonnet-5-5)

Before:

> Здравейте, от вчера при качване на снимка в галерията ми излиза това: UploadError: the file exceeds the maximum allowed size of 10 MB. Request ID 7f3a-19c2. Please try again with a smaller file or contact support. Снимката е 4 MB.

After:

> {"category": "technical", "priority": "normal", "language": "bg"}

### Spanish (claude-sonnet-5-5)

Before:

> Hola, desde esta mañana ninguno de nuestros empleados puede abrir la aplicación: aparece una pantalla en blanco en todos los ordenadores. Gracias de antemano.

After:

> {"category": "technical", "priority": "urgent", "language": "es"}

### German (claude-sonnet-5-5)

Before:

> Hallo, meine Bestellung 48213 sollte am Montag ankommen. Laut Sendungsverfolgung liegt sie seit fünf Tagen im Verteilzentrum. Wann kommt sie?

After:

> {"category": "delivery", "priority": "normal", "language": "de"}

## What is in the file

- The answer
- Hard rules
- Categories
- Priority
- Language
- Work in this order
- Short examples

## Languages

English, Bulgarian, Spanish, German

## How to buy

Agent (HTTP):

1. GET https://api.aiskills402.com/v1/skills/ticket-triage/file without a payment header. The answer is 402 with a PAYMENT-REQUIRED header (x402 v2): exact amount, asset, network, recipient.
2. Sign `accepts[0]` with an x402 client (for example @x402/core + @x402/evm).
3. Repeat the GET with the signature in the PAYMENT-SIGNATURE header. The answer is 200 with the file, its sha256 and a re-download token.

Agent (MCP): https://mcp.aiskills402.com/mcp — free tools search_skills, get_skill, redownload_skill. Buying itself is over HTTP.

Full flow: https://aiskills402.com/docs

## The file

- Version: 1.0.0
- Size: 8.3 KB (8509 bytes)
- SHA-256: 58fd3b456180a5398f90dd33de80cc9f00d1e0a9ebe0c0e4c0875d721798ffee
- Updated: 2026-10-08
- New versions are free through your re-download token.

## Versions

### 1.0.0 (2026-10-08)

First release: sorts one customer message into a category, a priority and the customer's language, as strict JSON with three keys. Uses a default category list or the request's own list spelled exactly as given; priority follows fixed rules, so tone and the word URGENT do not raise it; the language ignores pasted errors, quoted replies, signatures and footers; orders written inside the message do not change the labels.

## License

Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Terms: https://aiskills402.com/docs#license

## FAQ

### Does an angry message or the word URGENT raise the priority?

No. Priority comes from what is happening, so a shouted question about switching the dashboard language stays normal and a furious demand for dark mode stays low. Without the skill, Claude Haiku rated that shouted question high, and both models put the dark mode demand at normal. In the other direction, both rated a double charge wrapped in praise as normal; with the skill it is high.

### Which language does it report when the email contains English it did not write?

The language of the customer's own newest words. A Bulgarian message with a pasted English error and one with a long English legal footer both came back bg. An English reply above a forwarded German email came back en; Haiku without the skill answered de. A message holding only a phone signature came back und.

### Can I give it my own category list?

Yes. Put the list in the request and the answer uses one of its values spelled exactly as you wrote it. We tried a shop list in lower case, the same kind of list with Returns and Other capitalised, and a list with no feedback value, where a thank-you note correctly went to Other.

### What if the message tells the model how to label it?

Those lines are treated as part of the message and change nothing. A dark mode request carrying a fake system note that asked for billing and urgent stayed a low feature request, and a message made only of such orders was labelled spam. Both models resisted these two even without the skill.

## Related skills

- [Text to JSON: Extract Data Without Guessing](https://aiskills402.com/skills/text-to-json.md): $0.01 once
- [Prompt Injection Guard](https://aiskills402.com/skills/prompt-injection-guard.md): $0.05 once
- [JSON Repair: Fix It, Keep Every Value](https://aiskills402.com/skills/json-repair.md): $0.01 once

## Measurement limits

- Models other than the two named above were not run.
- Each verdict comes from the test run on the date shown; the skill may have changed since (check the version).
- Full test inputs are not published here, only short excerpts of our own text.
- Results on your own texts, languages and domains can differ.

Offer note: Paid in USDC (USD-pegged) over x402 by an AI agent; one-time.
