Inferensys

Prompt

Confidence-Driven Routing Prompt for Support Tickets

A practical prompt playbook for support automation teams routing tickets based on classification confidence. Produces a routing decision with destination queue, confidence score, and escalation flag when confidence is below the auto-resolution threshold.
Operations team reviewing AI workflow automation on laptop, workflow builder visible, casual office setup.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the operational context for a confidence-gated ticket routing prompt, including its ideal use case, required infrastructure, and explicit anti-patterns.

This prompt is designed for support automation pipelines that classify incoming tickets and route them to specialized queues. Its primary job is to act as a confidence gate: when the model is uncertain about the classification, the ticket is flagged for human review instead of being auto-routed. Use this when the cost of misrouting a ticket—such as sending a billing dispute to a general FAQ queue—is higher than the cost of a human review. The prompt produces a structured routing decision containing a destination queue, a confidence score, and a boolean escalation flag, making it directly consumable by downstream workflow engines.

Do not use this prompt for real-time chat routing where latency is measured in milliseconds. The structured output and reasoning steps add overhead better suited for asynchronous ticket processing. This prompt assumes you have defined destination queues, a configurable confidence threshold, and a downstream system that can consume the structured routing decision. Before deploying, you must map your actual support taxonomy to the [QUEUE_DEFINITIONS] placeholder and set the [CONFIDENCE_THRESHOLD] to a value calibrated against your historical misrouting tolerance. A common starting threshold is 0.85, but this should be tuned using a golden dataset of pre-labeled tickets to balance auto-routing rates against misrouting risk.

This prompt is most effective when integrated into a broader human-in-the-loop workflow. The escalation flag should trigger a review queue where human agents see the original ticket, the model's top predicted classes with scores, and a pre-formatted decision prompt. Avoid using this prompt in isolation without eval checks. You should regularly test routing accuracy and escalation rates against a held-out test set to detect drift in model behavior or changes in ticket distribution. If your support taxonomy changes, update the [QUEUE_DEFINITIONS] and re-run your calibration suite before promoting the new prompt version to production.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Confidence-Driven Routing Prompt for Support Tickets works, where it fails, and the operational preconditions required before deployment.

01

Good Fit: High-Volume, Structured Triage

Use when: you have a large volume of support tickets with well-defined, stable routing destinations and a clear SLA for auto-resolution. Guardrail: Define a fixed taxonomy of queues and keep it versioned. Drift in queue definitions is a leading cause of silent misroutes.

02

Bad Fit: Novel or Unsupervised Categories

Avoid when: ticket topics are unbounded, rapidly evolving, or lack historical examples. The model cannot reliably estimate confidence on out-of-distribution inputs. Guardrail: Implement an OOD detection wrapper that escalates any input with a semantic distance above a threshold before the routing prompt runs.

03

Required Input: Calibrated Confidence Threshold

Risk: deploying without a data-driven threshold leads to arbitrary escalation rates. Guardrail: Run a calibration study on at least 500 labeled examples to set the auto-route vs. escalate threshold. Monitor the threshold weekly for drift in production.

04

Required Input: Destination Queue Schema

Risk: the model invents queue names or routes to non-existent destinations if the schema is missing or ambiguous. Guardrail: Provide an enum of valid queues in the prompt with a strict instruction to reject any input that does not map to a listed destination. Validate the output against the enum in application code.

05

Operational Risk: Silent Override by Support Agents

Risk: agents manually reroute tickets without feedback, breaking the confidence signal over time. Guardrail: Log every manual reroute as a label. Use this data to retrain thresholds and detect when the routing taxonomy needs updating.

06

Operational Risk: Escalation Queue Flooding

Risk: a confidence threshold set too low floods the human review queue, defeating the purpose of automation. Guardrail: Set an operational limit on the escalation rate (e.g., <15% of total volume). If the rate exceeds the limit, the system should block auto-routing and alert the platform team instead of overwhelming reviewers.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A reusable prompt that classifies a support ticket, assigns a confidence score, and routes it to the correct queue or escalates to a human when confidence is below threshold.

This prompt template is the core instruction set for a confidence-driven routing system. It takes a support ticket as input and produces a structured routing decision. The model is instructed to classify the ticket, estimate its own confidence in that classification, and then make a routing decision based on a configurable threshold. The output is a strict JSON schema, making it suitable for direct integration into an automated triage pipeline. Before using this template, you must define your support queues, the classification taxonomy, and the minimum confidence score required for automated routing.

text
You are a support ticket routing classifier. Your task is to analyze a support ticket and produce a routing decision.

## INPUT
[TICKET_CONTENT]

## CLASSIFICATION TAXONOMY
[SUPPORT_QUEUES]

## INSTRUCTIONS
1.  **Classify:** Determine the single most appropriate destination queue for this ticket from the provided taxonomy.
2.  **Self-Assess:** Estimate your confidence in this classification on a scale from 0.0 (no confidence) to 1.0 (certain). Briefly state your reasoning.
3.  **Route:** Compare your confidence score to the auto-resolution threshold of [CONFIDENCE_THRESHOLD].
    *   If confidence is **at or above** the threshold, the routing decision is "autonomous_route".
    *   If confidence is **below** the threshold, the routing decision is "escalate_to_human".

## CONSTRAINTS
*   Do not answer the ticket. Only classify and route.
*   If the ticket content is empty or nonsensical, classify it as "unclassifiable" with a confidence of 0.0.
*   Your reasoning for the confidence score must be a concise, single sentence.

## OUTPUT_SCHEMA
You must respond with a single, valid JSON object matching this exact schema:
{
  "classification": {
    "destination_queue": "string",
    "confidence_score": "number",
    "confidence_reasoning": "string"
  },
  "routing_decision": "autonomous_route" | "escalate_to_human",
  "escalation_context": "string" // A brief summary of the ticket and the reason for escalation. Use an empty string if routing autonomously.
}

To adapt this prompt for your production system, replace the placeholders with your specific context. [TICKET_CONTENT] should be the full text of the incoming support request. [SUPPORT_QUEUES] must be a clear, structured list of your internal routing destinations, such as 'Billing, Technical Support, Account Management, Refunds'. The [CONFIDENCE_THRESHOLD] is a critical business parameter; start with a value like 0.85 and adjust based on your tolerance for misrouted tickets versus the cost of human review. The output is designed to be parsed by an application. If routing_decision is "autonomous_route", your system should forward the ticket to the destination_queue. If it is "escalate_to_human", your system should post the entire JSON payload, including the escalation_context, to a human review queue. Always validate the JSON output against the schema before acting on the decision to prevent downstream failures from malformed model responses.

IMPLEMENTATION TABLE

Prompt Variables

Inputs the prompt needs to work reliably. Validate each before sending to the model. Missing or malformed variables are the most common cause of silent routing failures.

PlaceholderPurposeExampleValidation Notes

[TICKET_TEXT]

Full body of the support ticket to classify and route

I can't log into the admin dashboard since this morning. Password reset isn't working either.

Required. Must be non-empty string. Reject if under 10 characters or only whitespace. Strip leading/trailing whitespace before sending.

[AVAILABLE_QUEUES]

List of valid destination queues with descriptions

["billing", "auth-iam", "onboarding", "bug-report", "account-recovery"]

Required. Must be a valid JSON array of strings. Validate each queue name against the system's actual queue registry before prompt assembly. Empty array should block routing.

[CONFIDENCE_THRESHOLD]

Minimum confidence score for auto-routing without escalation

0.85

Required. Must be a float between 0.0 and 1.0. Reject values below 0.5 for production use. Validate as numeric type, not string. Default to 0.80 if not explicitly configured.

[ESCALATION_QUEUE]

Destination queue for tickets that fall below confidence threshold

human-triage

Required. Must be a non-empty string matching a valid queue name. Validate against queue registry. Must differ from any queue in [AVAILABLE_QUEUES] to prevent loops.

[TICKET_METADATA]

Optional structured fields: priority, customer tier, language, channel

{"priority": "high", "customer_tier": "enterprise", "language": "en", "channel": "email"}

Optional. If provided, must be valid JSON object. Validate keys against allowed metadata schema. Null allowed. Do not inject unvalidated metadata into prompt.

[ROUTING_HISTORY]

Previous routing decisions for this ticket if this is a re-route

{"previous_queue": "billing", "previous_confidence": 0.62, "reroute_reason": "misclassification"}

Optional. If provided, must be valid JSON object with previous_queue and previous_confidence fields. Null allowed. Use to detect routing loops: block if same queue appears more than twice in history.

[OUTPUT_SCHEMA]

Expected JSON structure for the routing decision

{"destination_queue": "string", "confidence_score": "number", "escalate": "boolean", "reasoning": "string"}

Required. Must be a valid JSON Schema or example structure. Validate that destination_queue, confidence_score, and escalate fields are present. Parse check before sending to model to confirm schema is well-formed.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the confidence-driven routing prompt into a production support ticket pipeline with validation, retries, and human escalation.

This prompt is designed to be called synchronously within a ticket processing pipeline, typically after initial data extraction and before any automated response or agent assignment. The application layer must supply the full ticket payload—including subject, body, customer metadata, and any prior conversation context—as the [INPUT]. The [CONSTRAINTS] placeholder should be populated with a machine-readable routing policy: a list of valid destination queues, the minimum confidence threshold for auto-routing (e.g., 0.85), and any mandatory escalation categories (e.g., billing disputes, account closures). The [OUTPUT_SCHEMA] must enforce a strict JSON contract with fields for destination_queue, confidence_score, escalation_flag, and escalation_reason. Do not rely on the model to remember the schema; always include it inline or via structured output API parameters.

After receiving the model response, the application must validate the output before acting on it. Check that destination_queue is a non-empty string matching one of the allowed queues, that confidence_score is a float between 0 and 1, and that escalation_flag is a boolean. If escalation_flag is true, verify that escalation_reason is present and non-empty. If validation fails, retry once with the same prompt and append the validation error to the [CONSTRAINTS] as a correction hint. If the retry also fails, log the failure and route the ticket to a designated manual_review queue with the raw model output attached for diagnosis. For high-risk ticket categories defined in your routing policy, consider requiring a second-pass verification: run the prompt again with a slightly different system message and compare the two routing decisions. If they disagree, escalate to human review regardless of confidence score.

Model choice matters here. Use a model with strong instruction-following and structured output support, such as GPT-4o or Claude 3.5 Sonnet, and enable JSON mode or structured outputs if the provider supports it. Set temperature to 0 to minimize variance in routing decisions. Log every routing decision with the ticket ID, model version, prompt version, raw input, raw output, validation result, and final routing destination. This audit trail is essential for debugging misroutes and for demonstrating routing consistency to stakeholders. For production observability, emit a metric on the ratio of auto-routed to escalated tickets; a sudden spike in escalations may indicate a model behavior change, a data distribution shift, or a prompt regression. Wire this metric into your alerting system with a threshold tuned to your historical baseline.

IMPLEMENTATION TABLE

Expected Output Contract

Fields, types, and validation rules for the routing decision JSON object returned by the Confidence-Driven Routing Prompt for Support Tickets.

Field or ElementType or FormatRequiredValidation Rule

routing_decision

object

Top-level object must parse as valid JSON. Schema check: presence of all required child fields.

routing_decision.destination_queue

string

Must match one of the allowed enum values: [SUPPORT_L1, SUPPORT_L2, BILLING, TECHNICAL, ESCALATION_QUEUE]. Enum check.

routing_decision.confidence_score

number

Must be a float between 0.0 and 1.0 inclusive. Range check.

routing_decision.escalation_flag

boolean

Must be true if confidence_score < [CONFIDENCE_THRESHOLD], else false. Threshold adherence check.

routing_decision.reasoning

string

Must be a non-empty string. If escalation_flag is true, must contain a specific reference to the confidence gap. Content check.

routing_decision.alternative_queues

array of strings

If present, each string must be a valid queue name from the allowed enum. Null allowed if no alternatives. Enum and null check.

routing_decision.escalation_reason

string

Required if escalation_flag is true. Must be a non-empty string explaining the reason for escalation. Conditional required check.

PRACTICAL GUARDRAILS

Common Failure Modes

Confidence-driven routing fails silently when thresholds are wrong, scores are miscalibrated, or escalation payloads lack enough context for human reviewers. These are the most common production failure patterns and how to guard against them.

01

Overconfident Routing Below Threshold

What to watch: The model assigns high confidence to a wrong classification, routing a critical ticket to the wrong queue without escalation. This happens when the prompt lacks calibration examples or the model hasn't seen edge cases. Guardrail: Add few-shot examples of ambiguous tickets with correct low-confidence scores. Implement a secondary validation check that compares the predicted queue against ticket keyword heuristics and flags mismatches for review.

02

Escalation Payload Missing Decision Context

What to watch: The escalation record includes the confidence score but omits the original ticket text, alternative classifications, or the specific evidence gaps that caused low confidence. Human reviewers waste time reconstructing context instead of deciding. Guardrail: Define a strict escalation payload schema that requires original input, top-3 predicted classes with scores, and a required field for 'missing information' or 'ambiguity source.' Validate payload completeness before routing to the review queue.

03

Threshold Drift After Model Update

What to watch: A model upgrade changes the confidence score distribution, causing the same threshold to either escalate everything or nothing. The routing system silently degrades without alerting. Guardrail: Run a calibration check against a golden dataset of known-outcome tickets after every model change. Monitor the escalation rate in production and alert if it deviates more than 20% from the baseline without an intentional threshold change.

04

Confidence Score Without Uncertainty Type

What to watch: The prompt returns a single confidence number but doesn't distinguish between 'I'm uncertain because the input is ambiguous' versus 'I'm uncertain because this is outside my training data.' Reviewers can't prioritize effectively. Guardrail: Require the prompt to output both a confidence score and an uncertainty classification: ambiguous phrasing, missing information, conflicting evidence, or out-of-distribution. Route each type to different review workflows.

05

Escalation Loop When Reviewer Returns Incomplete Context

What to watch: A human reviewer resolves the escalation but the system re-escalates the same ticket because the prompt re-evaluates the original input without incorporating the reviewer's decision. Guardrail: Include the reviewer's resolution and any added context as a separate field in the prompt when re-processing. Add a rule that tickets with a recent human decision bypass confidence routing for a configurable cooldown period.

06

Silent Failure When Confidence Extraction Fails

What to watch: The model fails to produce a parseable confidence score due to output format drift, and the routing system defaults to either always-escalate or never-escalate without logging the failure. Guardrail: Implement a strict output schema validator that rejects malformed confidence scores. If parsing fails, force escalation with a 'confidence extraction failure' flag. Log every parse failure as a critical observability event, not a warning.

IMPLEMENTATION TABLE

Evaluation Rubric

How to test output quality before shipping. Run these checks on a labeled test set of at least 100 tickets with known correct queues.

CriterionPass StandardFailure SignalTest Method

Routing Accuracy

= 90% of tickets routed to the correct [DESTINATION_QUEUE] as labeled in the test set

Accuracy below 90% on the test set; systematic misrouting of a specific ticket category

Compare [DESTINATION_QUEUE] field against ground-truth labels in the 100-ticket test set; compute exact-match accuracy

Escalation Rate

Escalation flag is true for 10-25% of test set tickets, reflecting the expected ambiguity in the data

Escalation rate below 5% (under-escalation) or above 40% (over-escalation) on the test set

Count rows where [ESCALATION_FLAG] is true; divide by total test set size; confirm rate falls within the configured [MIN_ESCALATION_RATE] and [MAX_ESCALATION_RATE]

Confidence Score Calibration

Mean confidence for correctly routed tickets is >= 0.2 higher than mean confidence for incorrectly routed tickets

Overlap between confidence distributions of correct and incorrect routings; mean difference < 0.2

Group test set rows by routing correctness; compute mean [CONFIDENCE_SCORE] per group; compare distributions using a box plot or mean difference

Threshold Adherence

100% of tickets with [CONFIDENCE_SCORE] < [AUTO_RESOLUTION_THRESHOLD] have [ESCALATION_FLAG] set to true

Any ticket with confidence below threshold but escalation_flag false (missed escalation)

Filter test set to rows where [CONFIDENCE_SCORE] < [AUTO_RESOLUTION_THRESHOLD]; assert all rows have [ESCALATION_FLAG] equal to true

Output Schema Compliance

100% of outputs parse successfully against the expected JSON schema with all required fields present

JSON parse error; missing required field [DESTINATION_QUEUE], [CONFIDENCE_SCORE], or [ESCALATION_FLAG]; wrong data type in any field

Validate each output against the JSON schema using a programmatic schema validator; count parse failures and missing-field errors

Confidence Score Range

100% of [CONFIDENCE_SCORE] values are numbers between 0.0 and 1.0 inclusive

Any confidence score outside the 0.0-1.0 range; null or non-numeric value in the confidence field

Assert that every [CONFIDENCE_SCORE] value is a number and 0.0 <= score <= 1.0 using a type-and-range check script

Alternative Class Usefulness

When [ESCALATION_FLAG] is true, [ALTERNATIVE_CLASSES] contains at least one class and the correct class is in the list >= 80% of the time

Empty [ALTERNATIVE_CLASSES] array on an escalated ticket; correct class missing from alternatives on > 20% of escalated tickets

Filter to escalated tickets; check that [ALTERNATIVE_CLASSES] is a non-empty array; compute recall of the correct class within the alternatives list

Latency Budget

95th percentile end-to-end response time is under [MAX_LATENCY_MS] milliseconds

p95 latency exceeds the configured budget; timeout errors in production

Measure round-trip time from prompt submission to parsed output for each test set call; compute p95 and compare to [MAX_LATENCY_MS]

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a single model call and minimal validation. Replace [CONFIDENCE_THRESHOLD] with a hardcoded value (e.g., 0.85). Skip structured output enforcement initially—accept JSON or text and parse manually. Focus on getting the routing decision and confidence score shape right before adding guardrails.

Prompt snippet

code
Classify the support ticket and return a JSON object with "queue", "confidence", and "escalate" fields. If confidence is below [CONFIDENCE_THRESHOLD], set escalate to true.

Ticket: [TICKET_TEXT]

Watch for

  • Inconsistent JSON keys across runs
  • Confidence scores that don't correlate with actual correctness
  • Missing escalation flag when confidence is borderline
  • Model inventing queue names not in your routing table
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.