Inferensys

Prompt

Unanswered Question Re-Surfacing Prompt

A practical prompt playbook for using the Unanswered Question Re-Surfacing Prompt in production AI workflows to recover dropped user questions without disrupting conversation flow.
Wide-angle shot of a modern WeWork open floor plan with creative walls covered in AI system architecture diagrams, product team collaborating in standing desk area with industrial lighting.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the job, reader, and constraints for re-surfacing unanswered questions in chat assistants.

This prompt is for chat assistant builders who need to recover dropped user questions without disrupting the current conversation flow. The core job-to-be-done is: given the current conversation state and a list of previously unanswered questions, generate a natural re-surfacing message that reintroduces the question at an appropriate moment. The ideal user is an engineering lead or developer integrating this into a production chat system where dropped questions are a known failure mode—common in support agents, task-oriented copilots, and any multi-turn assistant where users ask multiple questions across turns.

Use this prompt when you have a reliable upstream detection system that identifies unanswered questions with turn references and severity indicators. The prompt requires [CURRENT_CONVERSATION], [UNANSWERED_QUESTIONS] (a structured list with question text, turn reference, and age), and [CONVERSATION_PHASE] to determine timing appropriateness. Do not use this prompt when the current turn is mid-clarification, when the user is actively correcting a prior assistant error, or when the unanswered question is older than the session's relevance window. The prompt is designed for single-question re-surfacing per invocation; batching multiple unanswered questions requires a separate prioritization step before calling this prompt.

Before wiring this into production, implement a timing gate that checks whether the current conversation phase is appropriate for interruption. The prompt includes a [TIMING_CHECK] constraint that should be evaluated programmatically before invocation—do not rely on the model alone to decide when to re-surface. Pair this prompt with the Pending Question Detection Prompt to build the unanswered question list, and use the Unanswered Question Severity Scoring Prompt to prioritize which question to re-surface first. For high-stakes domains like healthcare or legal support, require human review of the re-surfacing message before it reaches the user, and log every re-surfacing event with the question reference, timing decision, and user response for auditability.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Unanswered Question Re-Surfacing Prompt works, where it fails, and what you must have in place before deploying it.

01

Good Fit: Structured State Tracking

Use when: you maintain an explicit list of unanswered questions with turn references. The prompt works best when it receives a clean data structure, not when it must infer questions from raw transcripts. Guardrail: always pass a machine-generated pending-question list rather than asking the model to detect questions and re-surface them in one step.

02

Bad Fit: Real-Time Voice Agents

Avoid when: latency budgets are under 500ms or the assistant must respond before the user finishes speaking. Re-surfacing logic requires reading prior state and deciding whether to interrupt the current topic. Guardrail: in voice settings, defer re-surfacing to turn boundaries or explicit user prompts like "what am I waiting on?"

03

Required Inputs

Must have: current conversation context, a structured list of unanswered questions with IDs and original turn references, and the assistant's last response. Guardrail: if the pending-question list is empty or stale, skip the prompt entirely rather than generating a forced re-surfacing message that invents dropped questions.

04

Operational Risk: Timing Inappropriateness

Risk: the prompt re-surfaces an old question while the user is mid-flow on a new urgent task, causing frustration. Guardrail: add a timing gate that checks whether the current turn is a natural pause point, a topic boundary, or a user-initiated status check before inserting a re-surfacing message.

05

Operational Risk: Tone Mismatch

Risk: the re-surfacing message sounds robotic, apologetic, or pushy, eroding user trust. Guardrail: calibrate tone based on question severity and session age. Low-severity questions dropped minutes ago can be casual; high-severity questions dropped hours ago require acknowledgment of the delay.

06

Not a Replacement for State Management

Risk: teams treat this prompt as the sole mechanism for tracking unanswered questions, leading to drift between the model's memory and reality. Guardrail: this prompt is a presentation layer. The source of truth must be a deterministic state machine or database that survives model boundaries and session restarts.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A reusable prompt with square-bracket placeholders that generates a natural re-surfacing message for unanswered questions without disrupting the current conversation flow.

The prompt template below is designed to be copied directly into your prompt management system or codebase. It accepts the current conversation state and a structured list of previously unanswered questions, then produces a single re-surfacing message that reintroduces the dropped question in a way that feels helpful rather than disruptive. The template uses square-bracket placeholders for all dynamic inputs—replace these with your application's actual data before sending the request to the model.

text
You are an assistant that helps users without dropping their questions. Your task is to reintroduce a previously unanswered question into the current conversation in a natural, non-disruptive way.

## CURRENT CONVERSATION STATE
[CONVERSATION_HISTORY]

## UNANSWERED QUESTIONS
Below is a list of questions the user asked earlier that have not yet been answered. Each entry includes the original question, the turn when it was asked, and a severity score indicating how important it is to address.

[UNANSWERED_QUESTIONS_JSON]

## CONSTRAINTS
- Do NOT reintroduce a question if the user's current turn is actively addressing a high-urgency issue or if the user is mid-task on something that would be disrupted by an interruption.
- If the current conversation topic naturally connects to an unanswered question, weave the re-surfacing into the flow. Otherwise, wait for a natural pause or transition point.
- If multiple questions are pending, surface the highest-severity question first. Do not dump a list of forgotten questions all at once.
- If a question has become irrelevant due to later conversation turns, do not re-surface it. Instead, note that it has been implicitly resolved.
- Acknowledge the delay briefly without over-apologizing. One short acknowledgment is sufficient.
- Maintain the same tone and helpfulness level as the rest of the conversation.

## OUTPUT FORMAT
Return a JSON object with the following fields:
- `should_surface` (boolean): Whether now is an appropriate time to re-surface any unanswered question.
- `question_to_surface` (string or null): The ID of the question being surfaced, from the input list.
- `surface_message` (string or null): The exact message to send to the user. Write this as a natural conversational turn.
- `implicitly_resolved` (array of strings): List of question IDs that appear to have been resolved by later conversation turns.
- `reasoning` (string): Brief explanation of the decision, for logging and debugging.

## EXAMPLES
[FEW_SHOT_EXAMPLES]

## RISK LEVEL
[RISK_LEVEL]

Adaptation guidance: Replace [CONVERSATION_HISTORY] with the recent turns formatted as a clear dialogue transcript. [UNANSWERED_QUESTIONS_JSON] should be a JSON array of objects, each containing at minimum an id, question_text, turn_number, and severity_score. The [FEW_SHOT_EXAMPLES] placeholder should be populated with 2–3 examples showing both appropriate surfacing moments and appropriate deferral decisions. Set [RISK_LEVEL] to low, medium, or high to adjust the model's caution—high-risk domains like healthcare or finance should bias toward surfacing rather than silently dropping questions. Before deploying, validate that the output JSON parses correctly and that surface_message is never injected when should_surface is false.

IMPLEMENTATION TABLE

Prompt Variables

Required and optional inputs for the Unanswered Question Re-Surfacing Prompt. Each placeholder must be populated before the prompt is assembled and sent to the model.

PlaceholderPurposeExampleValidation Notes

[CURRENT_TURN_INPUT]

The user's most recent message or query in the active conversation turn.

I need to update the billing address for account 4421.

Required. Must be a non-empty string. Validate that it is the raw user text, not a pre-processed summary.

[CONVERSATION_HISTORY]

The full or summarized transcript of the conversation so far, excluding the current turn.

User: Can you check my last payment? Assistant: It was $49.99 on March 1st. User: Okay, and what about the invoice?

Required. Must be a string. Validate that it contains at least one prior user-assistant exchange. If the session is new, this should be an explicit empty string or null marker.

[UNANSWERED_QUESTIONS_LIST]

A structured list of questions from prior turns that were detected as unanswered, including their original turn reference.

[{"question": "What about the invoice?", "turn_id": 4, "severity": "medium"}]

Required. Must be a valid JSON array. Validate that each object has a 'question' field. If no questions are pending, pass an empty array [].

[CURRENT_TOPIC_SUMMARY]

A brief summary of the current conversation topic to help the model decide if re-surfacing is appropriate.

User is updating account billing details.

Required. Must be a string. Validate that it is a concise summary, not a full turn dump. If unavailable, pass a short description of the current turn intent.

[RE_SURFACING_POLICY]

Instructions defining when it is appropriate to re-surface a question, including timing constraints and tone rules.

Only re-surface if the current task is complete. Do not interrupt an active troubleshooting flow. Use a helpful, non-accusatory tone.

Required. Must be a string. Validate that it contains explicit rules for timing and tone. This is a system-level policy, not a user input.

[MAX_QUESTIONS_TO_SURFACE]

The maximum number of unanswered questions the model is allowed to re-introduce in a single response.

2

Optional. Must be an integer >= 1. Defaults to 1 if not provided. Validate that the model output does not exceed this count.

[SESSION_METADATA]

Contextual metadata about the session, such as session duration, user type, or channel, to inform tone and urgency.

{"session_duration_minutes": 12, "channel": "support_chat"}

Optional. Must be a valid JSON object. Validate that it does not contain PII. Used only for tone calibration, not for decision logic.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Unanswered Question Re-Surfacing Prompt into a production chat application with validation, state management, and safety checks.

Integrating the re-surfacing prompt into an application requires a stateful middleware layer that tracks unanswered questions across turns. The application must maintain a structured list of pending questions—each with a unique ID, the original turn reference, a severity score, and a staleness timestamp—outside the model's context window. Before each assistant response generation, the harness checks this pending queue. If items exist and a set of gating conditions are met (e.g., the current turn is not itself a clarification, the user hasn't explicitly asked to pause, and a minimum number of turns have passed since the question was dropped), the harness injects the re-surfacing prompt with the current conversation context and the oldest or highest-severity pending question. The model's output is then parsed to extract the re-surfacing message, which is prepended to the main assistant response.

Validation is critical because a poorly timed or tonally off re-surfacing message erodes user trust faster than a dropped question. The harness should validate the model's output against a strict schema: the response must contain a re_surface_message string and a should_surface boolean. If should_surface is false, the harness respects the model's decision and leaves the question in the pending queue for a future turn. If true, the harness logs the re-surfacing attempt, marks the question as surfaced with a timestamp, and increments a retry counter. If a question has been surfaced more than a configured maximum (e.g., 2 attempts) without user engagement, the harness should escalate it to a human review queue or append it to a session closeout checklist instead of retrying. Implement a circuit breaker: if the user explicitly dismisses the re-surfaced question or changes the topic sharply, immediately suppress further re-surfacing for that session to prevent harassment.

Model choice matters here. This prompt requires strong instruction-following and nuanced tone control. GPT-4o, Claude 3.5 Sonnet, and Gemini 1.5 Pro are all suitable. Avoid smaller or older models that may conflate re-surfacing with answering the question inline or produce overly apologetic language. Set temperature low (0.0–0.2) to keep the should_surface decision stable. Log every re-surfacing decision—including the pending question ID, the model's boolean output, the generated message, and the user's subsequent response—to a structured observability pipeline. This data is essential for tuning the gating conditions, evaluating the prompt's effectiveness, and detecting regressions when the prompt or model version changes. Never surface a question that contains PII or sensitive content without redaction; apply a PII scrub to the pending question text before it enters the prompt template.

IMPLEMENTATION TABLE

Expected Output Contract

Defines the exact fields, types, and validation rules for the re-surfacing message generated by the prompt. Use this contract to parse the model output programmatically and to write post-generation validation checks before the message is shown to the user.

Field or ElementType or FormatRequiredValidation Rule

resurface_message

string

Must be a non-empty string. Must not exceed 300 characters. Must contain a direct or indirect reference to the original question from [UNANSWERED_QUESTION].

original_question_reference

string

Must be a substring or close paraphrase of the text in [UNANSWERED_QUESTION]. A semantic similarity check against the original question text should exceed a threshold of 0.8.

transition_phrase

string

Must be present and match one of the allowed patterns defined in [TRANSITION_STRATEGY], such as 'While we are on that...' or 'Circling back to your earlier point...'. A regex match against the allowed list is required.

topic_bridge

string

If present, must contain a noun phrase from the [CURRENT_TOPIC] to create a logical link. If null, the message must not fabricate a connection where none exists.

tone_marker

string

Must be a single token from the allowed enum: ['casual', 'neutral', 'formal']. Must match the tone detected in the last two user turns from [CONVERSATION_HISTORY].

confidence_score

float

Must be a number between 0.0 and 1.0 representing the model's confidence that the question is still relevant and unanswered. If below [CONFIDENCE_THRESHOLD], the message should be suppressed.

suppression_flag

boolean

Must be true if the model determines the question should not be re-surfaced (e.g., it was implicitly answered, the user is angry, or the topic is closed). If true, resurface_message must be an empty string.

rationale

string

If suppression_flag is true, this field is required and must contain a brief, specific reason for suppression, referencing evidence from [CONVERSATION_HISTORY].

PRACTICAL GUARDRAILS

Common Failure Modes

Re-surfacing dropped questions is a delicate operation. The most common failures stem from poor timing, tone miscalibration, and state tracking errors. These cards cover what breaks first and how to guard against it.

01

Interrupting the Current Workflow

What to watch: The prompt re-surfaces an old question while the user is mid-task on a new, unrelated workflow, causing frustration and context pollution. Guardrail: Gate the re-surfacing prompt behind a topic-shift detector. Only inject the reminder when the current task is complete or the user explicitly asks for a summary.

02

Over-Apologizing and Eroding Trust

What to watch: The generated message is overly apologetic ('I'm so sorry I forgot...'), which highlights the system's failure and makes the user doubt its reliability. Guardrail: Constrain the tone in the prompt to be neutral and action-oriented. Use phrasing like 'Earlier you asked about...' instead of 'I apologize for dropping...'.

03

Re-Surfacing Stale or Implicitly Answered Questions

What to watch: The system re-asks a question the user already answered implicitly in a later turn, making the assistant seem inattentive. Guardrail: Before re-surfacing, run a staleness check. Compare the unanswered question against subsequent user turns to see if the answer was provided indirectly. Retire questions that have been implicitly resolved.

04

Burying the Question in a Wall of Text

What to watch: The re-surfaced question is appended to a long, dense response, causing the user to miss it entirely. Guardrail: Structure the output to visually separate the re-surfaced question. Use a dedicated section like '📝 A quick follow-up on your earlier question:' and place it at the end of the main response, not in the middle.

05

Re-Surfacing Without Full Context

What to watch: The prompt re-introduces the question but fails to include the original context, forcing the user to repeat themselves. Guardrail: The prompt template must include a [PRIOR_CONTEXT] variable that injects the user's original message and any relevant details. The generated message should summarize the context before re-asking.

06

Flooding the User with a Backlog

What to watch: The system detects five unanswered questions and tries to re-surface them all at once, overwhelming the user. Guardrail: Implement a priority queue. The re-surfacing prompt should only handle the single highest-severity question per turn. Use a separate severity scoring prompt to rank the backlog before injection.

IMPLEMENTATION TABLE

Evaluation Rubric

Use this rubric to evaluate the quality of the re-surfacing message before shipping. Each criterion should be tested with a set of conversation transcripts containing known unanswered questions.

CriterionPass StandardFailure SignalTest Method

Question Accuracy

The re-surfaced question is semantically identical to the original unanswered question from [CONVERSATION_HISTORY].

The message introduces a question the user never asked, hallucinates details, or misrepresents the original intent.

Human review of 50 samples comparing the re-surfaced question to the source turn in the transcript.

Timing Appropriateness

The message is inserted at a natural conversation boundary (e.g., after a topic concludes) and not during an active, high-focus task.

The message interrupts the user mid-sentence, derails a critical workflow, or appears after the user has implicitly answered the question.

Automated check using [TOPIC_BOUNDARY_MARKERS] from the conversation state; manual spot-check on 20 complex dialogues.

Tone Calibration

The message matches the assistant's defined [TONE_PROFILE] and does not sound accusatory, overly apologetic, or robotic.

The message uses phrases like 'You forgot to answer...', 'As I already asked...', or an excessive apology that degrades user confidence.

LLM-as-judge evaluation using a pairwise comparison against a golden set of tone-calibrated examples.

Non-Disruption of Current Flow

The message acknowledges the current topic before bridging to the unresolved question, maintaining conversational coherence.

The message abruptly changes the subject, ignores the user's last turn, or forces a context switch without a transition.

Parse check for a bridging phrase in the output; human eval on whether the transition feels natural in 30 transcripts.

Deduplication

The message is suppressed if the [UNANSWERED_QUESTIONS_LIST] contains a question that is semantically equivalent to the current user turn.

The assistant re-surfaces a question the user just answered, creating a frustrating and redundant interaction.

Automated semantic similarity check (cosine similarity > 0.85) between the re-surfaced question and the last user turn; flag for review if threshold exceeded.

Staleness Handling

If the question is marked as stale in [UNANSWERED_QUESTIONS_LIST], the message is either suppressed or reframed to check for continued relevance.

The assistant re-surfaces a question from 20 turns ago that is clearly no longer relevant to the conversation's outcome.

Unit test with a mock [UNANSWERED_QUESTIONS_LIST] containing a stale flag; verify output is null or contains a relevance-check preamble.

Output Schema Compliance

The output is valid JSON conforming to the [OUTPUT_SCHEMA] with all required fields present and correctly typed.

The output is a raw string, missing the re_surface_message field, or contains an invalid should_surface boolean.

Automated schema validation in the test harness against the defined JSON Schema.

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a simple list of [UNANSWERED_QUESTIONS] and the [CURRENT_TURN] text. Accept natural-language output without strict schema enforcement. Focus on tone and timing heuristics in the prompt instructions.

Prompt modification

Add a lightweight instruction: If re-surfacing feels forced or interrupts an urgent user request, output "NO_RE_SURFACE" instead.

Watch for

  • Re-surfacing questions when the user is mid-crisis or mid-transaction
  • Overly apologetic tone that erodes confidence
  • Re-surfacing rhetorical questions or small talk
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.