Inferensys

Prompt

Vague Bug Report Triage Clarification Prompt

A practical prompt playbook for using Vague Bug Report Triage Clarification Prompt 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

Defines the operational boundaries for the Vague Bug Report Triage Clarification Prompt, specifying when it adds value and when it should be bypassed.

This prompt is designed for issue triage systems that ingest bug reports from users, customers, or internal teams. Its job is to detect when a report is too vague to route to a development team and to generate a structured clarification request asking for the missing triage dimensions. Use this prompt when your system must prevent un-triaged bugs from reaching developers, when you need to enforce that severity, reproducibility, and affected component are specified before assignment, and when you want the clarification to be specific enough that the reporter can respond without understanding your internal routing logic.

The prompt assumes the incoming report is a single text block and that your system has a defined list of required triage fields and known components. Before wiring this into a production harness, you must define the exact triage schema your organization requires—typically including severity, reproducibility_steps, affected_component, observed_behavior, and expected_behavior. The prompt's value comes from its ability to map vague natural language onto these structured gaps without hallucinating values. Implement a pre-check in your application layer: if all required fields are already populated with high confidence, bypass this prompt entirely to save latency and cost. If any field is missing or has low confidence, route the report through this prompt and validate that the output contains a specific, actionable question for each missing dimension before sending the clarification to the reporter.

Do not use this prompt for well-formed bug reports that already contain the required fields, for feature requests, or for general support inquiries that do not require engineering triage. Using it on complete reports will generate unnecessary friction and delay. For feature requests, route to a separate intake prompt that captures product context. For general support inquiries, use a standard support triage classifier. The prompt is also not suitable for real-time chat interfaces where the user expects an immediate answer; it is designed for asynchronous ticketing workflows where a structured clarification round-trip is acceptable. If your system allows developers to receive un-triaged bugs, this prompt acts as a safety gate—ensure your routing logic enforces that no bug reaches a development queue until the clarification loop is resolved or a human triager explicitly overrides the gate.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Vague Bug Report Triage Clarification Prompt works and where it introduces risk. Use these cards to decide if this prompt fits your triage pipeline before wiring it into production.

01

Good Fit: Underspecified Inbound Reports

Use when: bug reports arrive missing severity, reproducibility steps, or affected component. The prompt structures the missing dimensions into a single clarification request. Guardrail: validate that the clarification response includes all required triage fields before routing.

02

Bad Fit: Fully Triaged or Automated Sources

Avoid when: bugs already carry structured severity, component, and repro fields from a form or SDK. The prompt will generate unnecessary clarification and add user friction. Guardrail: check field completeness before invoking the prompt; skip when triage fields are already populated.

03

Required Inputs

Requires: the raw bug report text, a list of required triage dimensions (severity, reproducibility, component, environment), and any existing partial metadata. Guardrail: if the raw report is empty or only contains a stack trace with no description, escalate directly to a human rather than asking the reporter for clarification they cannot provide.

04

Operational Risk: Routing Before Clarification

Risk: un-triaged bugs assigned to developers waste engineering time and create noisy backlogs. Guardrail: the harness must block assignment until the clarification response passes a completeness validator. Never route a bug with unresolved triage dimensions.

05

Operational Risk: Reporter Abandonment

Risk: reporters may not respond to clarification requests, leaving bugs in a limbo state. Guardrail: set a time-to-respond window. If the reporter does not clarify within the window, auto-close with a note or escalate to a triage human with the partial context preserved.

06

Variant: High-Severity Fast Path

Use when: the raw report contains keywords indicating a critical outage even if triage fields are incomplete. Guardrail: bypass the clarification prompt and route directly to the on-call channel with a flag indicating incomplete triage. Do not block severity-1 incidents on clarification.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

Paste this prompt into your triage agent or classification step. Replace square-bracket placeholders with your organization's values.

This prompt template is designed to be the first processing step for any incoming bug report in your issue triage system. Its job is to assess whether a report contains the minimum information required for a developer to begin work—specifically, a clear description of the problem, a severity assessment, reproducible steps, and the affected component. If any of these core dimensions are missing, the prompt instructs the model to halt the routing process and generate a structured clarification request. This prevents un-triaged, vague reports from landing in a developer's queue, where they waste time and break sprint velocity.

code
You are an issue triage agent. Your task is to analyze the following bug report and determine if it contains enough information to be assigned to a development team. Do not guess missing information. Do not route the issue if it is underspecified.

# INPUT
Bug Report:
[BUG_REPORT_TEXT]

# REQUIRED TRIAGE DIMENSIONS
A routable bug report must clearly state:
1. **Observed Behavior:** What is the actual, incorrect behavior?
2. **Expected Behavior:** What should have happened instead?
3. **Reproducibility:** Are there steps to reproduce the issue? If not, is the issue intermittent, and what is the observed frequency?
4. **Severity:** What is the user impact? Classify as [SEVERITY_LEVEL_1], [SEVERITY_LEVEL_2], [SEVERITY_LEVEL_3], or [SEVERITY_LEVEL_4] based on the definitions in [SEVERITY_DEFINITION_DOC].
5. **Affected Component:** Which part of the system is impacted? Map to a component from this list: [COMPONENT_LIST].

# CONSTRAINTS
- If ALL five dimensions are present and clear, output a JSON object with `"action": "route"` and populate the `"triage_summary"` field.
- If ANY dimension is missing, ambiguous, or contradictory, output a JSON object with `"action": "clarify"` and generate a `"clarification_message"` that asks the reporter for the specific missing information. The message must be polite, specific, and reference the missing dimension(s) by name.
- Do not invent a severity, component, or reproduction step.
- If the report is not a bug (e.g., a feature request, a question), set `"action": "reclassify"` and explain why in `"reclassification_note"`.

# OUTPUT SCHEMA
{
  "action": "route" | "clarify" | "reclassify",
  "triage_summary": {
    "observed_behavior": "string | null",
    "expected_behavior": "string | null",
    "reproducibility": "string | null",
    "severity": "[SEVERITY_LEVEL] | null",
    "affected_component": "[COMPONENT] | null"
  },
  "clarification_message": "string | null",
  "reclassification_note": "string | null"
}

To adapt this template, replace the square-bracket placeholders with your organization's specific taxonomy. For [SEVERITY_LEVEL_1] through [SEVERITY_LEVEL_4], substitute your actual severity labels (e.g., P0-Critical, P3-Cosmetic). For [SEVERITY_DEFINITION_DOC], provide a link or inline the definitions so the model can apply them consistently. The [COMPONENT_LIST] should be a curated, stable list of your system's modules (e.g., auth-service, payment-gateway, user-profile-ui). Avoid open-ended component fields, as they lead to inconsistent routing. After integrating this prompt into your triage harness, implement a validation check that blocks any issue with "action": "route" from being assigned to a developer if the triage_summary contains null values. This is your primary safety net against prompt failure or model hallucination.

IMPLEMENTATION TABLE

Prompt Variables

Inputs the Vague Bug Report Triage Clarification Prompt needs to work reliably. Validate these before sending the prompt to prevent un-triaged bugs from being assigned to developers.

PlaceholderPurposeExampleValidation Notes

[BUG_REPORT_TEXT]

The raw, unstructured bug report submitted by the user

The app crashed when I clicked save. Please fix it.

Must be a non-empty string. Reject null or whitespace-only input. No minimum length enforced, but reports under 20 characters should trigger a low-confidence flag.

[TRIAGE_DIMENSIONS]

The list of required triage fields that must be populated before routing

severity, reproducibility, affected_component, environment, expected_behavior, actual_behavior

Must be a non-empty array of strings. Each dimension must map to a known field in the downstream issue tracker schema. Validate against the tracker's required-field list before prompt assembly.

[TEAM_ROUTING_MAP]

Mapping of affected components or issue types to responsible teams

{"frontend": "ui-team", "api": "backend-team", "database": "data-team"}

Must be a valid JSON object. Keys must match possible values of the affected_component field. Values must be valid team identifiers in the routing system. Reject if any team identifier does not resolve.

[SEVERITY_LEVELS]

The defined severity taxonomy the triage system uses

["sev1-critical", "sev2-major", "sev3-minor", "sev4-cosmetic"]

Must be a non-empty array of strings. Values must match the downstream alerting and SLA configuration. Mismatched severity labels will break escalation rules.

[MAX_CLARIFICATION_QUESTIONS]

The maximum number of missing dimensions to ask about in a single clarification response

3

Must be a positive integer between 1 and 5. Values above 5 overwhelm the reporter and reduce response rate. Default to 3 if not specified. Validate as integer, not float.

[OUTPUT_SCHEMA]

The expected JSON structure for the clarification response

{"status": "needs_clarification", "missing_dimensions": ["severity", "reproducibility"], "clarification_questions": ["What is the severity?", "Can you reproduce it?"], "already_known": {"affected_component": "frontend"}}

Must be a valid JSON Schema or example object. Validate that the schema includes status, missing_dimensions, clarification_questions, and already_known fields. Reject schemas that allow routing without all required dimensions.

[ESCALATION_THRESHOLD]

The number of clarification rounds before the bug is escalated to a human triage manager instead of returning to the reporter

2

Must be a non-negative integer. A value of 0 means immediate escalation on first ambiguous report. Validate that the harness tracks clarification round count per bug ID and enforces this threshold.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Vague Bug Report Triage Clarification Prompt into an issue triage system with validation, routing, and human review gates.

This prompt is designed to sit at the intake boundary of an issue triage system—after a bug report is submitted but before it is assigned to a development team. The harness should intercept any report that lacks severity, reproducibility steps, or an affected component, invoke the LLM with this prompt, and present the generated clarification questions back to the reporter. The system must block routing until the clarification is resolved or a human triager explicitly overrides the block. This prevents un-triaged bugs from landing in developer backlogs where they waste cycles and create noise.

Validation and gating logic is the most critical part of this harness. After the LLM returns a structured clarification, the harness should validate that: (1) the output identifies which triage dimensions are missing (severity, reproducibility, component, or environment), (2) the clarification questions are specific and answerable, and (3) the output does not attempt to guess or default the missing fields. A completeness validator should check that all required triage fields are populated before releasing the bug for routing. If the LLM fails to produce a valid clarification after a configured number of retries (we recommend 2), escalate to a human triage queue with the raw report and a note that automated clarification failed. Log every clarification request and resolution for auditability—this data is invaluable for measuring triage efficiency and identifying reporters who consistently submit vague bugs.

Model choice and latency are straightforward here because this is a synchronous, human-facing step. Use a fast model (GPT-4o-mini, Claude Haiku, or equivalent) with low temperature (0.0–0.2) to maximize consistent output structure. The prompt should be called immediately on submission, not batched, because the reporter is waiting. If the reporter abandons the clarification flow, the bug should remain in an un-triaged state and surface in a dashboard for manual triage. Do not wire this prompt into an autonomous agent loop that retries indefinitely or invents triage fields—the harness must enforce that missing information is requested from a human, not hallucinated. For teams using Jira, Linear, or GitHub Issues, the harness can be implemented as a webhook or automation rule that sets the issue status to needs_clarification and assigns it back to the reporter until the required fields are filled.

IMPLEMENTATION TABLE

Expected Output Contract

Defines the structured clarification object the model must return. Use this contract to validate the response before routing the clarification request to the user or logging it for triage.

Field or ElementType or FormatRequiredValidation Rule

clarification_required

boolean

Must be true if any triage dimension is missing or confidence is below threshold; false otherwise.

missing_dimensions

array of strings

Each string must be from the allowed enum: [severity, reproducibility, affected_component, environment, expected_behavior, actual_behavior, steps_to_reproduce, error_logs]. Array must not be empty if clarification_required is true.

clarification_questions

array of objects

Each object must contain 'dimension' (string, matching a value in missing_dimensions) and 'question' (string, a single targeted question for the user). Array length must equal missing_dimensions length.

current_triage_summary

string

A concise summary of what is known from the original report. Must not exceed 300 characters. Must not hallucinate details not present in the input.

suggested_routing

string or null

If clarification_required is false, provide a target team queue name. If true, must be null. Routing must not be assigned while dimensions are missing.

confidence_score

number

A float between 0.0 and 1.0 representing the model's confidence in its triage assessment. If below 0.7, clarification_required must be true.

escalation_flag

boolean

Must be true if the report contains safety, security, or data-loss keywords. Triggers immediate human review regardless of completeness.

PRACTICAL GUARDRAILS

Common Failure Modes

What breaks first when triaging vague bug reports and how to prevent misrouted, un-triaged issues from reaching development teams.

01

Clarification Loop Without Exit

What to watch: The prompt requests missing triage dimensions but the user repeatedly provides incomplete information, causing an infinite clarification loop that never routes the bug. Guardrail: Implement a maximum clarification round limit (e.g., 2 rounds). After the limit, auto-escalate to a human triage queue with all collected context and a note that automated clarification was exhausted.

02

Over-Clarification on Sufficient Reports

What to watch: The prompt requests clarification even when the bug report contains enough information for triage, creating unnecessary user friction and delaying resolution. Guardrail: Define minimum viable triage criteria (e.g., at least one of severity, reproducibility, or affected component is present). Only trigger clarification when all critical dimensions are missing, not when some are present.

03

Hallucinated Triage Dimensions

What to watch: The model invents severity levels, component names, or reproducibility steps that were not present in the original report, leading to incorrect routing. Guardrail: Require the prompt to only reference fields explicitly mentioned in the input. Use a structured output schema that separates extracted_fields from missing_fields and validate that extracted fields map to verbatim report content.

04

Silent Routing Despite Missing Fields

What to watch: The prompt generates a clarification request but the harness fails to block routing, allowing un-triaged bugs to reach development teams. Guardrail: Implement a pre-routing gate in the application layer that checks whether all required triage fields are populated. If the clarification prompt was triggered, block assignment until the user responds or escalation occurs.

05

Ambiguous Clarification Language

What to watch: The clarification question is vague (e.g., 'Please provide more details') rather than requesting specific missing dimensions, leading to another round of insufficient information. Guardrail: Structure the clarification output to list each missing field by name with a concrete example and a single focused question per field. Validate that the output contains at least one field-specific question before sending to the user.

06

Context Loss Across Clarification Rounds

What to watch: When the user responds to a clarification, the original bug report context is lost or truncated, causing the model to re-request information already provided. Guardrail: Maintain a structured triage state object across rounds that accumulates confirmed fields. Include the full accumulated state in each subsequent prompt so the model never re-requests information it already has.

IMPLEMENTATION TABLE

Evaluation Rubric

Run these checks against a golden dataset of 50 bug reports: 25 that are triage-ready and 25 that are intentionally vague. Each criterion validates whether the prompt correctly distinguishes actionable reports from those requiring clarification.

CriterionPass StandardFailure SignalTest Method

Triage-ready classification

Prompt classifies all 25 triage-ready reports as no clarification needed

Prompt requests clarification on a report that already contains severity, reproducibility, and affected component

Run golden set of 25 triage-ready reports through prompt; count false-positive clarification requests

Vague report detection

Prompt requests clarification on all 25 intentionally vague reports

Prompt proceeds to triage or routing without requesting missing dimensions

Run golden set of 25 vague reports through prompt; count false-negative missed clarifications

Missing severity handling

Prompt identifies missing severity and requests it explicitly in clarification output

Clarification output omits severity as a requested field when severity is absent from input

Filter golden set for reports missing severity; verify severity appears in clarification request

Missing reproducibility handling

Prompt identifies missing reproducibility steps and requests them explicitly

Clarification output omits reproducibility request when steps are absent from input

Filter golden set for reports missing reproducibility; verify steps request appears in clarification

Missing component handling

Prompt identifies missing affected component and requests it explicitly

Clarification output omits component request when component is absent from input

Filter golden set for reports missing component; verify component request appears in clarification

Output schema compliance

Every clarification output matches the defined [OUTPUT_SCHEMA] with all required fields present

Output is missing required fields, uses wrong types, or includes extra fields not in schema

Validate all 25 clarification outputs against JSON schema; check field presence, types, and no additional properties

No hallucinated defaults

Prompt never invents severity, reproducibility, or component values when they are absent

Output contains a guessed severity level, assumed reproduction steps, or fabricated component name

Scan all outputs for triage field values not present in the original bug report input

Clarification tone and actionability

Clarification request is polite, specific, and asks for exactly the missing dimensions without overwhelming the user

Clarification is vague, asks for all possible fields regardless of what is missing, or uses demanding language

Manual review of 10 sampled clarification outputs against tone rubric; score 1-5 on specificity and politeness

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a frontier model and manual review of clarification questions. Focus on getting the triage dimensions right before adding validation logic.

Simplify the output schema to only require missing_dimensions and clarification_question. Skip the structured severity and component mapping until the clarification quality is proven.

Watch for

  • The model asking for information already present in the bug report
  • Over-clarification on trivial bugs that could be auto-triaged
  • Missing the distinction between "severity unknown" and "impact unclear"
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.