Inferensys

Prompt

User Intent Disambiguation Between Similar Options Prompt Template

A practical prompt playbook for using User Intent Disambiguation Between Similar Options Prompt Template in production AI workflows.
Developer doing prompt engineering on laptop, prompt variations visible on screen, casual coding session.
PROMPT PLAYBOOK

When to Use This Prompt

A practical guide for deploying the differential clarification prompt to resolve ambiguous user intents in production support and commerce assistants.

This prompt is designed for support and commerce assistants that must distinguish between two or more closely related user intents. Instead of re-listing every possible option and forcing the user to re-read a menu, this prompt generates a differential clarification. It identifies the single distinguishing factor between the top candidate intents and asks a targeted question about that factor. Use this when your intent classifier returns multiple high-confidence matches, when the cost of acting on the wrong intent is high (e.g., initiating a return vs. an exchange, or canceling a subscription vs. pausing it), or when you need to reduce decision fatigue in customer-facing chat.

The ideal workflow places this prompt after an intent classification step that produces a ranked list of candidate intents with confidence scores. You should only invoke it when the top two or three candidates are within a configurable confidence threshold (e.g., within 10% of each other) and the cost of a wrong action is non-trivial. The prompt requires the candidate intent labels, their brief descriptions, and the user's original message as inputs. It does not require the full conversation history, but including the last assistant turn can help avoid repeating information the user has already seen.

Do not use this prompt when the user's request is unambiguous, when there are more than three viable candidate intents (at which point a broader menu or triage flow is more appropriate), or when the distinguishing factor requires domain knowledge the user is unlikely to possess. For example, asking a customer to distinguish between ACH return code R01 and R02 is a failure mode—the clarification must be framed in terms the user can answer. Similarly, avoid this prompt in high-urgency scenarios where the delay of a clarification turn is worse than making a safe default assumption with a disclosure. In those cases, pair the assumption with an opt-out mechanism rather than blocking on user input.

PRACTICAL GUARDRAILS

Use Case Fit

This prompt template is designed for high-stakes disambiguation where the cost of choosing the wrong option is significant. It excels at highlighting the single differentiating factor between similar intents but requires structured input to avoid introducing its own framing bias.

01

Good Fit: High-Cost Selection Errors

Use when: The user is choosing between two or more options where an incorrect selection has a high operational cost, such as canceling a subscription vs. pausing it, or deleting a record vs. archiving it. Why it works: The prompt is engineered to isolate the single most critical distinguishing factor, reducing the user's cognitive load and the probability of a costly mis-click.

02

Bad Fit: Exploratory Browsing

Avoid when: The user is in a discovery phase, casually browsing similar products, or comparing features for general knowledge. Risk: Forcing a differential clarification in a low-stakes browsing context feels pedantic and creates unnecessary friction, disrupting the user's exploratory flow. Use a standard feature comparison prompt instead.

03

Required Inputs: A Curated Candidate Set

Requirement: This prompt is not a search or retrieval step. It requires a pre-ranked list of 2-4 highly similar candidate intents or options as input. Guardrail: Feeding it a long, noisy list of possibilities will produce a vague, unhelpful clarification. The upstream system must first narrow the field to near-duplicate candidates before invoking this template.

04

Operational Risk: Option Framing Bias

What to watch: The model's choice of the 'distinguishing factor' can inadvertently frame one option as the obvious or safer choice, biasing the user's decision. Guardrail: Implement an eval that checks the generated clarification for neutral, symmetrical language. A human reviewer should spot-check a sample of outputs for any implicit steering before production deployment.

05

Operational Risk: Decision Fatigue from Over-Clarification

What to watch: Deploying this prompt for every minor ambiguity will exhaust users with constant micro-decisions. Guardrail: Wrap this prompt in a Clarification Cost-Benefit Decision gate. Only invoke disambiguation when the confidence score for the top intent is below a defined threshold and the cost of a wrong assumption is high. Log all clarification requests to monitor the rate and adjust the threshold.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A copy-ready prompt for disambiguating closely related user intents by generating a single, differential clarification question.

This prompt template is designed for support and commerce assistants that must distinguish between two or more very similar user intents. Instead of re-listing all possible options and forcing the user to read a menu, this prompt instructs the model to identify the single most critical distinguishing factor and ask a targeted question about it. This reduces decision fatigue and keeps the conversation moving forward efficiently.

code
SYSTEM:
You are an intent disambiguation assistant. Your goal is to resolve ambiguity between closely related user intents with a single, precise question. Do not re-list all options. Instead, identify the one distinguishing factor that separates the top candidate intents and ask a question that directly targets that factor. Frame the question to be easily answered with a short phrase or a single selection.

USER INTENT CANDIDATES:
[CANDIDATE_INTENTS]

USER MESSAGE:
[USER_INPUT]

CONVERSATION HISTORY:
[CONVERSATION_HISTORY]

INSTRUCTIONS:
1. Analyze the user's message and conversation history against the provided intent candidates.
2. Identify the top two most likely intents that are easily confused.
3. Determine the single most important piece of information that would differentiate them.
4. Generate a concise clarification question that asks for that specific piece of information. Do not ask an open-ended "How can I help?" question.
5. If the user's intent is already clear and unambiguous, output "INTENT_CLEAR: [Intent Name]".
6. If the user's message is unrelated to all candidates, output "UNRELATED".

OUTPUT FORMAT:
If clarification is needed, output ONLY a JSON object with the following keys:
- "clarification_question": The single question to ask the user.
- "target_differentiator": A brief label for the distinguishing factor (e.g., "order_type", "account_access_level").
- "candidate_intents": An array of the two intent names being disambiguated.

If the intent is clear, output ONLY: "INTENT_CLEAR: [Intent Name]"
If the message is unrelated, output ONLY: "UNRELATED"

CONSTRAINTS:
- Do not output any text outside the specified JSON format or the clear/unrelated signals.
- Do not suggest actions or provide solutions. Only ask the clarifying question.
- The question must be answerable in a few words.

To adapt this template, replace the placeholders with your application's specific data. [CANDIDATE_INTENTS] should be a structured list of your system's possible intents, each with a name and a brief description. [USER_INPUT] is the latest message from the user, and [CONVERSATION_HISTORY] is the formatted history of the current session. The output format is designed for a programmatic harness: parse the JSON to extract the question and display it to the user, or route the INTENT_CLEAR and UNRELATED signals to the appropriate downstream logic. Before deploying, test this prompt with a golden dataset of ambiguous and unambiguous inputs to ensure the model correctly identifies the differentiating factor and does not default to a generic, unhelpful question.

IMPLEMENTATION TABLE

Prompt Variables

Required and optional inputs for the User Intent Disambiguation prompt. Each variable must be validated before the prompt is assembled to prevent option framing bias and ensure the model has enough signal to generate a differential clarification.

PlaceholderPurposeExampleValidation Notes

[USER_QUERY]

The raw user message containing the ambiguous intent

"I need to change my plan"

Non-empty string. Reject if length < 3 characters or contains only stop words. Log if query matches known injection patterns.

[CANDIDATE_OPTIONS]

The list of similar intents or options the user might be referring to

["Upgrade subscription tier", "Switch billing cycle", "Modify add-on services"]

Must contain 2-5 distinct options. Reject if options are duplicates, empty, or exceed 5 (triggers decision fatigue). Each option must be a concise label under 80 characters.

[DIFFERENTIATING_ATTRIBUTE]

The key dimension that distinguishes the candidate options from each other

"What changes about the plan: cost, duration, or features"

Non-empty string. Must name a single distinguishing axis, not a compound. Validate that the attribute actually differentiates the provided options; fail if all options share the same value on this axis.

[PRIOR_CONTEXT]

Relevant conversation history or session state that may resolve the ambiguity

"User mentioned annual billing in previous turn"

Nullable. If provided, must be a string under 500 tokens. Truncate with ellipsis if longer. If null, the prompt must rely solely on the current query.

[MAX_CLARIFICATION_OPTIONS]

The maximum number of options to present in the clarification question

2

Integer between 2 and 3. Default to 2. Values above 3 increase decision fatigue and should be rejected unless explicitly approved for the use case.

[CONFIDENCE_THRESHOLD]

Minimum confidence score required to skip clarification and proceed with the top intent

0.85

Float between 0.0 and 1.0. Default to 0.85. Lower values increase false-positive intent matching; higher values increase unnecessary clarification rate. Log when threshold is overridden.

[OUTPUT_FORMAT]

The structure the clarification response must follow

"json" or "markdown"

Must be one of: "json", "markdown". Default to "json" for programmatic consumption. If "markdown", validate that the output still contains machine-parseable option identifiers for downstream routing.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the User Intent Disambiguation prompt into a production application with validation, retries, and observability.

This prompt is designed to be called as a mid-dialogue intervention, not a standalone classifier. It should be triggered when your primary intent classifier returns two or more candidate intents with confidence scores within a configurable ambiguity threshold (e.g., top two scores within 0.15 of each other). The prompt expects a structured input containing the user's original utterance, the list of ambiguous candidate intents with their descriptions, and the conversation history for context. The output is a single clarification question that highlights the distinguishing factor between the top candidates, avoiding a re-listing of all options. This keeps the user experience focused and reduces decision fatigue.

To wire this into an application, implement a pre-call validation layer that checks the input schema before sending the request. The [AMBIGUOUS_INTENTS] array must contain at least two intents, each with an intent_name and description field. The [CONVERSATION_HISTORY] should be a serialized list of prior user and assistant turns. On the output side, parse the model's response against a strict schema: {"clarification_question": string, "distinguishing_factor": string, "options": [{"label": string, "maps_to_intent": string}]}. If the output fails schema validation, implement a single retry with the validation error message appended to the prompt as a correction instruction. If the retry also fails, fall back to a static clarification template that lists the top two intent names and asks the user to choose, ensuring the conversation never dead-ends. Log every disambiguation event—including the ambiguous intents, the generated question, and the user's eventual choice—to a structured logging system for later eval and prompt refinement.

For model choice, a fast, cost-effective model (like GPT-4o-mini or Claude Haiku) is usually sufficient, as this is a low-latency, structured generation task. Avoid using this prompt for intents that differ by a critical safety or permission boundary; in those cases, route to a dedicated safety classifier first. Never expose the raw maps_to_intent field to the user, as it leaks internal system logic. The user should only see the label text. Finally, build an eval harness that measures two key metrics: option framing bias (whether the clarification question subtly favors one option) and resolution rate (the percentage of disambiguation turns that result in a clear user selection without a follow-up clarification). Run this eval suite against a golden dataset of known ambiguous utterance pairs before any prompt update is deployed.

IMPLEMENTATION TABLE

Expected Output Contract

Define the exact structure, types, and validation rules for the differential clarification output. Use this contract to build a parser and validator in your application harness before deploying the prompt.

Field or ElementType or FormatRequiredValidation Rule

differential_question

string

Must contain exactly one question. Must explicitly name the distinguishing factor between the top two candidate intents. Length must be between 20 and 200 characters.

top_candidates

array of objects

Array must contain exactly 2 objects. No more, no less. Each object must have 'intent_label' (string) and 'distinguishing_factor' (string) fields.

top_candidates[].intent_label

string

Must match a value from the [CANDIDATE_INTENTS] input list exactly. No paraphrasing or synonym substitution allowed.

top_candidates[].distinguishing_factor

string

Must describe the single, most salient feature that separates this candidate from the other. Must not repeat the intent label. Length between 10 and 100 characters.

discarded_candidates

array of strings

If present, each string must match a value from [CANDIDATE_INTENTS] that was not included in top_candidates. Null or empty array is acceptable when only two candidates exist.

suggested_user_options

array of strings

Must contain exactly 2 short, mutually exclusive reply options that a user can click or say. Each option must be under 15 characters. Options must not be 'Yes' or 'No'.

confidence_score

number

Must be a float between 0.0 and 1.0. Represents the model's confidence that the differential framing is correct. If below 0.7, the harness should escalate to a human agent instead of showing the clarification.

rationale

string

If present, must be a single sentence under 150 characters explaining why this differential framing was chosen. Must not contain PII or raw user input. Used for debug logs only, not shown to the user.

PRACTICAL GUARDRAILS

Common Failure Modes

When disambiguating similar user intents, these failures erode trust, waste context budget, and increase decision fatigue. Each card pairs a common failure with a concrete guardrail.

01

Option Framing Bias

What to watch: The prompt's differential clarification subtly favors one option by listing it first, using more positive language, or framing it as the default. Users anchor on the presented order rather than their actual need. Guardrail: Randomize option order in the clarification prompt and use a neutral comparison structure that highlights the distinguishing factor without evaluative adjectives.

02

Re-Listing Instead of Differentiating

What to watch: The model regurgitates all available options with full descriptions instead of isolating the single distinguishing factor between the top candidates. This wastes tokens and forces the user to re-evaluate everything. Guardrail: Constrain the output schema to a single differential question field and a max two-sentence explanation of the trade-off. Validate that the response does not repeat option descriptions already in context.

03

False Equivalence When One Option Dominates

What to watch: The model presents a clarification choice between options when one clearly matches the user's stated constraints and the other violates them. This creates unnecessary friction and makes the assistant appear incompetent. Guardrail: Add a pre-clarification check step that scores each option against explicit user constraints. Suppress the clarification and proceed if one option exceeds a 0.9 confidence threshold.

04

Clarification Loop Without Escape

What to watch: The user answers the differential clarification, but the model asks a follow-up clarification on a new dimension, trapping the user in a multi-turn interrogation. Each turn burns context budget and patience. Guardrail: Set a maximum of one differential clarification per intent. If ambiguity remains after the user's response, proceed with the best option and disclose the assumption in the response.

05

Ignoring Implicit User Preference Signals

What to watch: The prompt treats all ambiguity as equal and ignores signals from conversation history, user profile, or prior turns that already disambiguate the intent. The clarification asks the user to repeat information they already provided. Guardrail: Include prior turn context and user preference slots in the disambiguation prompt. Require the model to cite the specific missing signal before generating a clarification question.

06

Decision Fatigue from Over-Explanation

What to watch: The differential clarification includes excessive background, edge cases, and caveats that overwhelm the user. The distinguishing factor gets buried in prose, and the user defaults to the first option or abandons the interaction. Guardrail: Enforce a strict output length limit on the clarification text. Use a template that places the distinguishing factor in the first sentence and defers non-critical details to a collapsible or follow-up response.

IMPLEMENTATION TABLE

Evaluation Rubric

Use this rubric to evaluate the quality of the disambiguation prompt's output before shipping. Each criterion targets a specific failure mode common in differential clarification.

CriterionPass StandardFailure SignalTest Method

Differential Framing

The clarification highlights the single distinguishing factor between [OPTION_A] and [OPTION_B], not a re-listing of all features.

Output reads like a generic comparison table or re-states the full description of each option without isolating the difference.

Human review: Does the question force a choice on one axis? Automated check: Count of unique differentiating keywords vs. total option description tokens.

Option Framing Bias

Both options are presented with neutral, symmetric language. No option is framed as the default, recommended, or obviously superior choice.

One option uses positive valence language (e.g., 'best', 'recommended', 'full') while the other uses negative or diminutive language (e.g., 'basic', 'limited', 'just').

LLM-as-judge with a pairwise bias rubric. Prompt the judge: 'Does this clarification favor one option over the other?' Pass if score is 'No detectable bias'.

Decision Fatigue Reduction

The user is presented with exactly two choices, or a single clarifying question with a constrained yes/no or A/B answer. No open-ended questions.

The output asks 'Which one would you like?' or 'Can you tell me more about what you need?' without constraining the response format.

Parse check: The output must end with a question mark and contain a constrained choice indicator (e.g., 'Option A or Option B?'). Fail if open-ended.

Schema Compliance

The output is valid JSON matching the expected schema with fields for clarification_question, differential_axis, option_a_context, and option_b_context.

Missing required field differential_axis. Output is plain text instead of JSON. Field option_a_context contains a null value when [OPTION_A] context was provided.

Automated JSON schema validation in the harness. Check field presence, type, and null constraints. Fail on any schema violation.

Context Relevance

The differential axis directly references the user's stated need or the specific ambiguity in their input. It does not introduce a generic or unrelated distinction.

The differential axis is a generic property (e.g., 'price', 'speed') that was not implied by the user's query or the ambiguous options.

Semantic similarity check: Cosine similarity between the user's input embedding and the differential_axis description embedding must exceed 0.6.

Confidence Threshold Adherence

If the model's internal confidence in the top intent is above the [CONFIDENCE_THRESHOLD], it should proceed without clarification. The rubric only applies when confidence is below the threshold.

The clarification prompt is triggered even when the model reports high confidence (>0.9) in a single intent, causing unnecessary friction.

Harness check: Assert that the disambiguation prompt is only called when the upstream intent classifier's confidence score is less than [CONFIDENCE_THRESHOLD].

Abstention on Unresolvable Ambiguity

If the options are functionally identical for the user's stated goal, the output correctly states that either option works and asks for confirmation to proceed with a sensible default.

The model invents a spurious or trivial distinction (e.g., 'one has a blue icon') to force a clarification when none is needed.

Edge case test: Provide two options with identical capabilities for the user's goal. Pass if the output recommends proceeding without a forced distinction. Fail if it generates a trivial question.

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a frontier model (GPT-4o, Claude 3.5 Sonnet). Remove the [OUTPUT_SCHEMA] constraint and ask for plain text with bulleted options. Skip confidence scoring and just ask the model to highlight the key difference between the top two intents.

code
User said: [USER_INPUT]
Possible intents: [INTENT_LIST]

Identify the two most likely intents and write one sentence that explains the key difference between them. Then ask the user which one they meant.

Watch for

  • The model may re-list all options instead of isolating the distinguishing factor
  • Without schema enforcement, the clarification question may drift into open-ended "How can I help?" language
  • No way to measure if the clarification actually reduced ambiguity
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.