A three-agent AI support desk: triage, documentation research, reply draft and a human gate
One agent classifies the ticket, a second looks for the answer in your own documentation, a third drafts the reply. Only a reply that passes three conditions at once goes out on its own. A person sees the rest, and every question your docs cannot answer becomes a documentation task.
Author
- Adrian HuniaCo-founder of SEVENEDGE
- Published:
- Last verified:
- n8n version:
- 2.8.4
In short
What it does
- Receives a ticket through a webhook
- Classifies category, severity and sentiment using your definitions
- Searches your documentation and cites only pages it fetched
- Drafts a reply only from the facts that were found
- Lets only confident replies to simple tickets through; a person gets the rest
What it does not do
- Does not send the email itself, it marks the reply as ready
- Never promises timelines, refunds or features
- Never passes a ticket containing a password to the drafting agent
- Does not replace a helpdesk system
What it needs
- n8n with LangChain nodes (tested on 2.8.4)
- An Anthropic API key
- Public product documentation under one base URL
- A Google Sheet and a notification webhook
A three-agent AI support desk: triage, documentation research, reply draft and a human gate
A single agent that receives a ticket and replies straight away does three different jobs at once: it judges how serious the issue is, finds the answer and writes. Each of these fails differently. This n8n workflow splits them across three agents with separate jobs and one gate at the end.

Triage: severity by definition, not by tone
The first agent replies to nothing. It classifies the ticket against the severity definitions you set (from critical to low, plus needs_info). Two rules make the biggest difference:
An angry tone does NOT raise severity. A calm report of total data loss is still critical.
The second: if the ticket is too vague, the agent sets needs_info and lists what is missing rather than guessing.
Research: only pages it actually fetched
The second agent has an HTTP tool that fetches a documentation page and returns its text. It is told to try several phrasings and follow links, up to 5 pages. It may cite only pages it fetched. Anything it inferred goes into a separate inferred_notes field.
If the docs do not answer the question, the agent sets found_answer to false and describes the gap. That is not a failure. Every such gap goes out as a separate notification, a ready-made documentation to-do.
Draft: wording only, no new facts
The third agent writes the reply in the customer's language and to your tone guide. It may not state a fact the research did not find, and it may not promise a timeline, refund or feature. An angry customer gets a shorter, calmer reply, not more apologies.
The gate
A reply goes out automatically only when three conditions hold at once:
| Condition | Value |
|---|---|
| draft confidence | high |
| docs contain the answer | found_answer = true |
| ticket severity | equal to autoSendMaxSeverity (low by default) |
Everything else goes to a person with three links: send as-is, I'll rewrite it, escalate to engineering. Every ticket, whatever the path, is written to the sheet with severity, decision and the draft.
Limitations
The workflow does not send email. The automatic path marks the reply as ready and returns it through the webhook. Sending has to be wired on the helpdesk side or with a mail node.
The webhook responds only after the last step. On the human path that means the system that sent the ticket waits for the click or times out. In production, respond immediately and process the rest in the background.
The research tool fetches any URL the agent comes up with. Restrict it to the documentation domain.
Decision links have no login, and chat apps may open them to build previews. Turn off link previews in the channel that receives these messages.
When it does not make sense
With a few tickets a week and small documentation, replying yourself is faster. The workflow makes sense with dozens of tickets a day, a share of repeat questions, and documentation that exists and is public. We describe how to split work between agents in every agent needs to be told what it does not do. When ticket handling should live inside your helpdesk or panel, that is an AI process automation project.
Take it with you
How to cite this
Adrian Hunia (2026). A three-agent AI support desk: triage, documentation research, reply draft and a human gate. SEVENEDGE. https://sevenedge.pl/en/workflows/obsluga-zgloszen-trzy-agenty-ai (accessed: November 5, 2026)
Sources
- n8n docs — AI Agentn8n docs
- n8n docs — Waitn8n docs
- n8n docs — Structured Output Parsern8n docs
Who is behind this
Adrian Hunia
Co-founder of SEVENEDGE
Co-founder of SEVENEDGE. Designs and deploys business systems for small companies, from production management to time tracking. Works with Next.js, FastAPI and PostgreSQL. SEVENEDGE has no subcontractors — both owners write the code.
Related documents
Other workflows we documented the same way.
- Contract review against your playbook: clause by clause, with a gate for the lawyerA contract lands in a folder, Claude extracts the clauses, an agent assesses each one against your negotiating positions, and code computes the verdict. While writing this up we found a bug in the published version that dropped two of every three assessments. We describe it here along with the fix.
- A writer agent and a critic agent: an n8n loop that ends on a rubric, not on fatigueOne agent writes, another scores the draft against a rubric and house rules, and the loop returns to the writer until the text clears the bar. What matters most here is not the prompts but the three stop conditions, and the rule that the critic may not inflate the score just to end the loop.


