ERP support triage agent eliminates the Level-1 backlog
Supervisor-pattern agent integrating Odoo with customer-facing email + chat.
Odoo-based ERP partner · Gujarat · ~60 implementation consultants
What the team was actually solving
Customer support backlog had grown to ~340 open tickets. Level-1 triage took 12–20 minutes per ticket on average, and 35% of tickets were misrouted on first pass — every misroute became a customer-facing escalation churn.
Where the old process broke
- 1Manual ticket classification: 12–20 minutes per ticket across an overwhelmed L1 team
- 235% first-pass misrouting causing avoidable escalation cycles
- 3Inconsistent first responses depending on which consultant picked up the ticket
- 4No structured handoff brief — escalations arrived without context to the senior consultant
The AI / technical solution we shipped
A supervisor-pattern agent that ingests email and form submissions, classifies the issue, queries the customer's Odoo instance for context (open invoices, recent modules, last login, current contracts), drafts a Level-1 response with the right module screenshots inline, and routes complex tickets to the right consultant with a pre-filled handoff brief.
How the system is wired
Technology stack
Integration approach
The agent runs as a Python service alongside the existing helpdesk. Inbound channels (Zendesk / email / form submissions) all funnel through one normalising webhook that calls the agent. Outbound — drafts and ticket updates — goes back through the helpdesk's API so the existing audit trail captures everything.
- Inbound normaliser: Zendesk + email + form submissions to a single event shape
- Odoo MCP server: read-only customer / order / invoice / contract tools
- Helpdesk API: drafts written as agent-attributed comments; humans approve before send
- Operator dashboard: override + audit log in the team's existing helpdesk UI
Security & scalability
Read-only ERP scope
The Odoo MCP server cannot create, update, or delete records. Every mutating action goes through a human-approved helpdesk reply path.
Customer data minimisation
Customer PII only reaches the model where it is required for the response (e.g., addressing the customer by name). Account numbers and invoice details are referenced by ID, not echoed in prompts.
Operator override
Every agent draft is reviewable. Operators can override, edit, or block any reply. Overrides feed back into the eval set as a regression case.
Tenant-scoped tokens
For the partner's multi-tenant ERP customer base, every Odoo call is scoped to the specific customer's tenant.
Delivery process
Discovery (2 wks)
120 historic tickets sampled across categories and customer tiers. Misrouting patterns identified; eval-set seed built.
Architecture (1 wk)
Supervisor pattern over swarm — explicit escalation rules, with a small operator dashboard for override.
Odoo MCP server (2 wks)
Read-only customer / order / invoice / contract tools. Scoped per-tenant. Eval cases against synthetic instances.
Agent + dashboard (2 wks)
Supervisor agent + classifier + drafting logic. Override + audit dashboard in helpdesk UI.
Parallel-run (1 wk)
Agent + human run side-by-side on live tickets. Outputs compared, eval set extended, accuracy thresholds tuned.
Deployment
Python service in the partner's existing container platform. Stateless behind a webhook entry; postgres for the agent's own decision log; redis cache for tenant-scoped tokens. Eval suite runs in CI and can promote/block model upgrades.
- Containerised Python service (existing infra)
- PostgreSQL: decision log + eval results
- Redis: tenant-scoped Odoo tokens (TTL 1 hr)
- CI: eval suite gate on prompt/model changes
Observability
Every ticket touched by the agent has a Langfuse trace with the ticket ID as session key. Operators can click "show trace" from the dashboard to see the agent's reasoning, the tools called, and the cost.
- Per-ticket Langfuse trace, session-keyed to the ticket ID
- Cost per ticket reported in the operator dashboard
- Override rate tracked per category as the leading drift indicator
- Weekly eval-suite refresh from overridden tickets
Before vs after
- L1 triage time per ticket12–20 min
- First-pass misrouting35%
- Open L1 backlog340 tickets
- Cost per L1 ticketLabour-dominated
- L1 triage time per ticket< 4 min (agent)
- First-pass misrouting11%
- Open L1 backlog18 tickets (6 wks)
- Cost per L1 ticket$2.30 (agent-handled)
Automation impact
72% of Level-1 tickets are now resolved without human touch within four minutes of arrival. The escalations that do reach senior consultants arrive with a pre-filled handoff brief — module, customer context, attempted L1 response — so they start their work already 80% of the way through what was previously the first ten minutes.
Business outcomes
The partner reduced L1 staffing requirements by ~60% on the team handling agent-eligible categories and redirected those consultants to implementation work (their highest-margin offering).
What we'd tell another team building this
- 01Customer-tier classification matters more than ticket-type classification. The same "invoice question" is a different ticket from a high-tier customer than a low-tier one — that nuance was missed in v1 and added in v2.
- 02The handoff brief is the most-loved feature with senior consultants. They will defend the agent because the briefs save them ten minutes per escalation.
- 03Eval cases sampled from real overridden tickets beat synthetic adversarial cases for tuning. Drift shows up in real data first.
Future scalability
The same Odoo MCP server is now feeding renewals workflows, onboarding agents, and proactive customer health scoring. Once the canonical MCP server existed, each new agent dropped from 8 weeks to ~2 weeks of engineering.
- Renewals follow-up agent reusing the same Odoo MCP
- Customer-onboarding agent: contract → setup checklist → kickoff scheduling
- Customer-health scoring agent: weekly synthesis from Odoo signals
- Cross-agent eval registry shared with the partner's in-house team
Considering an ERP-integrated agent?
A scoping call covers the ticket / workflow you want to automate first, the ERP scopes you are comfortable exposing, and the expected throughput / cost envelope.
Read what we publish on this
Why every team's first MCP server should be "list-files"
Smallest useful server. Hardest one to mess up. Teaches the protocol without distracting domain logic. The 60-line server we hand to teams during training.
Read the post Tool DesignThe one rule for designing agent tools that actually work
One tool, one purpose. Every tool that does two things will fail you on the third call. I have watched this pattern fail in every team I have trained — and the fix is the same refactor.
Read the post ArchitectureWhy your agent keeps failing after 3 steps
The exit condition problem nobody talks about. Most agents are built for the happy path — where every tool call succeeds and the task completes cleanly. Real production agents are different.
Read the postSolutions & topics worth reading next
Agentic AI Consulting
Designed, built, and handed off — production agentic systems for enterprise teams.
MCP Integration
Custom Model Context Protocol servers that turn your systems into agent tools.
Enterprise AI Architecture
Reference architectures for organisations standing up an AI platform — not one agent, but the foundation for many.
AI Automation for Enterprises
Operational agents that replace manual workflows — triage, support, ERP integration, content pipelines.
Agentic AI
Designing, building, and shipping production agents.
Model Context Protocol (MCP)
The open protocol that gives agents tools.
AI Engineering
The discipline of shipping AI systems, not demos.
Enterprise AI Automation
Operational agents for IT services and enterprise teams.
More implementation proof
Multi-agent research synthesis — open PoC for swarm vs supervisor
An open-source experiment comparing orchestration patterns on a real research task.
Read this case study Enterprise EngagementAudit-grade compliance review ships under multi-layer guardrails
Defence-in-depth controls for regulated document review.
Read this case study