Customer Support AI Agent System Design Template
Customer support AI agent design: channels, intent routing, policy retrieval, refunds with limits and approvals, human handoff, metrics, safety, audit
使用方法: Use it when you design an AI agent that answers customers and takes actions such as refunds. Fill the action policy with limits (7.2) and the mandatory handoff triggers (7.3) first, and agree them with finance and support leads. The main pitfall is measuring deflection instead of verified resolution, which hides customers who give up and call back.
预览
System Design: [Customer support AI agent name]
Reference design for an AI agent that handles customer support conversations across chat, messaging and email: it identifies intent, answers from the knowledge base, takes bounded actions such as refunds with limits and approvals, hands off to human agents with full context, and records every decision for audit. It covers channels, intent and routing, knowledge retrieval, tool actions, human handoff, conversation state, deflection and CSAT metrics, safety and escalation, and audit. Oversight follows the four dimensions of Singapore's Model AI Governance Framework for Agentic AI (IMDA, launched 22 January 2026; current Version 1.5, published 20 May 2026, updated 5 June 2026); threats are mapped to the OWASP Top 10 for LLM Applications 2026. It follows the 12-section skeleton of the System Design Document template and is pre-filled with a worked design for an online retailer to adapt. Replace every
[bracketed]value and every row marked Example; all numbers are illustrative examples, not benchmarks. This is a documentation format, not legal advice.
Document control
| Field | Value |
|---|---|
| Document ID | [SDD-SUPPORT-001] |
| System / feature | [Customer support AI agent] |
| Version | [0.1] |
| Status | [Draft / In review / Approved / Implemented / Superseded] |
| Author(s) | [@author] |
| Reviewers | [@reviewer-1], [@reviewer-2] |
| Last updated | YYYY-MM-DD |
| Classification | [Internal] |
| Channels in scope | [Web chat, in-app chat, messaging apps, email] |
| Actions in scope | [Order status, address change, cancellation, refund up to limit, return label] |
| Jurisdictions | [Countries where customers are served] |
| Related | [AI agent specification], [Agent tool permission design], [Human oversight design], [Guardrails spec] |
Approvals
| Role | Name | Decision | Date |
|---|---|---|---|
| Head of customer support | [@name] | [Approved / Changes requested] | YYYY-MM-DD |
| Tech lead, support platform | [@name] | [Decision] | YYYY-MM-DD |
| Finance (refund limits) | [@name] | [Decision] | YYYY-MM-DD |
| Security and privacy | [@name] | [Decision] | YYYY-MM-DD |
| Legal and compliance | [@name] | [Decision] | YYYY-MM-DD |
Revision history
| Version | Date | Author | Change summary |
|---|---|---|---|
| 0.1 | YYYY-MM-DD | [@name] | First draft for design review |
| 0.2 | YYYY-MM-DD | [@name] | Example: Automatic refund limit set to USD 50 per order and USD 150 per customer per 30 days |
| 0.3 | YYYY-MM-DD | [@name] | Example: Added vulnerability signals that force human handoff |
| 1.0 | YYYY-MM-DD | [@name] | Example: Approved |
Contents
1. Overview
1.1 Problem statement
[Example: The support team handles 1.2 million conversations a month. About 60% are order status, returns and simple refunds that follow written policy. Median first response time in peak season is 9 hours, CSAT has fallen for three quarters and seasonal hiring cannot keep up. A rule-based chatbot answers only 12% of conversations and frustrates customers who cannot reach a person.]
1.2 Proposed solution
[Example: An AI agent on every text channel that identifies the customer, classifies intent, answers from the versioned policy and help-centre knowledge base with citations, and calls order system tools to check status, change addresses, issue return labels and refund. A deterministic policy engine approves refunds within set limits and sends larger ones to a human approval queue. The agent hands off to a human whenever the customer asks, when confidence or policy coverage is low, or when safety signals appear, passing a summary so the customer never repeats themselves. Every model turn, tool call and decision is logged for audit.]
The agent never: [Example: changes payment methods, issues refunds above its limit without approval, makes promises not in published policy, discusses legal claims, or hides that it is an AI.]
1.3 Decisions requested from reviewers
| ID | Question | Recommended option | Section |
|---|---|---|---|
| Q-01 | Example: Who decides a refund: the model or a policy engine? | Policy engine with limits; model only proposes | 7.2 |
| Q-02 | Example: Automatic refund limit? | USD 50 per order, USD 150 per customer per 30 days | 7.2 |
| Q-03 | Example: When is handoff mandatory? | Customer request, two failed attempts, safety or vulnerability signals, legal or complaint keywords | 7.3 |
| Q-04 | Example: Primary success metric? | Verified resolution rate (no recontact within 7 days), with CSAT as guardrail | 9.3 |
| [Q-nn] | [Question] | [Option] | [Section] |
1.4 45-minute interview path
| Minutes | Cover | Output on the whiteboard |
|---|---|---|
| 0 to 5 | Channels, top intents, which actions, what must never happen | 2.1 and 2.3 |
| 5 to 10 | Conversation volume, concurrency, handoff and refund volumes | 3.6 with consequences |
| 10 to 15 | Conversation and message API; data model with access patterns | 4.1 and 5.2 |
| 15 to 25 | Diagram: channel adapters, orchestrator, intent, retrieval, tools, policy engine, handoff, audit | Section 6 |
| 25 to 40 | One deep dive: refund action policy (7.2) for a payments or risk panel; handoff and state (7.3) for a contact-centre panel; grounding on policy (7.4) for an ML panel | Options, choice and reason |
| 40 to 45 | Metrics that prove value, failure modes, 10x row | 9.3, 9.1 and 10 |
2. Requirements
2.1 Core functional requirements
| ID | Requirement | Priority |
|---|---|---|
| FR-01 | Example: Web chat, in-app chat, two messaging apps and email through one conversation model | Must |
| FR-02 | Example: Identify and verify the customer before any account-specific answer or action | Must |
| FR-03 | Example: Intent classification and routing to agent, specialised flow or human queue | Must |
| FR-04 | Example: Answers grounded in the versioned policy and help-centre content, with links | Must |
| FR-05 | Example: Tools: order status, address change before dispatch, cancellation, return label, refund within limits | Must |
| FR-06 | Example: Human handoff on request at any point, with a summary and the full transcript | Must |
| FR-07 | Example: Disclose at the start that the customer is talking with an AI system | Must |
| FR-08 | Example: Approval queue for actions above limits, with decision returned to the conversation | Must |
| FR-09 | Example: Post-conversation CSAT survey and recontact tracking | Should |
| FR-10 | Example: Multilingual support in [languages] | Should |
| [FR-nn] | [Requirement] | [Must / Should / Could] |
2.2 Non-functional requirements
| ID | Quality | Target | Measured as |
|---|---|---|---|
| NFR-01 | Response time | Example: p95 at or below 6 s per agent reply on chat; email reply within 15 min | Orchestrator timing |
| NFR-02 | Policy correctness | Example: At or above 98% of policy answers match the policy version in force, on the audit sample | Weekly human review of 500 conversations |
| NFR-03 | Action correctness | Example: Zero refunds outside policy limits; zero duplicate refunds | Reconciliation against the payment ledger |
| NFR-04 | Handoff | Example: Handoff on request within one turn; customer never asked to repeat order details | Transcript review |
| NFR-05 | Availability | Example: 99.9% monthly; on failure, conversations route to humans | SLO |
| NFR-06 | Privacy | Example: Payment card data never enters the model context; transcripts retained [period] | Data flow audit |
| NFR-07 | Audit | Example: Every action traceable to conversation, model version, policy version and approver | Audit sample |
| [NFR-nn] | [Quality] | [Target] | [Measurement] |
2.3 Below the line (out of scope)
- [Example: voice calls (see Real-Time Voice Agent System Design (
system-design/design-voice-agent))] - [Example: outbound proactive messages and marketing]
- [Example: complaints that are formal regulatory complaints; routed to the complaints team without agent handling]
- [Example: agent-initiated changes to payment instruments or account ownership]
- [Item deferred, with the release that will take it]
3. Capacity estimation
3.1 Assumptions
All values are Example planning inputs.
| Input | Value | Source |
|---|---|---|
| Conversations per month | 1.2 million | Contact centre reports |
| Share in the busiest hour of the day | 10% | Contact centre reports |
| Mean conversation duration (chat) | 8 min | Contact centre reports |
| Customer turns per conversation | 6 | Pilot |
| Model calls per turn | 2 (understand and plan, then respond) | Design |
| Input / output tokens per model call | 8 000 / 250 | Pilot |
| Share handed off to humans | 50% at launch | Pilot |
| Human handle time after handoff | 10 min | Contact centre reports |
| Conversations requesting a refund | 8% | Contact centre reports |
| Refund requests within the automatic limit | 70% | Order data |
| Human cost per conversation | USD 4 (Example) | Finance |
3.2 Conversation load
Per day: 1.2 million / 30 = 40 000 conversations. Busiest hour: 4 000 conversations. Concurrent conversations at that hour: 4 000 x 8 / 60, about 533.
Consequence: the orchestrator must hold conversation state outside the process (533 concurrent at peak, many idle between customer turns), so any instance can serve the next turn.
3.3 Model tokens and cost
Model calls per day: 40 000 x 6 x 2 = 480 000. Input tokens: 480 000 x 8 000 = 3.84 billion; output: 480 000 x 250 = 120 million. At Example prices of USD 2 per million input and USD 8 per million output: 7 680 + 960 = USD 8 640 per day, about USD 0.22 per conversation.
Consequence: model cost is small next to human cost (USD 4 per conversation). Optimise for correct resolution and safe handoff, not for token savings; use a larger model where it improves policy accuracy.
3.4 Human handoff load
Handoffs per day at 50%: 20 000. Busiest hour: 2 000 handoffs. Human agents needed in that hour: 2 000 x 10 / 60, about 333 concurrent, before occupancy and shrinkage factors.
Consequence: the handoff rate drives staffing more than any other number. Workforce planning uses the agent's forecast handoff rate by intent, and the handoff queue must expose estimated wait time so the agent can tell the customer.
3.5 Refund actions
Refund requests per day: 40 000 x 0.08 = 3 200. Automatic: 2 240. Sent for approval: 960, about 96 per hour over a 10-hour approval window.
Consequence: finance needs an approval queue staffed for about 100 decisions per hour with a 2-hour target, and the payment system must accept idempotency keys so a retried tool call never pays twice.
3.6 Summary
| Quantity | Estimate | Design consequence |
|---|---|---|
| Concurrent conversations at peak | About 533 | Externalised conversation state; stateless orchestrator |
| Model cost | About USD 0.22 per conversation (Example) | Spend on accuracy, not on cheaper models |
| Human agents at peak | About 333 concurrent at 50% handoff | Handoff rate is the main business lever; forecast by intent |
| Refund approvals | About 96 per hour | Approval queue with SLA; idempotent payment calls |
4. API design
4.1 Endpoints
| Method and path | Purpose |
|---|---|
POST /v1/conversations | Open a conversation from a channel adapter (channel, customer hint, locale) |
POST /v1/conversations/{id}/messages | Customer message in; agent reply streamed or posted back to the channel |
POST /v1/conversations/{id}/handoff | Request human handoff (customer, agent or system initiated) |
GET /v1/conversations/{id}/summary | Summary and structured facts for the human agent desk |
POST /v1/approvals/{id}/decision | Approver accepts or rejects a pending action |
POST /v1/conversations/{id}/csat | Survey response |
Internal: POST /tools/refunds | Refund with idempotency key, order ID, amount, reason code |
4.2 Tool contract example
The model fills the proposal; the orchestrator adds identity and the idempotency key and passes it to the policy engine, never directly to the payment system.
{"tool": "propose_refund", "arguments": {"order_id": "[order id]", "items": ["[sku]"], "amount": 34.90, "currency": "USD", "reason_code": "item_damaged", "evidence": ["photo_uploaded"]}}
{"decision": "auto_approved", "policy_rule": "RF-02", "policy_version": "[version]", "refund_id": "[id]", "idempotency_key": "[conversation id]:[order id]:[sku]"}
4.3 Errors and outcomes
| Outcome | Meaning | Agent behaviour |
|---|---|---|
auto_approved | Within limits and policy | Confirm to customer with refund ID and timing |
needs_approval | Above limit or risk flag | Tell customer it is under review with expected time |
rejected_policy | Outside policy | Explain the policy with a link; offer handoff |
identity_required | Customer not verified | Run verification flow |
tool_unavailable | Downstream error | Apologise, create a follow-up task, offer handoff |
5. Data model
5.1 Entities
The conversation is the unit of state; actions and approvals hang off it and reference the policy version that allowed them.
5.2 Access patterns
| Query | Served by | Partition key and rationale |
|---|---|---|
| Load conversation state for the next turn | Key-value store by conversation_id | conversation_id: single-row read on every turn, spread evenly |
| Append a message | Message table by conversation_id, sorted by sequence | Same key keeps one conversation on one partition |
| Customer's recent conversations (recontact detection, context) | Secondary index on customer_id and time | customer_id: used at conversation start and for metrics |
| Refunds for a customer in the last 30 days (limit check) | Action table indexed by customer, kind and time | customer_id: the limit is per customer |
| Pending approvals by queue | Approval table indexed by status and queue | Queue: approvers work one queue |
| Audit: all actions under a policy version | Warehouse table partitioned by date | Date: audits sample by period |
5.3 Storage choices
| Data | Store | Notes |
|---|---|---|
| Conversation state | Key-value store with TTL after close | Hot path |
| Messages and turn traces | Document store, then warehouse | Retention per policy; redaction of personal data in analytics copies |
| Actions and approvals | Relational database | Strong consistency for limit checks and idempotency |
| Knowledge base | Versioned content store plus retrieval index | Each article and policy carries version and effective date |
| Audit log | Append-only, write-once storage | Tamper evident; retained [period] |
6. High-level design
| Component | Responsibility | Scales by |
|---|---|---|
| Channel adapters | Normalise messages, attachments and typing indicators; channel-specific limits | Per channel |
| Orchestrator | Turn loop, state, tool calls, budgets, handoff decisions | Horizontally, stateless |
| Intent and safety classifier | Intent, sentiment, vulnerability and legal signals | Horizontally |
| Agent model | Understand, plan, draft replies, propose actions | Model pool |
| Knowledge retrieval | Policy and help content by version and locale | Index replicas |
| Policy engine | Deterministic rules for actions and limits | Horizontally |
| Approval queue | Human decisions for actions above limits | Staffing |
| Handoff router | Pick queue by intent, language, skill; pass summary | Horizontally |
| Audit log | Immutable record of turns, actions and decisions | Append throughput |
7. Detailed design
7.1 Turn flow
One refund conversation that ends with a handoff request. The model never calls the refund service; the policy engine does, after its checks.
7.2 Deep dive 1: tool actions with limits and approvals
| Option | Strengths | Weaknesses |
|---|---|---|
| A. Model calls the refund API directly with instructions about limits | Simple | Limits enforced by prompt only; prompt injection or error leads to unbounded refunds |
| B. All refunds go to humans | Safe | No improvement for the largest intent |
| C. Model proposes; deterministic policy engine decides within limits; humans approve above | Bounded, auditable, fast for the common case | Policy rules to maintain |
Choice: C. Reason: money decisions need deterministic, testable rules with an owner; the model is good at understanding the request and gathering evidence, not at enforcing limits.
| Rule | Condition (Example) | Decision |
|---|---|---|
| RF-01 | Customer not verified | identity_required |
| RF-02 | Amount at or below USD 50, order delivered within 30 days, reason in approved list, customer 30-day refund total including this refund at or below USD 150 | auto_approved |
| RF-03 | Amount above USD 50, or customer 30-day refund total including this refund above USD 150 | needs_approval |
| RF-04 | Order flagged by fraud scoring | needs_approval, fraud queue |
| RF-05 | Outside the return window and no exception reason | rejected_policy |
| RF-06 | Same order and item already refunded | Return existing refund ID (idempotent) |
The policy engine reads the customer's 30-day total and records the new action in one database transaction that locks the customer's limit row, so two concurrent proposals (for example, from chat and email at once) cannot both pass RF-02.
Tool permission design follows Agent Tool Permission Design Template
(ai-data/agent-tool-permission-design). Read tools (order status) need
verified identity; write tools (address change, cancellation, refund) go
through the policy engine; no tool can change payment methods.
7.3 Deep dive 2: human handoff and conversation state
| Option | Strengths | Weaknesses |
|---|---|---|
| A. Transfer the transcript only | Simple | Human reads the whole transcript; customer often repeats themselves |
| B. Transfer transcript plus a structured summary and facts (customer, order, intent, actions taken, what is pending) | Fast pick-up | Summary can be wrong |
| C. B plus the agent stays as a silent assistant for the human | Fast and helpful | More complex desk integration |
Choice: B at launch, C later. Reason: B fixes the main complaint (repeating details) and the summary is checked against structured facts from tools, not only model text.
Mandatory handoff triggers:
| Trigger | Detection | Queue |
|---|---|---|
| HO-01 (Example) Customer asks for a person | Intent classifier or keywords, any language | General, by language |
| HO-02 (Example) Two failed attempts on the same intent | Turn counter in state | Skill queue for the intent |
| HO-03 (Example) Vulnerability signals (bereavement, financial hardship, health crisis, self-harm) | Safety classifier | Specialist queue; self-harm uses the crisis script |
| HO-04 (Example) Legal threat, formal complaint, regulator mention | Classifier | Complaints team |
| HO-05 (Example) Policy retrieval finds no applicable policy | Retrieval confidence below threshold | General |
| HO-06 (Example) Agent service degraded | Health checks | All new conversations go to humans |
Conversation states: bot_active, awaiting_customer, awaiting_approval,
queued_for_human, human_active, closed. Only one actor (bot or human)
may write to the customer at a time; the state machine enforces it so the
bot never replies after a human has taken over.
7.4 Deep dive 3: grounding on versioned policy
| Option | Strengths | Weaknesses |
|---|---|---|
| A. Policies in the system prompt | Simple | Grows without bound; stale after edits; no citations |
| B. Retrieval over help-centre articles | Covers many topics | Marketing pages and policies mixed; old versions indexed |
| C. Retrieval over a curated, versioned policy store with effective dates, plus help articles ranked below policy | Correct version, citable | Content operations needed |
Choice: C. Each policy chunk carries policy_id, version,
effective_from, locale and market. Retrieval filters by market and
date; the answer cites the policy link; the policy version is logged with
the turn. When retrieval finds no policy for a question about rights or
money, the agent says it will check and hands off (HO-05) rather than
improvising. Retrieval design follows RAG System Design Template
(ai-data/rag-system-design).
7.5 Safety, disclosure and oversight
- AI disclosure. The first message states that the customer is talking
with an AI assistant and how to reach a person. In the EU, Article 50(1)
of the AI Act (Regulation (EU) 2024/1689) requires that people are
informed when they interact with an AI system unless it is obvious; it
applies from 2 August 2026 (check the consolidated text). See AI Content
Transparency Plan Template (
ai-data/ai-content-transparency-plan). - Guardrails. Input and output checks (personal data, abusive
content, off-topic, promises outside policy) per Guardrails Specification
Template (
ai-data/guardrails-spec). - Automated decisions. Where a refusal is fully automated and has a significant effect on the customer, check data protection rules on automated decision-making for each market and offer human review.
- Oversight. The table maps the design to the four dimensions of the
Model AI Governance Framework for Agentic AI (IMDA, Singapore, launched
22 January 2026), paraphrased. Detailed oversight design belongs in Human
Oversight Design Template (
ai-data/human-oversight-design).
| Framework dimension (paraphrased) | How this design meets it |
|---|---|
| Assess and bound risks up front: choose suitable use cases, limit autonomy and access to tools and data | Narrow tool list; no payment method changes; refund limits in the policy engine (7.2) |
| Make humans meaningfully accountable: named owners and checkpoints that need human approval | Business owner per action; approval queue above limits; handoff triggers (7.3) |
| Technical controls and processes across the lifecycle: testing, access control, monitoring | Pre-release evaluation, guardrails, audit log, drift monitoring (9.3) |
| Enable end-user responsibility: transparency, education | AI disclosure, policy links, easy route to a person (7.5) |
7.6 How real systems do it
How real systems do it (paraphrased from Moffatt v. Air Canada, 2024 BCCRT 149, British Columbia Civil Resolution Tribunal, 14 February 2024). A customer relied on an airline website chatbot that described a bereavement fare refund process that differed from the airline's published policy page. The airline argued it was not responsible for what the chatbot said. The tribunal disagreed: the chatbot was part of the airline's website, the airline was responsible for all information on it, and the customer had no reason to think one part of the site was more reliable than another. It found negligent misrepresentation and ordered the airline to pay the difference in fare plus interest and fees. Design lesson: the organisation owns what its agent says. Ground answers on the current policy version, cite it, and hand off when no policy applies (7.4).
8. Scalability and performance
| Concern | Approach | Limit before redesign |
|---|---|---|
| Seasonal peaks (several times normal volume) | Stateless orchestrator, autoscaling, model provider quota reserved | Model provider rate limits |
| Human queue overflow | Estimated wait shown; callback or email follow-up offered; bot keeps simple intents | Staffing |
| Email backlog | Batch processing with priority by intent and customer tier | Model throughput |
| Knowledge updates | Index rebuild per policy publish, minutes not days | Content team throughput |
Chat reply latency budget (target p95 6 s, Example):
| Step | Budget |
|---|---|
| Channel adapter and state load | 150 ms |
| Classifier | 150 ms |
| Retrieval | 300 ms |
| Model call 1 (understand, plan, tool choice) | 2 000 ms |
| Tool and policy engine | 500 ms |
| Model call 2 (reply) with streaming where the channel allows | 2 000 ms |
| Headroom | 900 ms |
Send a typing indicator on channels that support it while tools run.
9. Reliability, security and operations
9.1 Failure-mode table
| Component | Failure | Detection | Blast radius | Mitigation | RTO |
|---|---|---|---|---|---|
| Agent model | Outage or high latency | Error rate, p95 latency | All bot conversations | Route new conversations to humans (HO-06); existing ones get a holding message | 5 min |
| Policy engine | Unavailable | Health check | No write actions | Agent continues with read-only help; actions queued as follow-up tasks | 15 min |
| Refund service | Timeout after request sent | Tool timeout | Possible duplicate refund on retry | Idempotency key; query status before retry | 15 min |
| Knowledge index | Stale after policy change | Version check against content store | Wrong policy answers | Index version pinned per publish; block answers when index lags | 30 min |
| Handoff router | Queue full | Queue depth | Long waits | Callback offer; overflow to partner team | 30 min |
| Channel adapter | Messaging app outage | Delivery failures | One channel | Suggest alternative channel; retry delivery | Provider SLO |
9.2 Security
| ID | Threat | OWASP 2026 | Control |
|---|---|---|---|
| SEC-01 | Customer text, an uploaded document, an inbound email, a help article or a tool result (for example, a free-text order note) instructs the agent to refund or reveal data | LLM01:2026 Prompt Injection | All such content enters the prompt as untrusted data, never as instructions; policy engine decides; identity verified by tools, not by what the customer claims |
| SEC-02 | Agent reveals another customer's orders | LLM02:2026 Sensitive Information Disclosure | Tools scoped to the verified customer ID; no free-form database access |
| SEC-03 | Agent takes actions beyond its role | LLM03:2026 Excessive Agency | Narrow tool list, limits, approvals (7.2) |
| SEC-04 | Customers extract refund thresholds and fraud rules from the prompt | LLM08:2026 Hidden Context Exposure | Thresholds live in the policy engine, not in the prompt |
| SEC-05 | Token flooding or bot traffic raises cost | LLM06:2026 Unbounded Consumption | Rate limits per customer and channel; turn caps |
| SEC-06 | Agent states a policy that does not exist | LLM07:2026 Misinformation | Versioned policy retrieval, citations, handoff when none applies |
| SEC-07 | Account takeover through the chat channel | Not LLM-specific | Step-up verification for write actions; same rules as human agents |
| [SEC-nn] | [Threat] | [OWASP ID] | [Control] |
Payment card data never enters the model context: card fields in channels are masked by the adapter, and refunds return to the original payment method by reference.
9.3 Metrics
Define each metric so it cannot be improved by hiding problems.
| Metric | Definition | Target (Example) |
|---|---|---|
| Verified resolution rate | Conversations closed by the agent with no recontact on the same intent within 7 days | At or above 45% at launch |
| Deflection (containment) | Conversations closed without a human; reported only next to verified resolution | Context only |
| False resolution rate | Agent-closed conversations followed by recontact or complaint | At or below 8% |
| CSAT | Survey score for agent-handled and handed-off conversations, separately | No lower than human baseline minus 0.2 points |
| Handoff rate by intent | Handoffs over conversations per intent | Tracked against forecast |
| Time to human | From handoff request to human first reply | p90 at or below [minutes] |
| Policy accuracy | Share of sampled answers matching the policy in force | At or above 98% |
| Action accuracy | Refunds reconciled against policy and ledger | 100% within policy |
Observability follows LLM and Agent Observability Specification Template
(ai-data/llm-observability-spec); evaluation follows Agent Evaluation
Plan Template (ai-data/agent-evaluation-plan).
9.4 Audit
Each turn record holds the customer message ID, model and prompt version, retrieved policy IDs and versions, tool calls with arguments and results, policy engine rule and decision, approver for approved actions, and the reply sent. Records are write-once and retained for [period]. Weekly sampling by quality assurance uses the same scorecard as for human agents.
10. Trade-offs and alternatives
| Decision | Options | Chosen | Why | What we give up |
|---|---|---|---|---|
| Action authority | Model; policy engine; humans only | Policy engine within limits, humans above | Bounded and auditable | Rule maintenance |
| Policy knowledge | Prompt; help-centre retrieval; versioned policy store | Versioned policy store | Correct version and citations | Content operations |
| Handoff | Transcript; summary; silent assist | Summary now, silent assist later | Biggest customer pain first | Human efficiency gains deferred |
| Success metric | Deflection; verified resolution | Verified resolution with CSAT guardrail | Prevents hiding failures | Slower to report (7-day window) |
| What changes at 10x (12 million conversations per month) | Per-market cells; dedicated model capacity; automated QA scoring with human calibration | Provider quotas and manual QA do not scale | Higher fixed cost | |
| What changes at 0.1x (120 000 per month) | Vendor support platform's built-in agent with custom tools; no separate orchestrator | Building the platform is not worth it | Less control over policy engine and audit detail | |
| [Decision] | [Options] | [Chosen] | [Why] | [Cost] |
11. Delivery plan and risks
11.1 Milestones
| Milestone | Scope | Exit criterion | Target date |
|---|---|---|---|
| M1 | Web chat, order status, policy answers, handoff | Policy accuracy at or above 98% on sample; handoff works on request | YYYY-MM-DD |
| M2 | Return labels and address change | Action accuracy 100% on 2 weeks of shadow mode | YYYY-MM-DD |
| M3 | Refunds at USD 20 limit, approval queue | Ledger reconciliation clean for 4 weeks | YYYY-MM-DD |
| M4 | Messaging apps and email; limit raised to USD 50 | Finance sign-off on loss rate | YYYY-MM-DD |
| M5 | Silent assist for human agents | Handle time reduction measured | YYYY-MM-DD |
11.2 Rollout and rollback
[Example: Shadow mode first: the agent drafts replies and actions that humans send or discard. Then a share of traffic by intent, starting with order status. Any increase in false resolution or complaints above threshold switches that intent back to humans by configuration.]
11.3 Risks
| ID | Risk | Likelihood | Impact | Mitigation | Owner |
|---|---|---|---|---|---|
| R-01 | Example: Refund abuse by customers who learn the limits | Medium | Medium | Per-customer limits, fraud scoring, thresholds not in prompt | [@name] |
| R-02 | Example: Wrong policy answer creates liability | Medium | High | Versioned policy retrieval, citations, handoff (7.4) | [@name] |
| R-03 | Example: Customers cannot reach a person and complain publicly | Medium | High | Handoff on request in one turn; visible option | [@name] |
| R-04 | Example: Human team loses skills on simple intents | Low | Medium | Rotation and training plan | [@name] |
| [R-nn] | [Risk] | [L / M / H] | [L / M / H] | [Mitigation] | [@name] |
12. Appendices
12.1 Traceability
| Requirement | Design element | Verification |
|---|---|---|
| FR-04, NFR-02 | 7.4 versioned policy retrieval | Weekly policy accuracy sample |
| FR-05, NFR-03 | 7.2 policy engine, idempotency | Ledger reconciliation |
| FR-06, NFR-04 | 7.3 handoff triggers and summary | Transcript review |
| FR-07 | 7.5 disclosure | Channel test per locale |
| NFR-07 | 9.4 audit record | Audit sample |
| [ID] | [Element] | [Test] |
12.2 Open questions
| ID | Question | Owner | Due |
|---|---|---|---|
| OQ-01 | Example: Different refund limits per market? | [@name] | YYYY-MM-DD |
| OQ-02 | Example: May the agent offer goodwill vouchers, and within what budget? | [@name] | YYYY-MM-DD |
| [OQ-nn] | [Question] | [@name] | YYYY-MM-DD |
12.3 Glossary
| Term | Meaning |
|---|---|
| Containment (deflection) | Conversation ended without a human agent |
| Verified resolution | Contained conversation with no recontact on the same intent within the window |
| Handoff | Transfer of a conversation to a human with context |
| Policy engine | Deterministic service that applies business rules and limits to proposed actions |
| CSAT | Customer satisfaction score from a post-conversation survey |
| Idempotency key | Identifier that makes a repeated request take effect once |
12.4 References
| Reference | Use |
|---|---|
| IMDA, Model AI Governance Framework for Agentic AI, launched 22 January 2026; current Version 1.5 (20 May 2026, updated 5 June 2026), https://www.imda.gov.sg/ (announcement: https://www.mddi.gov.sg/newsroom/singapore-launches-new-model-ai-governance-framework-for-agentic-ai--/) | Oversight mapping in 7.5 |
| Regulation (EU) 2024/1689 (AI Act), Article 50, https://eur-lex.europa.eu/eli/reg/2024/1689/oj | AI disclosure in 7.5 |
| OWASP Top 10 for LLM Applications 2026, OWASP GenAI Security Project, https://genai.owasp.org/ | Threat mapping in 9.2 |
| Moffatt v. Air Canada, 2024 BCCRT 149 (British Columbia Civil Resolution Tribunal, 14 February 2024) | Box in 7.6 |
AI Agent Specification Template (ai-data/ai-agent-spec) | Agent behaviour specification |
Payment Ledger System Design (system-design/design-payment-ledger) | Idempotent refunds and reconciliation |
Standard and licence note
Based on the Model AI Governance Framework for Agentic AI published by Singapore's Infocomm Media Development Authority (launched 22 January 2026), Article 50 of Regulation (EU) 2024/1689, and the OWASP Top 10 for LLM Applications 2026 by the OWASP GenAI Security Project (https://genai.owasp.org/), licensed under Creative Commons Attribution-ShareAlike 4.0 (https://creativecommons.org/licenses/by-sa/4.0/). The framework's dimensions and the tribunal decision are paraphrased in original words. The OWASP IDs and short names are used for the mapping in 9.2; all descriptions and controls are original text. Because that mapping adapts the OWASP structure, the adapted structure is shared under CC BY-SA 4.0 and any further adaptation must carry the same licence. This is a documentation format, not legal advice. Check the current official version of each framework, law and list before use. Apart from the adapted OWASP structure, the original text is under the template licence. Template licence: MIT.
相关模板
Agent Orchestration Platform System Design Template
Agent run platform design: durable step journal, resume, MCP tool broker with Tasks, A2A calls, human approvals, tenant budgets, evaluation hooks
系统设计Agent Code Execution Sandbox System Design Template
Code execution sandbox for agents: microVM vs gVisor vs containers, egress proxy, credential broker, quotas, snapshot restore, warm pools, abuse detection
系统设计Real-Time Voice Agent System Design Template
Real-time voice agent design: SIP and WebRTC ingress, streaming ASR, turn detection, barge-in, LLM with tools, streaming TTS, latency budget, consent, failover