Inferensys

Prompt

Stale Question Re-Evaluation Prompt

A practical prompt playbook for using the Stale Question Re-Evaluation Prompt in production AI workflows to automatically retire or re-queue old unanswered questions.
Elegant overhead shot of a polished wooden communal table in a sun-drenched WeWork lounge, laptops and tablets displaying AI workflow dashboards, plants and pendant lights in background.
PROMPT PLAYBOOK

When to Use This Prompt

Determine if a pending question is still relevant, has been implicitly answered, or should be retired before re-surfacing it to a user or agent.

Long-running chat sessions accumulate unanswered questions. Some become irrelevant as the conversation evolves—the user finds the answer themselves, the context shifts, or the assistant's subsequent response makes the original question moot. This prompt evaluates a single pending question against the conversation that followed it, producing a structured decision: still relevant, implicitly answered, or ready for retirement. It is designed for state management middleware that needs to clean up stale open items before re-surfacing them to the user or passing them to a human agent. The ideal user is an AI engineer or backend developer building a pending-question tracker that holds items older than a configurable number of turns and requires an automated decision before re-queuing or discarding them.

Use this prompt when your system maintains a queue of unanswered questions and you need to filter out items that no longer require attention. The prompt requires three inputs: the original question text, the conversation turns that occurred after the question was asked, and a staleness threshold expressed in number of turns. It outputs a classification label, a confidence score, and a brief rationale that can be logged for audit purposes. The confidence score enables automated retirement decisions above a configurable threshold while routing low-confidence cases for human review. This is not a prompt for detecting new questions or for generating answers—it assumes the question has already been identified and stored by upstream detection logic.

Do not use this prompt when the conversation is shorter than the staleness threshold, when the question was asked in the most recent turn, or when you need to answer the question rather than classify its relevance. It is also inappropriate for real-time interruption scenarios where latency constraints prevent a full re-evaluation pass. For high-stakes domains such as healthcare or legal support, always route retirement decisions with confidence scores below 0.9 to human review rather than automating disposal. The prompt works best as part of a scheduled cleanup job that runs periodically on the pending-question store, not as a synchronous step in the user-facing response path.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Stale Question Re-Evaluation Prompt works and where it introduces risk. Use these cards to decide if this prompt fits your production architecture.

01

Good Fit: Long-Running Support Sessions

Use when: A support session spans many turns and a question asked 10 turns ago may have been implicitly resolved by later troubleshooting steps. Guardrail: Always provide the full conversation segment after the question was asked, not just the question text, so the model can detect implicit resolution.

02

Bad Fit: Real-Time Safety-Critical Systems

Avoid when: The question involves clinical decisions, safety commands, or emergency protocols where automated retirement could suppress a still-relevant risk. Guardrail: Route to human review for any question tagged with severity=critical, regardless of the model's staleness confidence score.

03

Required Input: Conversation Context Window

What to watch: Supplying only the pending question without the conversation that followed makes staleness detection impossible. Guardrail: The prompt must receive both the original question with its turn index and the full conversation segment from that turn to the current turn, with clear delimiters.

04

Operational Risk: Premature Retirement

What to watch: The model retires a question as stale when the user simply hasn't had a chance to return to it yet. Guardrail: Set a minimum turn threshold before staleness evaluation triggers, and require confidence scores above 0.85 for automated retirement. Below that, re-surface the question instead.

05

Operational Risk: Implicit Answer Misdetection

What to watch: The model claims a question was implicitly answered when the conversation only tangentially touched the topic. Guardrail: Require the model to cite the specific turn and text that constitutes the implicit answer. If no citation exists, the question must remain active.

06

Variant: Escalation Before Retirement

What to watch: Automatically retiring a question without user confirmation can hide dropped work. Guardrail: For questions with severity above medium, generate a confirmation message to the user before retirement. Only auto-retire low-severity questions with high confidence.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A copy-ready template for evaluating whether a previously unanswered question is still relevant given the conversation that followed, returning a structured decision with confidence scoring.

This prompt template is designed to be dropped into a state management middleware layer. It takes a single pending question and the conversation turns that occurred after it was asked, then determines whether the question is still relevant, has been implicitly answered, or should be retired. The output is a structured JSON decision with a confidence score, enabling automated retirement of stale questions without losing track of unresolved ones.

text
You are a conversation state auditor. Your job is to evaluate whether a previously unanswered question is still relevant given the conversation that followed.

## INPUTS

**Pending Question:**
[PENDING_QUESTION]

**Conversation Since Question Was Asked:**
[SUBSEQUENT_CONVERSATION]

**Current Conversation Phase:**
[CURRENT_PHASE]

## EVALUATION CRITERIA

1. **Implicitly Answered**: Did the assistant or another participant provide information that addresses the question, even if not framed as a direct answer?
2. **Context Shift**: Has the conversation moved to a completely different topic, making the question irrelevant to the current context?
3. **User Abandonment**: Did the user explicitly drop the topic, change the subject, or show disinterest in the answer?
4. **Temporal Staleness**: Is the question time-sensitive in a way that makes it obsolete now?
5. **Dependency Invalidation**: Has new information made the question's premise invalid or the answer no longer useful?

## OUTPUT SCHEMA

Return a JSON object with the following fields:

```json
{
  "question_id": "string - identifier for the pending question",
  "relevance_decision": "still_relevant | implicitly_answered | stale_context_shift | user_abandoned | temporally_stale | premise_invalidated",
  "confidence": 0.0-1.0,
  "rationale": "string - brief explanation citing specific evidence from the conversation",
  "evidence_turn_references": ["array of turn indices or timestamps supporting the decision"],
  "recommended_action": "re_surface | retire | hold_for_re_evaluation | escalate_to_human",
  "retirement_safety_check": {
    "would_user_be_harmed_by_retirement": true/false,
    "explanation": "string - if true, explain the potential harm"
  }
}

CONSTRAINTS

  • Do not retire a question if the user would be harmed by losing the answer.
  • If confidence is below 0.7, recommend hold_for_re_evaluation or escalate_to_human.
  • Cite specific turn references when providing evidence.
  • If the question relates to safety, compliance, or a blocking dependency, default to still_relevant unless there is explicit evidence of resolution.
  • Do not infer abandonment from silence alone; look for explicit topic shifts or user statements.

EXAMPLES

Example 1: Implicitly Answered Pending Question: "What's the SLA for premium support?" Subsequent Conversation: "...and as I mentioned earlier, premium support guarantees a 4-hour response time for all P1 issues..." Decision: implicitly_answered, confidence 0.95

Example 2: Context Shift Pending Question: "Can you explain the pricing model?" Subsequent Conversation: User says "Actually, let's switch gears. I need help with the API integration instead." followed by 10 turns about API endpoints. Decision: stale_context_shift, confidence 0.85

Example 3: Still Relevant Pending Question: "Is the data migration going to affect our production environment?" Subsequent Conversation: 5 turns discussing migration timeline but never addressing production impact. Decision: still_relevant, confidence 0.90

Adaptation guidance: Replace [PENDING_QUESTION] with the exact text of the unanswered question from your tracking system. [SUBSEQUENT_CONVERSATION] should contain all turns after the question was asked, formatted with speaker labels and turn indices for traceability. [CURRENT_PHASE] is optional but helps contextualize whether the conversation has moved on. The output schema is designed for programmatic consumption—wire the recommended_action field directly into your state management logic. For high-stakes domains like healthcare or finance, set the confidence threshold higher (0.85+) and always require human review for retirement decisions flagged by retirement_safety_check.

Next steps: After copying this template, pair it with a pending question detection prompt to build a complete tracking loop. Test against conversations with known dropped questions to calibrate your confidence thresholds. Log every retirement decision with its rationale and evidence references for auditability. If you observe false retirements, add domain-specific examples to the few-shot section and tighten the constraints around your specific failure modes.

IMPLEMENTATION TABLE

Prompt Variables

Required inputs for the Stale Question Re-Evaluation Prompt. Each placeholder must be populated before the prompt is sent to the model. Missing or malformed inputs are the most common cause of incorrect staleness decisions.

PlaceholderPurposeExampleValidation Notes

[PENDING_QUESTION]

The original unanswered question to evaluate for staleness

What is the status of the Q3 budget review?

Must be a non-empty string. Check that it is a question, not a statement or greeting. Parse for terminal punctuation.

[QUESTION_TIMESTAMP]

When the question was originally asked, used to calculate age

2025-01-15T14:30:00Z

Must parse as ISO 8601 datetime. Reject if timestamp is in the future relative to system clock. Required for staleness scoring.

[CONVERSATION_AFTER_QUESTION]

Full transcript of all turns that occurred after the question was asked

User: Let's switch to the hiring plan. Assistant: Here are the open reqs...

Must be a non-empty string. Validate that the transcript does not include turns before [QUESTION_TIMESTAMP]. Truncate to last N tokens if exceeding context budget.

[CURRENT_SESSION_TOPIC]

The active topic or intent of the most recent turns in the conversation

Headcount planning for Q1 engineering roles

Must be a non-empty string. If null, set to 'unknown' and flag for lower confidence. Used to detect topic drift from the original question's domain.

[STALENESS_THRESHOLD_MINUTES]

Age in minutes after which a question is considered stale regardless of content

30

Must be a positive integer. Default to 30 if not provided. Values below 5 may cause false positives on brief digressions. Log threshold used in decision metadata.

[RETIREMENT_CONFIDENCE_THRESHOLD]

Minimum confidence score required to auto-retire a question without human review

0.85

Must be a float between 0.0 and 1.0. Default to 0.85. Scores below threshold should route to human review queue. Validate that threshold is not set to 1.0 in production unless all retirements require approval.

[IMPLICIT_ANSWER_DETECTION_ENABLED]

Flag controlling whether the prompt should detect answers implied by later conversation rather than explicitly stated

Must be boolean. When false, only explicit answers trigger retirement. When true, the prompt may infer resolution from context, which increases recall but risks false positives. Log this flag with every decision.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Stale Question Re-Evaluation Prompt into a production application with validation, confidence thresholds, and automated retirement logic.

The Stale Question Re-Evaluation Prompt is designed to run as a background evaluation step, not as part of the primary user-facing response generation. In a production chat system, this prompt should be triggered by a state management middleware layer whenever a pending question has aged beyond a configurable threshold (e.g., 5 turns or 3 minutes of silence). The middleware retrieves the original question, its turn context, and all subsequent conversation turns, then assembles the prompt with these inputs. The output is a structured decision object that the application consumes to either keep the question active, retire it silently, or surface a re-evaluation to the user.

The implementation must include a confidence threshold gate on the retirement_confidence field. For high-confidence retirement decisions (e.g., confidence >= 0.9), the system can automatically remove the question from the pending queue and log the retirement reason. For medium-confidence decisions (0.7–0.9), route the question to a human review queue or a secondary LLM judge for confirmation before retirement. For low-confidence decisions (< 0.7), keep the question active and re-evaluate after additional turns. Never auto-retire questions where the model indicates the question was merely forgotten rather than resolved—those require a repair turn instead. Log every retirement decision with the original question, the conversation segment used for evaluation, the model's reasoning, and the confidence score for auditability.

Model choice matters here. This prompt requires strong instruction-following and structured output discipline. Use a model with reliable JSON mode (e.g., GPT-4o, Claude 3.5 Sonnet) and enforce the output schema with your API's structured output feature rather than relying on prompt-level format instructions alone. For cost optimization, consider running this evaluation on a smaller, fine-tuned model if you have sufficient labeled examples of stale vs. relevant questions. Retry logic should handle malformed JSON by re-prompting once with the raw output and a repair instruction. If the second attempt fails, default to keeping the question active and flag for human review. Tool integration is minimal here—this prompt is a pure reasoning step, but its output should feed into your conversation state manager, which may trigger other prompts like the Conversation Repair Prompt or the Pending Action Reminder Generation Prompt.

Testing this prompt requires a golden dataset of conversation segments with known stale and still-relevant questions. Build eval cases that include: questions implicitly answered through subsequent turns, questions made irrelevant by topic shifts, questions the user explicitly abandoned, and questions that remain genuinely open. Measure precision (did we retire only truly stale questions?) and recall (did we catch all stale questions?). The cost of false negatives (keeping stale questions) is context pollution and user annoyance; the cost of false positives (retiring relevant questions) is broken trust and dropped user needs. Weight your eval metrics accordingly—false positives should be penalized more heavily. Run regression tests against this dataset whenever you update the prompt, the model version, or the retirement confidence threshold.

IMPLEMENTATION TABLE

Expected Output Contract

Defines the structured output schema for the Stale Question Re-Evaluation Prompt. Use this contract to validate the model's response before integrating it into automated retirement or re-surfacing logic.

Field or ElementType or FormatRequiredValidation Rule

question_id

string

Must match the [QUESTION_ID] input exactly. No modification allowed.

original_question_text

string

Must be a verbatim copy of the [ORIGINAL_QUESTION] input. Check for character-level equality.

relevance_status

enum: STILL_RELEVANT | IMPLICITLY_ANSWERED | STALE_RETIRE

Must be one of the three defined enum values. No other strings permitted.

confidence_score

number (0.0 to 1.0)

Must be a float between 0.0 and 1.0 inclusive. If relevance_status is STALE_RETIRE, confidence_score must be >= [AUTO_RETIRE_THRESHOLD].

evidence_summary

string

If IMPLICITLY_ANSWERED, must contain a direct quote or specific turn reference from [SUBSEQUENT_CONVERSATION]. If STALE_RETIRE, must explain why the topic was abandoned. Max 2 sentences.

recommended_action

enum: RE_SURFACE | SUPPRESS | HUMAN_REVIEW

Must be RE_SURFACE if STILL_RELEVANT. Must be SUPPRESS if STALE_RETIRE and confidence_score >= [AUTO_RETIRE_THRESHOLD]. Must be HUMAN_REVIEW for all other cases.

re_surface_context

string | null

Required if recommended_action is RE_SURFACE. A natural language transition phrase that reintroduces the question without disrupting the current topic. Null otherwise.

retirement_reason

string | null

Required if relevance_status is STALE_RETIRE. A concise, factual reason for retirement. Must not contain speculation about user intent. Null otherwise.

PRACTICAL GUARDRAILS

Common Failure Modes

Stale question re-evaluation fails silently in production. These are the most common breakages and how to prevent them before they erode user trust.

01

False Negatives on Implicit Answers

What to watch: The model marks a question as 'still pending' when the user provided an indirect or partial answer later in the conversation. This causes the assistant to re-surface a question the user already addressed, making the assistant seem inattentive. Guardrail: Require the prompt to cite specific evidence from later turns before marking a question as unresolved. Add a confidence threshold below which questions are flagged for human review rather than automatic re-surfacing.

02

Premature Retirement of Blocking Questions

What to watch: The model retires a question as 'stale' because the conversation moved on, but the question is blocking downstream work. The user assumes the assistant is handling it, and the task silently fails. Guardrail: Never auto-retire questions tagged as 'blocking' or 'dependency' without explicit user confirmation. Add a dependency check that prevents retirement if other pending items reference the question.

03

Confidence Score Inflation

What to watch: The model assigns high confidence to retirement decisions for questions it doesn't fully understand, especially when the conversation is long and the question appeared many turns ago. Guardrail: Calibrate confidence by requiring the model to restate the original question in its own words before scoring. If the restatement is inaccurate, force a low-confidence outcome. Log restatement accuracy against human labels in eval.

04

Topic Shift Misclassification

What to watch: A user changes topics entirely, and the model incorrectly retires all prior questions as irrelevant, even though the user may return to the original topic. This is common in multi-domain assistants. Guardrail: Distinguish between 'topic shift' and 'topic completion' in the prompt. Questions in a shifted topic should be marked 'suspended' rather than 'retired,' with a carry-forward flag for session resumption logic.

05

Re-Surfacing at the Wrong Time

What to watch: The model correctly identifies a question as still relevant but re-surfaces it during a high-urgency user flow, disrupting the current task and frustrating the user. Guardrail: Include a 're-surfacing appropriateness' check that evaluates the current turn's urgency and emotional tone before allowing a pending question to interrupt. Defer non-urgent re-surfacing to a natural pause or explicit user prompt.

06

Silent State Drift in Long Sessions

What to watch: Over very long sessions, the model loses track of which questions were already re-evaluated, causing duplicate re-surfacing or contradictory retirement decisions across turns. Guardrail: Maintain an external pending-question state object outside the prompt. The prompt's job is to propose state changes, but the application layer must enforce idempotency and prevent conflicting updates to the same question across turns.

IMPLEMENTATION TABLE

Evaluation Rubric

Criteria for evaluating the Stale Question Re-Evaluation Prompt before production deployment. Each row defines a specific quality dimension, a concrete pass standard, a signal that indicates failure, and a recommended test method.

CriterionPass StandardFailure SignalTest Method

Relevance Classification Accuracy

Correctly classifies >90% of questions as 'still_relevant', 'implicitly_answered', or 'stale' in a golden dataset of 50 manually labeled examples.

Misclassifies a question that was explicitly answered later as 'still_relevant', or marks a blocking question as 'stale'.

Run prompt against golden dataset; compute precision/recall per class; inspect all misclassifications manually.

Implicit Answer Detection

Identifies >85% of questions that were answered indirectly by subsequent conversation turns without explicit acknowledgment.

Fails to detect that a user's follow-up statement resolved the original question, leading to a false 'still_relevant' classification.

Curate 20 examples where answers are implicit; verify the prompt's 'implicitly_answered' flag and required evidence citation are correct.

Confidence Score Calibration

Confidence scores correlate with actual correctness: high-confidence decisions (>0.85) are correct >90% of the time; low-confidence decisions (<0.5) are correct <70% of the time.

High-confidence 'stale' decisions are frequently wrong, causing premature retirement of important questions.

Plot calibration curve using golden dataset; compute Expected Calibration Error (ECE); flag if ECE > 0.1.

Evidence Grounding

Every 'implicitly_answered' or 'stale' classification includes a direct quote or turn reference from the transcript that justifies the decision.

Output contains a classification without any supporting evidence, or cites a turn that does not actually address the question.

Parse output for evidence field; validate that cited turns exist in the transcript and logically support the classification using a second LLM judge.

False Positive on Rhetorical Questions

Correctly identifies and marks rhetorical or conversational questions as 'not_a_question' or excludes them from re-evaluation.

Classifies a rhetorical question like 'Guess what happened next?' as 'still_relevant' and flags it for re-surfacing.

Include 10 rhetorical questions in test set; assert output excludes them or classifies them with a specific 'rhetorical' label.

Staleness Boundary Handling

Correctly identifies questions that are technically unanswered but rendered irrelevant by a major topic shift or session phase change.

Marks a question as 'still_relevant' when the user has clearly moved to an entirely new, unrelated workflow.

Test with transcripts containing explicit topic shifts; verify 'stale' classification and that the reason cites the topic shift evidence.

Output Schema Compliance

Output is valid JSON matching the defined schema with all required fields present and correctly typed for 100% of test cases.

Missing 'confidence' field, 'classification' is not in the allowed enum, or 'evidence' is null when classification is 'implicitly_answered'.

Validate output with JSON Schema validator; assert no schema violations across 100 varied test inputs.

Automated Retirement Safety

When confidence >= [AUTO_RETIRE_THRESHOLD] and classification is 'stale', the decision is correct >95% of the time to prevent accidental loss of important questions.

A question about a blocking dependency is auto-retired with high confidence, causing the assistant to drop critical follow-up.

Run prompt on a dataset of 30 known-blocking questions; assert none are auto-retired; measure false-positive rate for auto-retirement decisions.

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a single model call and minimal validation. Focus on getting the relevance classification and confidence score shape right before adding infrastructure.

  • Remove strict schema enforcement; accept JSON-like output.
  • Use a shorter conversation window (last 10 turns) to reduce latency.
  • Add a simple [STALE_THRESHOLD_DAYS] variable instead of complex staleness logic.

Watch for

  • The model retiring questions that are still relevant because the user changed the subject temporarily.
  • Confidence scores that are always 0.9+ without meaningful differentiation.
  • Missing the "implicitly answered" category entirely, defaulting to binary relevant/stale.
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.