The workflow running on n8n. The security floor and the confidence check live in parse and guard; human gate routes anything the model is unsure about to a person instead of a reply.Real executions from the 16-ticket production run, unedited. The green rows succeeded, one is parked Waiting on a dispatcher, and the red ones are the two failures that run surfaced: a transient API error and a parser bug. Both were diagnosed and fixed, and the retry and guard that came out of it are in the workflow above.Execution 114, fired 10 August. A front desk clicked a link in a fake payroll email from their bank. Classified P2 security at 0.85 confidence, matched the phishing runbook, drafted a reply that asks the one question that decides whether to reset credentials, and stopped at the dispatcher gate. The run is still sitting there Waiting.
interactive · click and scroll itlive
One real run: phishing report in, P2 classification and a drafted reply out, security floor held.
P2on a phishing report the sender framed as a polite question. 0.85 confidence, runbook matched automatically.
0 sentthe drafted reply is parked at the dispatcher gate. Nothing reaches a client without a signed link.
30 minthe SLA clock the severity sets, written to the ledger with the run.
2 bugsfound by the 16-ticket production run: a thinking block breaking the parser, and burst 5xx errors. Both fixed in the workflow.
What it solves
Triage eats 15 to 25 percent of a service desk's day, and the dangerous case is a calm-sounding security incident filed as routine. A 16-ticket production run through this workflow surfaced two real bugs: Sonnet sometimes prepends a thinking block, which broke a naive content[0].text parse, and burst traffic hit transient API 5xxs. The fixes now in the workflow: a text-block-only parser and retry at 3 attempts with 2-second backoff.
Who it serves
MSP or in-house service desks fielding mixed-severity ticket streams.
Who it is for
Dispatchers and Tier-1 techs who want the reading done but not the deciding.
How it works
Ticket arrivesA webhook catches the inbound ticket and normalizes it into a clean shape.
Severity floor, in codeAnything security-related is forced to P2 or higher before the model runs. A calm phishing report can never be filed low.
Claude classifiesSeverity, category, confidence, and the matching runbook, with the reasoning attached.
Claude drafts the replyA first response in the service-desk voice, specific to the ticket. Drafted, never sent.
Dispatcher approvesOne signed link approves the send. Low-confidence tickets self-queue for a human instead.
Everything logsModel, confidence, severity, and an SLA clock land in a ledger for every decision.
What I would change if I rebuilt it today
The 16-ticket production run surfaced both real failure modes (a thinking block breaking the parser, burst 5xx errors), so those fixes are in. What is still missing is client context. The eval scorecard showed that contract-driven severity, like a law firm's named-partner rule, cannot be inferred from ticket text alone, so I would feed client profiles to the classifier the way Meridian's skeptic already gets them.