Case study /05 · Private beta
Autonomous Support Agent

Context
LLM support bots that only answer FAQs move no needles; the cost lives in tickets that require account lookups and actions. Tool-using agents can close that class of ticket — if the action layer is engineered with the same care as a payments system.
Problem
An agent with real tools is an agent with real blast radius. The system had to reason over messy customer language, choose correct tool sequences, respect hard policy limits (refund caps, identity checks), recognize its own uncertainty, and escalate with full context instead of failing silently.
Constraints
- Consequential actions (refunds, account changes) carried hard, engine-enforced limits and identity verification requirements.
- Every action needed an audit trail linking conversation, reasoning, tool call and result.
- Escalation to humans had to carry full context — no customer repeats their story.
- The agent had to be evaluated against historical tickets before ever touching a live customer.
Responsibilities
- Agent loop design: planning, tool selection, result interpretation and recovery.
- Typed tool layer over order, account, refund and knowledge systems.
- Policy engine defining allowed, approval-required and forbidden action classes.
- Escalation and handoff flows into the human support queue.
- Simulation harness replaying historical tickets for pre-deployment evaluation.
Architecture
- The agent runs a bounded reasoning loop: classify intent, gather context via read-only tools, propose actions, execute permitted ones, verify results.
- Tools are typed contracts with declared action classes; the execution engine enforces policy mechanically — a forbidden call cannot execute regardless of model output.
- Read paths and write paths are asymmetric: reads are free, writes pass through policy checks, limits and (where required) customer identity verification.
- Conversation state and tool results live in a structured session store, which is also what a human receives on escalation.
- Every step appends to an immutable audit log tying language to action.
Key decisions
- Policy in the engine, not the prompt — the same principle as Phandor, applied to customer operations.
- Uncertainty triggers escalation, not guessing: low-confidence intent or contradictory account state routes to humans early.
- Simulation before production: the agent replayed months of historical tickets, and its proposed resolutions were graded against what actually resolved them.
- Small tool surface first — a handful of reliable tools resolved the bulk of automatable tickets; breadth came later.
Implementation
- Refund and account tools enforce per-customer and per-period caps below the model layer.
- Escalations package the conversation, gathered context and attempted actions into the support desk as a structured case.
- Regression evals run on tool or prompt changes, scoring resolution correctness, policy compliance and escalation precision.
- Response streaming keeps perceived latency conversational while tools execute.
Performance
- Read-tool parallelism keeps account-context gathering inside a conversational pause.
- Session state in Redis keeps multi-turn context retrieval flat under load.
- Bounded loops cap worst-case reasoning cost per ticket.
Outcomes
- An agent that resolves routine account tickets end to end within mechanically enforced policy.
- Escalations arrive with complete context, making the human queue faster too.
- The simulation harness caught policy-violating behaviors before any customer ever saw them.
- [PLACEHOLDER — add resolution rates and volume figures when publishable.]
Lessons
- Agent quality is bottlenecked by tool design more than model choice.
- Escalation is a success path, not a failure path — design it first.
- Replaying history is the cheapest honest evaluation an agent can get.
Software Architecture

