The guest standing in front of you right now: 10 AI skills for service recovery

complaint-triage

sorts what just landed by what's actually urgent, not who's loudest

How the two work together

Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.

Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.

No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.

Prompt for Claude

---
name: complaint-triage
description: Reads what just came in, a note from a table, a call summary, an email, and sorts it into a fixed category and urgency level before anyone decides what to do. It separates a slow-service grumble from a reaction, a disability refusal, or a data request, because these carry different legal clocks and none is fixed by the same apology. Use the moment a complaint arrives, before any refund, script, or reply is drafted.
---

# The complaint sorted into the right queue, before anyone answers it

Gives one complaint a category, an urgency level, and the next skill to handle it. It does not draft a reply or decide a refund.

## What it does

1. **Checks five categories in a fixed order, stopping at the first match:** safety, access, data, payment dispute, service quality. A reaction mentioned alongside a billing gripe is safety first.
2. **Treats "service" complaints as a contract question.** Section 49 of the Consumer Rights Act 2015 treats a service contract as including a term that "the trader must perform the service with reasonable care and skill." Slow or wrong service goes to refund-vs-goodwill-decision next.
3. **Treats disability-linked complaints as their own category.** Section 29(1) of the Equality Act 2010 bars discriminating "by not providing the person with the service"; section 20 sets the adjustments duty. "Wheelchair," "guide dog" route to accessibility-request-handling, not goodwill.
4. **Treats a data request as a data request.** Article 15 of the UK GDPR gives a right to a copy of personal data, and Article 12A starts a clock the moment it arrives. "Send me everything you have on me" routes to guest-data-request immediately.
5. **Treats a walkout as its own category.** Section 3 of the Theft Act 1978 covers dishonestly making off "without having paid as required... with intent to avoid payment." Routes to walkout-and-dispute-log, a record, not an apology.

## Then it checks

1. Every complaint has one category and an urgency: immediate, same-day, or this-week.
2. Any reaction or illness keyword is marked immediate and routed to allergen-incident-response regardless of anything else said.
3. No disability complaint has been filed as plain service quality.
4. No data or deletion request has been answered as an ordinary complaint.
5. No category is blank, and nothing has been closed at this stage.

Any check fails: name it, redo that step once. Failed twice: say what is wrong and stop.

## Rules
- Public information only. Never invent a fact, a number or a quote. Anything sent in someone's name says whose name it is.
- Never decide a refund, write a reply, or close a complaint here; this skill sorts, it does not resolve.
- Never diagnose a medical condition; a safety keyword is routed, not assessed.
- Never reclassify a disability-linked or data complaint as plain service quality to make it easier to close.
- A sorting aid for the owner or manager to act on; not legal or medical advice.

## Built from
- Consumer Rights Act 2015, s.49, https://www.legislation.gov.uk/ukpga/2015/15/section/49, read 4 Nov 2026: step 2.
- Equality Act 2010, ss.20 and 29, https://www.legislation.gov.uk/ukpga/2010/15/section/29, read 4 Nov 2026: step 3.
- UK GDPR, Article 15, https://www.legislation.gov.uk/eur/2016/679/article/15, read 4 Nov 2026: step 4.
- Theft Act 1978, s.3, https://www.legislation.gov.uk/ukpga/1978/31/section/3, read 4 Nov 2026: step 5.

Prompt for Codex

# complaint-triage

## You are given
Complaint records, each with `complaint_id`, the raw text, the channel (`in-person`, `phone`, `email`, `review`, `social`), the date and time received, and the guest's name if known. Claude's trigger-word lists for each of the five categories, already decided, not invented here. Any previous triage log.

## Produce
Write into a `./complaint-triage-output/` folder:

1. `triage.csv` with columns in this order: `complaint_id`, `received_at`, `channel`, `category`, `matched_keywords`, `urgency`, `routed_to_skill`, `rationale_quote`. `category` is exactly one of `safety`, `access`, `data`, `payment_dispute`, `service_quality`. `urgency` is exactly one of `immediate`, `same_day`, `this_week`. `routed_to_skill` is exactly one of `allergen-incident-response`, `accessibility-request-handling`, `guest-data-request`, `walkout-and-dispute-log`, `refund-vs-goodwill-decision`. `matched_keywords` lists every supplied keyword found, literal and case insensitive, with its position in the text. `rationale_quote` is the exact sentence or phrase from the complaint that decided the category, copied verbatim.
2. `category-order-check.csv` with columns: `complaint_id`, `categories_matched`, `category_assigned`, `order_applied_correctly`. Where a complaint matches more than one category's keywords, list every category matched in the order safety, access, data, payment_dispute, service_quality, and confirm the one assigned is the first in that fixed order. `order_applied_correctly` is `yes` or `no`.
3. `unclassified.md` - every complaint that matched no keyword list at all, listed with its full text, so a human decides the category. Never guess one.
4. `gaps.md` - a numbered list of: any complaint with no category or urgency recorded; any `safety` complaint not marked `immediate`; any complaint where `order_applied_correctly` is `no`; any complaint containing a word from more than one list that was not flagged in `category-order-check.csv`; and every row in `unclassified.md`.

## Rules
- Codex counts, matches supplied keyword lists, and records. It never decides a safety or access keyword, never drafts a reply, never decides a refund, and never diagnoses a condition.
- Matching is literal and case insensitive. Zero matches goes to `unclassified.md`, never force-fitted.
- The fixed order (safety, access, data, payment_dispute, service_quality) is applied exactly as given; never reordered.
- Never mark anything resolved, closed, or refunded; this skill only sorts and routes.
- Every `rationale_quote` is copied exactly, including punctuation and capitalisation.
- British English, GBP, DD Month YYYY dates. No em dashes.
- Every file ends: this is a working sorting record for the owner to act on; not legal or medical advice.

## Return
The absolute path and row count of each file. Complaints by category and urgency. Complaints matching more than one category, and the category assigned, with the rationale quote. Rows in `unclassified.md`. The `gaps.md` item count.

Built from the best public work on this

Sources for complaint-triage

Everything below was opened and read on 4 November 2026.

1. Consumer Rights Act 2015, section 49

https://www.legislation.gov.uk/ukpga/2015/15/section/49, Act of Parliament, read 4 November 2026.

Section 49(1) reads in full: "Every contract to supply a service is to be treated as including a term that the trader must perform the service with reasonable care and skill." Section 49(2) points to section 54 for the consumer's remedies. This is the one sentence that makes a complaint about slow or wrong service a legal question rather than only a hospitality one, and it is why step 2 treats every ordinary service complaint the same way, as a question of whether reasonable care and skill was shown.

Where the skill departs: the section itself says nothing about what remedy follows. That is the job of refund-vs-goodwill-decision, which this skill routes to; complaint-triage only recognises the category.

2. Equality Act 2010, sections 20 and 29

https://www.legislation.gov.uk/ukpga/2010/15/section/29 and https://www.legislation.gov.uk/ukpga/2010/15/section/20, Act of Parliament, read 4 November 2026.

Section 29(1): "A person (a 'service-provider') concerned with the provision of a service to the public or a section of the public (for payment or not) must not discriminate against a person requiring the service by not providing the person with the service." Section 20(3): the duty to make reasonable adjustments requires taking "such steps as it is reasonable to have to take to avoid the disadvantage" a provision, criterion or practice causes a disabled person. These two sections are why step 3 pulls any access-linked complaint out of the ordinary queue: refusing a service to a disabled person, or failing to adjust for one, is a distinct unlawful act, not a quality shortfall to be smoothed over with an apology.

Where the skill departs: the Act's reasonable adjustment test (what counts as "reasonable") is fact-specific and is the job of accessibility-request-handling. Triage only recognises that the complaint belongs there.

3. UK GDPR, Article 15 (Right of access by the data subject)

https://www.legislation.gov.uk/eur/2016/679/article/15, retained EU law as it forms part of UK law, read 4 November 2026.

Article 15(1) gives the data subject the right to obtain from the controller "confirmation as to whether or not personal data concerning him or her are being processed" and, where so, access to that data. A guest asking what personal data, CCTV footage, or booking history a venue holds on them is exercising this right, not making a complaint, and the request starts its own statutory clock the moment it arrives (covered in full in guest-data-request's own sources). Step 4 exists so that clock is not missed because the message was filed as an ordinary complaint.

Where the skill departs: the time limits, the extension rules, and the fee rules under Articles 12 and 12A are the subject of guest-data-request, not repeated here.

4. Theft Act 1978, section 3

https://www.legislation.gov.uk/ukpga/1978/31/section/3, Act of Parliament, read 4 November 2026.

Section 3(1): a person "who, knowing that payment on the spot for any goods supplied or service done is required or expected from him, dishonestly makes off without having paid as required or expected and with intent to avoid payment of the amount due shall be guilty of an offence." A walkout or a disputed charge is therefore a potential criminal matter for the business to record, which is a different job from assessing whether the meal itself was below standard. Step 5 is why these are never filed under service_quality.

Where the skill departs: whether to report a specific incident to the police, and how to log it as evidence, is the job of walkout-and-dispute-log.

Best public prompt we found for this job

The closest public artefact is the `ticket-triage` skill in Anthropic's `knowledge-work-plugins` repository, raw source at https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/main/customer-support/skills/ticket-triage/SKILL.md. The repository has 34,654 stars, read from api.github.com on 4 November 2026. It is a software support-ticket triage skill, and the closest available comparison because the job has the same shape: read an incoming message, assign a category and a priority, and route it before anyone answers it.

Its own description states the job plainly: "Triage and prioritize a support ticket or customer issue... assigning P1-P4 priority, deciding which team should handle it, or checking whether it's a duplicate or known issue before routing." We took that same three-part shape: category, urgency, and a routing target, rather than a single free-text priority note.

We did not copy its P1 to P4 priority scale or its duplicate-ticket detection step. A software bug has a severity that scales with how many accounts are affected and whether there is a workaround; a hospitality complaint's urgency is set by whether someone might be having an allergic reaction right now, which is a binary safety trigger, not a severity score. And a software system can check for duplicate tickets against a database; a table complaint has no such record to check against, so that step has no equivalent here. The bigger difference is that this skill's five categories are each defined by a different area of UK law, not by which internal team owns the queue, which is the one thing no generic ticket-triage prompt can be built to know.

Want this running in your business?

I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.