n8n build · running live

An AI inbox triage that still works when the AI doesn't.

Messages come in on a webhook. An LLM labels each one by category and urgency. Code checks the answer before anything trusts it. When the model is down or replies with junk, the messages still get routed and nothing is lost.

Download the workflow JSON Talk about your workflow
n8n canvas: webhook, normalize, LLM classify with an error branch to a rules fallback, validation, an urgency switch, and a JSON response
The production workflow in the n8n editor (self-hosted, n8n 1.123). Every branch below was exercised with real requests.

What breaks most AI automations, handled

Getting a demo to work once is easy. These are the four places a demo usually breaks once it's in production.

The model ignores the format

The LLM request asks for JSON mode, and a Code node then checks every field against an allowed list. Anything off-list goes to a person, never downstream.

The model is down

Three retries, then the error branch runs a keyword classifier. Invoices still go to billing and "ASAP" still pages someone.

Bad input

An empty payload gets a clean 400 invalid_input, not a silent 200 with no body.

Duplicates

Every message gets a stable content hash, so a retry storm or a forwarded copy can be dropped before it reaches the CRM.

Real test runs

Five requests sent to the live webhook on Nov 2, 2026. These are the actual responses.

InboundLabelActionPath
"Pricing for 3 locations?" from a dental groupsales_lead · normal · 0.9queuedLLM
"URGENT checkout is down" (Shopify webhook)support · high · 0.95alert_on_callLLM
"Rank #1 on Google guaranteed!!!"spam · low · 0.9dropped_spamLLM
"Refund ASAP, double charged" with the model unreachablebilling · high · 0.4alert_on_callfallback rules
Empty body—HTTP 400input guard

Adapting it to your stack

  1. Model: the classify node calls any OpenAI-compatible endpoint. To use OpenAI, Claude, Groq or a local model, swap the URL and add a credential.
  2. Source: replace the webhook with a Gmail, Outlook, Intercom or form trigger. The normalize step is the only part that needs to know the shape.
  3. Destinations: the two Set nodes are where Slack, HubSpot, a ticket or an SMS go. Urgent and queued are already split.