{
  "slug": "support-agent-multichannel-deployment",
  "title": "How to Deploy an AI Support Agent Across Chat, Email and Voice: One Policy Core, Thin Channel Adapters",
  "description": "How to deploy an AI support agent across chat, email and voice: one shared policy core with a thin adapter per channel, what changes for email threads and voice, consistent escalation and memory, cross-channel identity, and channel order.",
  "kind": "sub",
  "order": 10,
  "target_query": "how to deploy an ai support agent across chat email and voice",
  "secondary_queries": [
    "ai support agent across chat and email",
    "multichannel ai support agent"
  ],
  "tags": [
    "customer-support",
    "multichannel",
    "email",
    "voice",
    "chat",
    "identity",
    "escalation",
    "agents",
    "production"
  ],
  "published": "2026-10-25",
  "updated": "2026-10-25",
  "words": 1597,
  "estimated_tokens": 2124,
  "premium": false,
  "rights": {
    "access": "free",
    "note": "Editorial guides are always free and never part of the licensed corpus.",
    "license": "https://changegamer.ai/license.xml",
    "pricing": "https://changegamer.ai/api/pricing.json",
    "payment": "https://changegamer.ai/api/payment.json"
  },
  "license": "https://changegamer.ai/license.xml",
  "citation": "ChangeGamer (2026-10-25). How to Deploy an AI Support Agent Across Chat, Email and Voice: One Policy Core, Thin Channel Adapters. ChangeGamer. https://changegamer.ai/articles/support-agent-multichannel-deployment (updated 2026-10-25).",
  "bibtex": "@misc{changegamer_support_agent_multichannel_deployment, title = {How to Deploy an AI Support Agent Across Chat, Email and Voice: One Policy Core, Thin Channel Adapters}, publisher = {ChangeGamer}, year = {2026}, url = {https://changegamer.ai/articles/support-agent-multichannel-deployment}, note = {Updated 2026-10-25}}",
  "canonical": "https://changegamer.ai/articles/support-agent-multichannel-deployment",
  "markdown": "https://changegamer.ai/articles/support-agent-multichannel-deployment.md",
  "takeaways": [
    "An AI support agent deployed across chat, email and voice should run one shared policy core with a thin adapter per channel, because escalation rules, refund limits and memory rules copied into three separate prompts will drift apart; this architecture is the author's inference, since the corpus prescribes none.",
    "Email gives a support agent a different input shape: the topmost message is the request, while quoted history, forwarded blocks and attachments are untrusted evidence that should be read in isolation and reduced to extracted fields before any tool-holding model sees them.",
    "RFC 3834 (August 2004) says automatic email responses should not be sent in reply to a message whose Auto-Submitted header holds any value other than \"no\", so an email-facing support agent needs a loop guard against answering other automatic responders.",
    "The reference corpus does not cover cross-channel identity resolution, so as the author's inference an AI support agent should link a customer's chat, email and voice history only on proof such as a login or a one-time code, never on an unverified name, email address or phone number alone.",
    "The inference-level channel order for an AI support agent is one text channel first, the other text channel second and voice last, with each new channel admitted only after it passes the shared policy fixtures and a shadow run on its own real tickets."
  ],
  "outline": [
    {
      "depth": 2,
      "text": "Should one agent sit behind every channel, or one agent per channel?",
      "anchor": "should-one-agent-sit-behind-every-channel-or-one-agent-per-channel",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#should-one-agent-sit-behind-every-channel-or-one-agent-per-channel"
    },
    {
      "depth": 2,
      "text": "What changes when the agent starts answering email?",
      "anchor": "what-changes-when-the-agent-starts-answering-email",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#what-changes-when-the-agent-starts-answering-email"
    },
    {
      "depth": 3,
      "text": "Read the topmost message apart from the history",
      "anchor": "read-the-topmost-message-apart-from-the-history",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#read-the-topmost-message-apart-from-the-history"
    },
    {
      "depth": 3,
      "text": "Count exchanges and ask once",
      "anchor": "count-exchanges-and-ask-once",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#count-exchanges-and-ask-once"
    },
    {
      "depth": 3,
      "text": "Guard against machine-to-machine loops",
      "anchor": "guard-against-machine-to-machine-loops",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#guard-against-machine-to-machine-loops"
    },
    {
      "depth": 2,
      "text": "Voice changes delivery, not rules",
      "anchor": "voice-changes-delivery-not-rules",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#voice-changes-delivery-not-rules"
    },
    {
      "depth": 2,
      "text": "How do you keep escalation, policy and memory consistent across channels?",
      "anchor": "how-do-you-keep-escalation-policy-and-memory-consistent-across-channels",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#how-do-you-keep-escalation-policy-and-memory-consistent-across-channels"
    },
    {
      "depth": 2,
      "text": "How do you recognise the same customer across channels?",
      "anchor": "how-do-you-recognise-the-same-customer-across-channels",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#how-do-you-recognise-the-same-customer-across-channels"
    },
    {
      "depth": 2,
      "text": "Add the other text channel before voice",
      "anchor": "add-the-other-text-channel-before-voice",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#add-the-other-text-channel-before-voice"
    },
    {
      "depth": 2,
      "text": "ChangeGamer's comparable practice: one source, three surfaces",
      "anchor": "changegamer-s-comparable-practice-one-source-three-surfaces",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#changegamer-s-comparable-practice-one-source-three-surfaces"
    },
    {
      "depth": 2,
      "text": "What the corpus does not cover",
      "anchor": "what-the-corpus-does-not-cover",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#what-the-corpus-does-not-cover"
    },
    {
      "depth": 2,
      "text": "Where to read next",
      "anchor": "where-to-read-next",
      "url": "https://changegamer.ai/articles/support-agent-multichannel-deployment#where-to-read-next"
    }
  ],
  "faq": [
    {
      "question": "Should an AI support agent be one agent or a separate agent for each channel?",
      "answer": "One shared policy core with a thin adapter per channel is the safer design, as the author's inference. Escalation triggers, refund limits, memory rules and ticket tools exist once, while each adapter handles that channel's input format, reply length, timing and handoff delivery. The corpus prescribes no multichannel architecture."
    },
    {
      "question": "How should an AI support agent handle forwarded email threads and attachments?",
      "answer": "Treat the topmost message as the customer's request and everything quoted or attached as untrusted evidence. The prompt-injection-design-patterns reference describes isolating untrusted content in a quarantined read, one item at a time, and passing only extracted fields such as an order ID to the model that holds tools."
    },
    {
      "question": "How does an AI support agent know it is the same customer on chat, email and phone?",
      "answer": "The corpus gives no mechanism, so this is design reasoning: a logged-in session is strong evidence, while a typed name, a From address or a caller number is only a claim. Link channels on proof such as a login or a one-time code, and otherwise treat each conversation as anonymous."
    },
    {
      "question": "Which channel should an AI support agent launch on first, and which should come next?",
      "answer": "Start on one text channel, add the other text channel second and add voice last. The corpus does not rank channels, so the order is inference: chat and email share a text pipeline, while voice adds speech recognition, interruption handling and a latency budget that the voice cluster treats separately."
    }
  ],
  "body": "To deploy an AI support agent across chat, email and voice, run one shared policy core behind a thin adapter per channel instead of building three separately prompted agents. This is the multichannel sub-article of the [AI customer support agent in production](/articles/ai-customer-support-agents-in-production) cluster; the pillar's \"one text channel first\" advice is extended here, not repeated.\n\nReading key: a statement that names a reference or source is sourced to it, and every other statement is the author's inference. The corpus describes no multichannel architecture and ranks no channels, and as of October 2026 ChangeGamer operates no support agent.\n\n## Should one agent sit behind every channel, or one agent per channel?\n\nPut one policy core behind every channel and give each channel only an adapter, because rules that cost money or trust must exist in exactly one place. This is inference. Per-channel agents can answer the same refund request differently depending on where it arrived, and every change must be made, tested and rolled back several times.\n\n| Layer | Shared | Per channel |\n|---|---|---|\n| Rules | Escalation triggers and precedence, policy checks, refund thresholds | How each trigger is detected in that channel's input |\n| Tools | Ticket, lookup and handoff tools with permissions | Nothing |\n| Memory | Write schema, provenance tags, expiry | A channel tag on every entry |\n| Delivery | Output checks and banned claims | Length, format, turn-taking, how a handoff reaches a human |\n\nThe [shipping agents to production](/resources/shipping-agents-to-production) checklist (updated 2026-08-13) says to release the code, prompt text, pinned model and tool contracts as one unit under a composite tag. As inference, the core and every adapter belong in that unit, so a rollback cannot leave email on a refund rule that chat has dropped.\n\n## What changes when the agent starts answering email?\n\nEmail changes three things: input arrives as a whole thread, replies are asynchronous, and untrusted content is more likely to ride in. The pillar's channel table already flags the exposure; the added mechanics follow.\n\n### Read the topmost message apart from the history\n\nTreat the topmost message as the customer's request and everything quoted beneath it as evidence, since a forwarded block can hold a third party's words or an earlier agent reply (inference). The [customer support agents](/resources/customer-support-agents) reference (updated 2026-09-13) names forwarded emails and attachments as an injection surface. The [prompt injection design patterns](/resources/prompt-injection-design-patterns) reference (updated 2026-07-12) gives the structure: Dual LLM lets a quarantined model read untrusted text and return only opaque references, and LLM Map-Reduce processes each item in an isolated call. As inference, that means one isolated read per attachment, passing only extracted fields such as an order ID onward.\n\n### Count exchanges and ask once\n\nCount exchanges, not turns, and put clarifying questions in one message, because email replies can be days apart (inference). The corpus caps back-and-forth turns per issue but is silent on asynchronous channels. The trigger list is in [support agent escalation triggers](/articles/support-agent-escalation-triggers).\n\n### Guard against machine-to-machine loops\n\nAn email agent should not reply to other automatic responders, and RFC 3834 (K. Moore, August 2004, read at rfc-editor.org on 2026-10-25) names the header to check: automatic responses should not be issued to a message whose `Auto-Submitted` header holds any value other than `no`. The same RFC says an automatic response should itself carry `Auto-Submitted: auto-replied`. It predates LLM agents and does not say whether one is a responder, so treat the check as a loop guard, not a compliance claim.\n\n## Voice changes delivery, not rules\n\nVoice should reuse the same policy core and change only how replies are spoken, heard and handed off, which the voice cluster owns. For latency, turn-taking and interruption, read [voice AI agent in production](/articles/voice-ai-agent-in-production); for transferring a live call, read [voice agent human handoff](/articles/voice-agent-human-handoff).\n\nTwo multichannel consequences remain. The [voice and realtime agents](/resources/voice-realtime-agents) reference (updated 2026-09-28) says tool latency adds directly to voice latency, so as inference a slow shared policy check shows up on voice first and should be timed there. It also says to plan for transcription errors, so as inference the voice adapter should read an order number back before the lookup runs.\n\n## How do you keep escalation, policy and memory consistent across channels?\n\nKeep them consistent by storing each rule once in the shared core and running one fixture set through every adapter (inference).\n\n- **Escalation.** One trigger list and precedence order; each adapter supplies its own detector for the same trigger, such as a phrase in chat, in the topmost email message or in transcribed speech. Log the channel beside each trigger category.\n- **Policy.** The refund check lives in tool code, as in [support agent refund policy enforcement](/articles/support-agent-refund-policy-enforcement), so no adapter or prompt overlay can loosen it.\n- **Memory.** The [agent memory and context](/resources/agent-memory-context) reference (updated 2026-08-05) says every call starts fresh, so a channel switch carries nothing by itself; continuity is whatever the shared store re-injects, so the store belongs to the core. It also warns that an injected conversation turn can plant instructions in the store that resurface later, so as inference an email-derived write gets the lowest trust tag. Write rules are in [support agent customer memory](/articles/support-agent-customer-memory).\n- **Tests.** Send identical fixtures to each adapter: a refund over the limit, a request for a person, a pasted instruction. A chat pass with an email failure points at the email adapter.\n\n## How do you recognise the same customer across channels?\n\nThe corpus does not cover cross-channel identity resolution, so this section is inference, and the safe default is to link channels only on evidence the customer has proved. No source verified for this site describes a published mechanism, so check your helpdesk.\n\n| Channel | Typical identity signal | Strength (inference) |\n|---|---|---|\n| Chat in a logged-in app | Authenticated session | Strong: the system supplies the ID |\n| Chat on a public page | A typed name or email | Weak: a claim |\n| Email | The From address | Weak unless your mail system reports it as authenticated |\n| Voice | Caller number, spoken details | Weak; spoken details suffer transcription errors |\n\nRFC 3834 states that the vast majority of email is unauthenticated and return addresses are easily forged. It dates from 2004 and how far that still holds for a given sender is not verified here, so treat From as a claim.\n\nTwo designs follow, both inference. **Link on proof only:** read cross-channel history only when the conversation holds proved identity, such as a login or a one-time code sent to a contact already on file, and otherwise treat it as anonymous. This matches the [customer memory](/articles/support-agent-customer-memory) rule that the customer ID comes from the session, not from anything the customer types. **Suggest, never read:** if a weaker signal such as a matching phone number hints at a prior customer, ask the customer or a human to confirm, and never give unconfirmed history to the model, since a wrong match exposes someone else's data.\n\nOne boundary is sourced: the customer-support-agents reference routes identity and payment-method changes to a human or an audited workflow, so, as inference, the agent should not add a new email or phone number to an account to link channels.\n\n## Add the other text channel before voice\n\nAdd the other text channel second and voice last, unless your own contact volume argues otherwise; the corpus ranks no channels, so this is inference. Chat and email share a text pipeline, tool set and transcript capture, while voice adds speech recognition, interruption handling and a latency budget.\n\nAdmit the next channel only when all of these hold:\n\n1. The first channel's escalation log shows each trigger firing with a logged category, and both error directions have been sampled.\n2. The new adapter passes the shared policy fixtures plus fixtures from that channel's real tickets.\n3. A shadow run has drafted replies on the channel's live traffic without sending them; the shipping checklist says shadow mode removes rollout risk during validation.\n4. The channel's identity rule is written down, even if it reads \"anonymous, no cross-channel memory\".\n5. A canary on 5 to 10% of that channel's traffic (the checklist's figure) has automatic rollback on metric degradation.\n\n## ChangeGamer's comparable practice: one source, three surfaces\n\nChangeGamer renders each article from one source to three surfaces. As of 2026-10-25, an article is one `.ts` file whose `body` string feeds the HTML page (`[slug].astro`), the Markdown variant (`[slug].md.ts`) and the JSON variant (`src/pages/api/articles/[slug].json.ts`), and `node scripts/verify-invariants.mjs` fails if an article lacks its HTML page, `.md`, JSON, `llms.txt` link or sitemap entry.\n\nThe gate checks that each surface exists; sameness comes from the shared source. ChangeGamer has no chat or voice channel and runs no support agent; its customer email is for purchase delivery and receipt replies, not support.\n\n## What the corpus does not cover\n\nNo corpus resource is dedicated to multichannel support deployment, so verify these yourself:\n\n- cross-channel identity resolution;\n- how your helpdesk threads email, stores attachments or links a call to a ticket;\n- any ranking of channels by risk, cost or preference, or channels beyond these three, such as SMS;\n- per-channel deflection or satisfaction figures;\n- rules for recording calls or retaining email content, which need counsel; general personal-data duties are in [Data Privacy and PII for Agents](/resources/data-privacy-for-agents).\n\n## Where to read next\n\nRead the pillar, [AI customer support agent in production](/articles/ai-customer-support-agents-in-production). Then read [support agent helpdesk integration](/articles/support-agent-helpdesk-integration) for ticket-field handoffs, and [support agent abusive input handling](/articles/support-agent-abusive-input-handling) for hostile text arriving on any channel.",
  "cluster": {
    "id": "support-agents-in-production",
    "title": "Support agents in production",
    "description": "How to run an AI customer support agent in production — escalation triggers and warm handoff, helpdesk integration, refund-policy enforcement, tone and brand voice, customer memory, CSAT and quality measurement, human review queues, multichannel deployment, wrong-answer incidents and replay testing — covering the support vertical only, not the horizontal guardrail and security mechanics owned by agent-guardrails-for-reliability and not the voice mechanics owned by voice-agents-in-production.",
    "status": "complete",
    "pillar": {
      "slug": "ai-customer-support-agents-in-production",
      "title": "AI Customer Support Agent in Production: Escalation, Policy, Tickets and Measurement",
      "description": "How to run an AI customer support agent in production: scope, escalation triggers, warm handoff, helpdesk integration, refund-policy enforcement, brand-voice guardrails, injection from customer text, memory, honest measurement and launch order.",
      "kind": "pillar",
      "order": 0,
      "html": "https://changegamer.ai/articles/ai-customer-support-agents-in-production",
      "markdown": "https://changegamer.ai/articles/ai-customer-support-agents-in-production.md",
      "json": "https://changegamer.ai/api/articles/ai-customer-support-agents-in-production.json"
    },
    "articles": [
      {
        "slug": "support-agent-escalation-triggers",
        "title": "Support Agent Escalation Triggers: When an AI Agent Should Hand Off to a Human",
        "description": "When an AI support agent should escalate to a human: seven triggers (five from the reference, two labelled inference), how to detect each, the false-positive and false-negative cost of each, which trigger wins when several fire, and what the human agent sees first.",
        "kind": "sub",
        "order": 1,
        "html": "https://changegamer.ai/articles/support-agent-escalation-triggers",
        "markdown": "https://changegamer.ai/articles/support-agent-escalation-triggers.md",
        "json": "https://changegamer.ai/api/articles/support-agent-escalation-triggers.json"
      },
      {
        "slug": "support-agent-tone-and-brand-voice",
        "title": "Support Agent Tone and Brand Voice: How to Keep an AI Customer Support Agent on Brand",
        "description": "How to keep an AI customer support agent on brand voice: what a tone specification contains, tone by situation (angry customer, refusal, policy denial), what an output check can and cannot enforce, persona-drift failure modes, and how to review tone.",
        "kind": "sub",
        "order": 2,
        "html": "https://changegamer.ai/articles/support-agent-tone-and-brand-voice",
        "markdown": "https://changegamer.ai/articles/support-agent-tone-and-brand-voice.md",
        "json": "https://changegamer.ai/api/articles/support-agent-tone-and-brand-voice.json"
      },
      {
        "slug": "support-agent-refund-policy-enforcement",
        "title": "Refund Policy Enforcement in an AI Support Agent: Keep the Decision Out of the Model",
        "description": "How to enforce a refund policy in an AI customer support agent: a deterministic policy check outside the model, why schema-valid arguments can still break policy, reading amounts from the order record, and test fixtures.",
        "kind": "sub",
        "order": 3,
        "html": "https://changegamer.ai/articles/support-agent-refund-policy-enforcement",
        "markdown": "https://changegamer.ai/articles/support-agent-refund-policy-enforcement.md",
        "json": "https://changegamer.ai/api/articles/support-agent-refund-policy-enforcement.json"
      },
      {
        "slug": "support-agent-helpdesk-integration",
        "title": "Integrating an AI Support Agent with a Helpdesk: Idempotent Tickets, Scoped Credentials, Narrow Tools",
        "description": "How to integrate an AI support agent with a helpdesk ticketing system: the ticket as system of record, write-back rules, idempotent create and update, least-privilege credentials, ticket ownership after handoff and a four-tool surface.",
        "kind": "sub",
        "order": 4,
        "html": "https://changegamer.ai/articles/support-agent-helpdesk-integration",
        "markdown": "https://changegamer.ai/articles/support-agent-helpdesk-integration.md",
        "json": "https://changegamer.ai/api/articles/support-agent-helpdesk-integration.json"
      },
      {
        "slug": "support-agent-quality-measurement",
        "title": "Measuring the Quality of an AI Customer Support Agent: Resolution Signals Beside Deflection",
        "description": "How to measure the quality of an AI customer support agent: explicit confirmation, a no-repeat-contact window and a post-resolution survey, each with its blind spot, read together with the escalation log and a verdict table.",
        "kind": "sub",
        "order": 5,
        "html": "https://changegamer.ai/articles/support-agent-quality-measurement",
        "markdown": "https://changegamer.ai/articles/support-agent-quality-measurement.md",
        "json": "https://changegamer.ai/api/articles/support-agent-quality-measurement.json"
      },
      {
        "slug": "support-agent-customer-memory",
        "title": "How an AI Customer Support Agent Should Remember Customers Across Conversations",
        "description": "A memory policy for an AI customer support agent: what may be stored, who writes it, how remembered text is read as data, how stale facts are handled, how customers are kept apart, and how memory is shown and corrected.",
        "kind": "sub",
        "order": 6,
        "html": "https://changegamer.ai/articles/support-agent-customer-memory",
        "markdown": "https://changegamer.ai/articles/support-agent-customer-memory.md",
        "json": "https://changegamer.ai/api/articles/support-agent-customer-memory.json"
      },
      {
        "slug": "support-agent-rules-based-bot-migration",
        "title": "How to Migrate From a Rules-Based Support Chatbot to an AI Support Agent",
        "description": "A migration sequence from a decision-tree support bot to a model-driven agent: inventory intents and escalation exits, shadow mode, per-intent cutover, the tree as fallback, parity measurement and rollback triggers.",
        "kind": "sub",
        "order": 7,
        "html": "https://changegamer.ai/articles/support-agent-rules-based-bot-migration",
        "markdown": "https://changegamer.ai/articles/support-agent-rules-based-bot-migration.md",
        "json": "https://changegamer.ai/api/articles/support-agent-rules-based-bot-migration.json"
      },
      {
        "slug": "support-agent-abusive-input-handling",
        "title": "How to Handle Abusive Customers With an AI Support Agent: Detect, De-escalate Once, Close or Escalate",
        "description": "How to handle abusive customers with an AI support agent: separate abuse of staff, off-topic input and ticket-text manipulation, then detect, de-escalate once, refuse briefly, close or escalate, and shield human reviewers.",
        "kind": "sub",
        "order": 8,
        "html": "https://changegamer.ai/articles/support-agent-abusive-input-handling",
        "markdown": "https://changegamer.ai/articles/support-agent-abusive-input-handling.md",
        "json": "https://changegamer.ai/api/articles/support-agent-abusive-input-handling.json"
      },
      {
        "slug": "support-agent-human-review-queues",
        "title": "How to Set Up a Human Review Queue for an AI Support Agent: Sample, Sign Off, Cap the Load",
        "description": "How to set up a human review queue for an AI support agent: what to sample, who reviews, a four-outcome decision set, a tie-break for disagreements, fixtures from corrections, and a cap on reviewer load.",
        "kind": "sub",
        "order": 9,
        "html": "https://changegamer.ai/articles/support-agent-human-review-queues",
        "markdown": "https://changegamer.ai/articles/support-agent-human-review-queues.md",
        "json": "https://changegamer.ai/api/articles/support-agent-human-review-queues.json"
      },
      {
        "slug": "support-agent-multichannel-deployment",
        "title": "How to Deploy an AI Support Agent Across Chat, Email and Voice: One Policy Core, Thin Channel Adapters",
        "description": "How to deploy an AI support agent across chat, email and voice: one shared policy core with a thin adapter per channel, what changes for email threads and voice, consistent escalation and memory, cross-channel identity, and channel order.",
        "kind": "sub",
        "order": 10,
        "html": "https://changegamer.ai/articles/support-agent-multichannel-deployment",
        "markdown": "https://changegamer.ai/articles/support-agent-multichannel-deployment.md",
        "json": "https://changegamer.ai/api/articles/support-agent-multichannel-deployment.json"
      },
      {
        "slug": "support-agent-wrong-answer-incidents",
        "title": "What to Do When an AI Support Agent Gives a Customer a Wrong Answer",
        "description": "What to do when an AI support agent gives a customer a wrong answer: classify the error, contain one intent, find every affected conversation in traces, correct the customer, weigh honouring or reversing the commitment, and add a fixture.",
        "kind": "sub",
        "order": 11,
        "html": "https://changegamer.ai/articles/support-agent-wrong-answer-incidents",
        "markdown": "https://changegamer.ai/articles/support-agent-wrong-answer-incidents.md",
        "json": "https://changegamer.ai/api/articles/support-agent-wrong-answer-incidents.json"
      },
      {
        "slug": "support-agent-replay-testing",
        "title": "How to Test an AI Support Agent With Historical Tickets: Build a Replay Set",
        "description": "How to test an AI support agent with historical tickets: pick resolved tickets per request type including escalations and refusals, redact them, assert on behaviour not wording, grade deterministically first, bridge to live traffic with shadow mode, and gate releases.",
        "kind": "sub",
        "order": 12,
        "html": "https://changegamer.ai/articles/support-agent-replay-testing",
        "markdown": "https://changegamer.ai/articles/support-agent-replay-testing.md",
        "json": "https://changegamer.ai/api/articles/support-agent-replay-testing.json"
      }
    ]
  },
  "navigation": {
    "pillar": {
      "slug": "ai-customer-support-agents-in-production",
      "title": "AI Customer Support Agent in Production: Escalation, Policy, Tickets and Measurement",
      "description": "How to run an AI customer support agent in production: scope, escalation triggers, warm handoff, helpdesk integration, refund-policy enforcement, brand-voice guardrails, injection from customer text, memory, honest measurement and launch order.",
      "kind": "pillar",
      "order": 0,
      "html": "https://changegamer.ai/articles/ai-customer-support-agents-in-production",
      "markdown": "https://changegamer.ai/articles/ai-customer-support-agents-in-production.md",
      "json": "https://changegamer.ai/api/articles/ai-customer-support-agents-in-production.json"
    },
    "previous": {
      "slug": "support-agent-human-review-queues",
      "title": "How to Set Up a Human Review Queue for an AI Support Agent: Sample, Sign Off, Cap the Load",
      "description": "How to set up a human review queue for an AI support agent: what to sample, who reviews, a four-outcome decision set, a tie-break for disagreements, fixtures from corrections, and a cap on reviewer load.",
      "kind": "sub",
      "order": 9,
      "html": "https://changegamer.ai/articles/support-agent-human-review-queues",
      "markdown": "https://changegamer.ai/articles/support-agent-human-review-queues.md",
      "json": "https://changegamer.ai/api/articles/support-agent-human-review-queues.json"
    },
    "next": {
      "slug": "support-agent-wrong-answer-incidents",
      "title": "What to Do When an AI Support Agent Gives a Customer a Wrong Answer",
      "description": "What to do when an AI support agent gives a customer a wrong answer: classify the error, contain one intent, find every affected conversation in traces, correct the customer, weigh honouring or reversing the commitment, and add a fixture.",
      "kind": "sub",
      "order": 11,
      "html": "https://changegamer.ai/articles/support-agent-wrong-answer-incidents",
      "markdown": "https://changegamer.ai/articles/support-agent-wrong-answer-incidents.md",
      "json": "https://changegamer.ai/api/articles/support-agent-wrong-answer-incidents.json"
    }
  },
  "resources": [
    {
      "slug": "customer-support-agents",
      "html": "https://changegamer.ai/resources/customer-support-agents",
      "markdown": "https://changegamer.ai/resources/customer-support-agents.md",
      "json": "https://changegamer.ai/api/resources/customer-support-agents.json"
    },
    {
      "slug": "prompt-injection-design-patterns",
      "html": "https://changegamer.ai/resources/prompt-injection-design-patterns",
      "markdown": "https://changegamer.ai/resources/prompt-injection-design-patterns.md",
      "json": "https://changegamer.ai/api/resources/prompt-injection-design-patterns.json"
    },
    {
      "slug": "agent-memory-context",
      "html": "https://changegamer.ai/resources/agent-memory-context",
      "markdown": "https://changegamer.ai/resources/agent-memory-context.md",
      "json": "https://changegamer.ai/api/resources/agent-memory-context.json"
    },
    {
      "slug": "shipping-agents-to-production",
      "html": "https://changegamer.ai/resources/shipping-agents-to-production",
      "markdown": "https://changegamer.ai/resources/shipping-agents-to-production.md",
      "json": "https://changegamer.ai/api/resources/shipping-agents-to-production.json"
    },
    {
      "slug": "voice-realtime-agents",
      "html": "https://changegamer.ai/resources/voice-realtime-agents",
      "markdown": "https://changegamer.ai/resources/voice-realtime-agents.md",
      "json": "https://changegamer.ai/api/resources/voice-realtime-agents.json"
    }
  ]
}