Automate complaints triage as each complaint arrives
The agent reads each complaint, categorizes it against your taxonomy and notes the response date your policy sets. It routes the complaint to the right team and sends sensitive cases to a person straight away.
Works with
- Custom REST
- Ticketing tool · via Custom REST
- Case system · via Custom REST
and any system with an API via Custom REST
What is complaints triage?
The procedure
Complaints triage happens as each complaint arrives: categorize it against your taxonomy, set the response date your policy gives that category and pass it to the team that handles it. Some need a person straight away, such as complaints that mention circumstances your policy treats as sensitive or claim a loss above your threshold.
What the agent does
Reads each complaint from your ticketing tool
Categorizes it against your taxonomy
Notes the response date your policy sets for that category
Routes it to the right team and updates the ticket
What your team decides
The response to the customer
How a sensitive case is handled, by phone or otherwise
Escalations above your threshold
Any redress or refund
Example runs for complaints handlers, customer operations and compliance teams
Complaints Agent
Categorizes and routes each complaint under your complaints policy.
- API
- +1
Trigger: Inbound webhook · new complaint
From a procedure Complaints · v1.3
Maya
New complaint from a Halden Trading user. Triage it.
Complaints Agent
- Read the complaint from the ticketing tool through Custom REST
- Categorized it as a billing complaint under your taxonomy
- Noted the response date your policy sets for that category
- Routed it to the billing team and updated the ticket
Routed. The complaint is with the billing team, with its category and response date on the ticket.
4 steps · 0 reviews
Complaints Agent
Categorizes and routes each complaint under your complaints policy.
- API
- +1
Trigger: Inbound webhook · new complaint
From a procedure Complaints · v1.3
Lena
New complaint from a Harbor Lane customer. Triage it.
Complaints Agent
- Read the complaint from the ticketing tool through Custom REST
- The message mentions circumstances your policy treats as sensitive
complaint.sensitive_terms.size() > 0 - Handed it to a person straight away, as your policy requires for sensitive cases Waiting for a reviewerTom: assigned to a senior handler, contact by phone
- Updated the ticket with the assignment and the note
Assigned to a person. The case went to a senior handler as your policy requires, and the handler owns the response.
4 steps · 1 review
Complaints Agent
Categorizes and routes each complaint under your complaints policy.
- API
- +1
Trigger: Inbound webhook · new complaint
From a procedure Complaints · v1.3
Diego
New complaint from a Lumen Print customer. Triage it.
Complaints Agent
- Read the complaint from the ticketing tool through Custom REST
- Categorized it as a service failure with a financial loss claimed
- The amount claimed is above your escalation threshold
complaint.amount > policy.escalate_above - Escalated to a person under your complaints policy Waiting for a reviewerMarcus: escalate to your compliance lead
Escalated. The case went to your compliance lead with the category and the source message attached.
4 steps · 1 review
Setting up the Complaints Agent
Connect your systems
Read complaints from your ticketing tool through Custom REST, route and update tickets through the same connection, and keep case notes in Google Drive.


- Custom REST
- Ticketing tool · via Custom REST
- Case system · via Custom REST
Write the rules
Your taxonomy, response timelines and escalation criteria are CEL rules, applied to each complaint as it arrives.
complaint.sensitive_terms.size() > 0Ask a personcomplaint.amount > policy.escalate_aboveEscalatecomplaint.category == "billing"Route to billingAdd reviewers where the procedure says
Sensitive or high-value complaints go straight to a named person, with the message and the category the agent chose.
Review requested: sensitive complaint
- Reason
- Sensitive circumstances mentioned
- Rule
- complaint.sensitive_terms.size() > 0
- Procedure
- Complaints · v1.3
Assign handlerEscalate
Start it from the event
Each new complaint in your ticketing tool starts triage by webhook, and a reopened complaint starts it again. A daily schedule lists complaints nearing their response date.
- Inbound webhook · new complaint
- Daily at 06:00 · complaints nearing their response date
- Inbound webhook · complaint reopened
Version and evaluate
Scenarios such as a billing complaint, one that mentions sensitive circumstances and one above your escalation threshold run against each new version. Publishing waits until they pass.
Complaints · v1.3Published
12/12 scenarios passed
Complaints · v1.2 Superseded
Complaints · v1.1 Superseded
Share with the team
Complaints handlers own the response, senior handlers take sensitive cases, and your compliance team authors the taxonomy. Auditors can read how each complaint was routed and why.
Admin
Author
Reviewer
Auditor
Questions about complaints triage automation
Does the agent reply to customers?
No. Handlers write and send each response. The agent's part ends once the complaint is categorized, dated and routed.
Can we use our own complaint categories?
Yes. Your taxonomy is part of the procedure, and changing a category means publishing a new version.
What counts as sensitive?
Whatever your policy lists. The agent checks each message for those terms, and a match sends the complaint to a person before it is routed anywhere else.
Controls your auditors will ask about
These controls apply to each agent you build. Sample data
Admin
Author
Reviewer
Auditor
Role-based access
Admin, Author, Reviewer and Auditor roles, scoped to each workspace.
- 41
7c2e… - 42
a91f… ← 7c2e - 43
03d8… ← a91f
Hash-chained audit log
Each entry carries the hash of the one before it. Verifying the log recomputes the chain and flags entries that no longer match.
- 41
- v1.1v1.2v1.3Published
Versioned specs
Each run records the exact version it followed; old versions stay readable.
- vault/sumsub/key
Secrets in a vault
Steps point to a vault path, and the key stays in the vault.
- Signed delivery accepted
- Unsigned delivery rejected
Signed webhook triggers
Unsigned or stale deliveries are rejected before a run starts.
- SandboxLive
Sandbox before live
New versions run on test data first. Going live is a separate step.
Related use cases
-
Vendor due diligenceCheck each new vendor's papers, screen the company and its owners and flag gaps for a person.
-

Account closure reviewCheck each closure request against your list of holds, open items and alerts before anyone closes the account.
-


KYC onboarding reviewCheck documents, screen the applicant and apply your risk rules, with a reviewer where the procedure asks.
Run this procedure as an agent
Book a demo with your own version of this procedure, and we'll show it running with each step logged.
Book a demo