This prompt is designed for AI quality engineers and output validation pipeline builders who need to verify that a generated answer is fully supported by provided evidence. It operates as a post-generation guardrail: after an LLM produces an answer, this prompt decomposes the answer into atomic claims, checks each claim against the evidence set, and flags any claim that lacks direct support. The output is a structured report with severity classifications, making it suitable for automated validation gates, audit trails, and monitoring dashboards. Use this when you need systematic claim-level grounding verification rather than a single holistic faithfulness score.
Prompt
Unsupported Claim Flagging Prompt for Output Validation

When to Use This Prompt
Understand the ideal use case, required inputs, and operational boundaries for the Unsupported Claim Flagging prompt before integrating it into your validation pipeline.
The prompt requires two concrete inputs: a candidate answer (the text to validate) and an evidence set (the source passages against which claims are checked). It does not perform retrieval itself—it assumes you have already retrieved or provided the evidence. This separation is critical: the prompt is a verification tool, not a retrieval quality fix. If your retrieval pipeline is returning irrelevant or noisy passages, this prompt will correctly flag high rates of unsupported claims, but it won't solve the underlying retrieval problem. Wire it downstream of your answer generation step, and feed it the same evidence that was used to produce the answer.
Do not use this prompt for real-time answer generation or as a substitute for retrieval quality improvements. It adds latency and token cost to your pipeline, so reserve it for high-stakes outputs where grounding verification is required—compliance reports, customer-facing answers in regulated domains, or any workflow where an unsupported claim could cause user harm or audit failure. For low-risk or high-throughput applications, consider lighter-weight alternatives such as a single holistic faithfulness score or spot-checking with a smaller sample of claims. When you do use this prompt, always pair it with a human review step for claims flagged as critical or high-severity, and log the structured output for audit trails and eval dashboards.
Use Case Fit
Where the Unsupported Claim Flagging prompt works, where it fails, and what you must provide before deploying it in an output validation pipeline.
Good Fit: Post-Generation Validation Gates
Use when: you have a generated answer and a set of retrieved evidence passages, and you need a structured report of unsupported claims before the answer reaches the user. Guardrail: run this prompt as a synchronous gate after generation but before release; block or flag responses with critical-severity unsupported claims.
Bad Fit: Real-Time Streaming Responses
Avoid when: answers are streamed token-by-token to users with no buffering window. Risk: the flagging prompt requires the full answer text and evidence set; streaming bypasses the validation gate. Guardrail: buffer streaming chunks, assemble the complete answer, run validation, then release or retract.
Required Inputs: Answer Text and Evidence Set
Must provide: the complete generated answer and the full set of retrieved evidence passages with source identifiers. Risk: missing or truncated evidence causes false positives where supported claims are incorrectly flagged as unsupported. Guardrail: validate that evidence passages are complete and source-linked before calling the flagging prompt.
Operational Risk: False-Positive Flagging
What to watch: the prompt may flag claims as unsupported when evidence is present but phrased differently, or when support requires reasonable inference across multiple passages. Guardrail: implement a human-review queue for medium-severity flags; track false-positive rate weekly and recalibrate severity thresholds.
Operational Risk: Missed Hallucinations
What to watch: subtle fabrications that blend evidence with invented details may pass the flagger if the claim partially overlaps with source text. Guardrail: pair this prompt with a faithfulness verification prompt that checks claim-by-claim entailment; use both signals for release decisions.
Scale Limit: Cost Per Validation Call
What to watch: running a separate LLM call for flagging on every generated answer doubles inference cost and adds latency. Guardrail: apply flagging only to sampled traffic, high-risk query categories, or responses above a confidence threshold; cache flagging results for repeated evidence-answer pairs.
Copy-Ready Prompt Template
A reusable prompt template for flagging unsupported claims in generated text against provided evidence.
This prompt template is the core instruction set for an output validation guardrail. It instructs the model to act as a strict fact-checker, comparing every claim in a [GENERATED_ANSWER] against a set of [EVIDENCE_PASSAGES]. The goal is not to rewrite the answer, but to produce a structured report that flags unsupported, contradictory, or unverifiable statements. Use this template as the foundation for a post-generation validation step before any response reaches a user, especially in high-stakes domains like healthcare, finance, or legal tech.
textYou are an expert fact-checker and output validator. Your task is to compare a generated answer against a set of provided evidence passages and flag every claim that is not fully supported. ## INPUT **Generated Answer:** [GENERATED_ANSWER] **Evidence Passages:** [EVIDENCE_PASSAGES] ## INSTRUCTIONS 1. **Decompose:** Break the Generated Answer into discrete, verifiable claims. A claim is a single factual assertion. 2. **Match:** For each claim, search the Evidence Passages for direct support. A claim is supported only if the evidence explicitly states the fact or it is a direct, inescapable logical consequence of the stated facts. 3. **Classify:** Assign one of the following severity levels to each unsupported claim: * **CRITICAL:** The claim contradicts the evidence. * **MAJOR:** The claim introduces a new fact not present in the evidence. * **MINOR:** The claim contains a speculative or interpretive statement presented as fact. * **NEGLIGIBLE:** The claim is a trivial detail (e.g., a date format, a synonym) that doesn't change the factual meaning. 4. **Explain:** For every flagged claim, provide a concise reason for the flag, citing the specific evidence (or lack thereof). ## OUTPUT FORMAT Return a single JSON object with the following schema: { "overall_grounding_score": <float 0.0-1.0>, "total_claims": <int>, "supported_claims": <int>, "flagged_claims": [ { "claim_text": "<exact text from answer>", "severity": "<CRITICAL|MAJOR|MINOR|NEGLIGIBLE>", "reason": "<explanation of why it's unsupported>", "relevant_evidence_snippet": "<supporting or contradicting text from evidence, or 'NONE'>" } ] } ## CONSTRAINTS * Do not flag claims that are direct quotes or accurate paraphrases of the evidence. * If the evidence is insufficient to verify a claim, flag it as MAJOR. * Do not invent evidence. If no evidence exists, state 'NONE'. * Your entire response must be the single JSON object. No other text.
To adapt this template, replace the [GENERATED_ANSWER] and [EVIDENCE_PASSAGES] placeholders with your actual data. For production use, consider adding a [RISK_LEVEL] parameter to adjust the strictness of the classification logic. For example, in a high-risk context, you might reclassify all MINOR flags as MAJOR. The output schema is designed for programmatic consumption; a downstream rule engine can use the overall_grounding_score and the count of CRITICAL flags to decide whether to block the response, send it for human review, or allow it with a caveat. Always pair this prompt with an evaluation harness that measures flag recall and false-positive rate against a golden dataset of known supported and unsupported claims.
Prompt Variables
Required inputs for the Unsupported Claim Flagging Prompt. Each placeholder must be populated before the prompt is sent to the model. Validation notes describe how to programmatically verify the input quality before execution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[GENERATED_ANSWER] | The full text of the AI-generated answer to be audited for unsupported claims. | The LK-99 superconductor was synthesized by a team at Korea University in 2023 and exhibits zero resistance at room temperature. | Check that the string is non-empty and contains at least one declarative sentence. Reject inputs that are only code blocks or JSON without natural language claims. |
[EVIDENCE_PASSAGES] | An array of retrieved source passages that were available during answer generation. Each passage should include its text and a unique identifier. | [{"id": "src_1", "text": "Researchers at Korea University claimed to have synthesized LK-99, a potential room-temperature superconductor, in a preprint published July 2023."}, {"id": "src_2", "text": "Subsequent replication attempts by multiple labs failed to confirm zero resistance."}] | Validate that the input is a JSON array with at least one object containing 'id' and 'text' fields. Reject if 'text' fields are empty strings. Warn if fewer than 2 passages are provided for complex answers. |
[CLAIM_SEVERITY_THRESHOLD] | The minimum severity level for a flagged claim to be included in the output report. Claims below this threshold are omitted. | medium | Must be one of the allowed enum values: 'critical', 'high', 'medium', 'low'. Default to 'medium' if not provided. Reject any value outside the enum. |
[OUTPUT_SCHEMA] | The exact JSON schema the model must use to structure its flagging report. Defines the shape of the claims array, severity levels, and evidence mapping. | {"type": "object", "properties": {"claims": {"type": "array", "items": {"type": "object", "properties": {"claim_text": {"type": "string"}, "severity": {"type": "string", "enum": ["critical", "high", "medium", "low"]}, "supporting_evidence_ids": {"type": "array", "items": {"type": "string"}}, "contradicting_evidence_ids": {"type": "array", "items": {"type": "string"}}, "rationale": {"type": "string"}}, "required": ["claim_text", "severity", "rationale"]}}}, "required": ["claims"]} | Validate that the schema is valid JSON and includes a 'claims' array with required fields for 'claim_text', 'severity', and 'rationale'. Reject schemas that allow unbounded text without evidence mapping. |
[MAX_CLAIMS] | The maximum number of claims the model should extract and evaluate from the generated answer. Prevents unbounded output and controls latency. | 15 | Must be a positive integer between 1 and 50. Default to 20 if not provided. Reject values over 50 to prevent runaway token usage. Warn if set below 5 for answers longer than 200 words. |
[FALSE_POSITIVE_TOLERANCE] | A boolean flag indicating whether the evaluation context tolerates false positives (flagging supported claims) more than false negatives (missing unsupported claims). Adjusts the model's flagging aggressiveness. | Must be a boolean. Default to false (prefer fewer false positives, meaning only flag clearly unsupported claims). When true, the prompt instructs the model to flag borderline claims. Validate type coercion from string inputs like 'true' or 'false'. | |
[DOMAIN_CONTEXT] | Optional string describing the domain, terminology, or specialized knowledge context to calibrate what counts as a claim requiring evidence support. | materials science, condensed matter physics, peer-reviewed preprints | If provided, check that the string is non-empty and under 500 characters. If null or empty, the prompt uses general-purpose claim extraction. Warn if domain context contains contradictory terms (e.g., 'legal' and 'medical' simultaneously). |
Implementation Harness Notes
How to wire the Unsupported Claim Flagging prompt into a production output validation pipeline.
This prompt is designed to operate as a post-generation guardrail, not a real-time user-facing step. In a typical architecture, a primary model generates an answer from retrieved evidence, and that answer-evidence pair is then passed to this flagging prompt. The flagging prompt should be called by a validation service or an orchestration layer after the primary generation but before the answer is released to the user. This separation of concerns keeps the flagging logic independent, testable, and swappable without touching the primary generation prompt.
The implementation harness must handle structured input assembly and output parsing. The prompt expects two required inputs: the generated answer text and the source evidence passages. These should be injected into the [GENERATED_ANSWER] and [SOURCE_EVIDENCE] placeholders. The output is a JSON object containing an array of flagged claims, each with a claim text, severity classification, and a rationale. The harness must parse this JSON, validate it against a defined schema (e.g., using Pydantic or JSON Schema), and handle malformed responses with a retry or fallback. A critical implementation detail is claim segmentation: the prompt works best when the generated answer is relatively short (under 500 words). For longer answers, pre-segment the text into paragraphs or sentences and run the flagging prompt per segment to avoid the model missing claims.
The severity classification field drives downstream actions. Map the output severity levels to automated decisions: critical flags should block the response and escalate for human review; major flags should trigger a regeneration attempt with stricter grounding instructions; minor flags can be logged and attached as metadata for monitoring without blocking the response. Log every flagging result, including the full prompt, the model's raw output, and the parsed flags, to enable offline evaluation of false-positive and false-negative rates. For high-stakes domains, always require a human-in-the-loop review step for any response that triggers a critical or major flag before the answer reaches the end user. Do not use this prompt as the sole safety mechanism; combine it with upstream evidence sufficiency checks and downstream user-facing disclaimers.
Expected Output Contract
Structured JSON report fields, types, and validation rules for the unsupported claim flagging prompt. Use this contract to build output validators, eval checks, and downstream consumers.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
report_id | string (UUID v4) | Must parse as valid UUID v4. Reject if missing or malformed. | |
generated_answer_id | string | Must match the ID of the answer being validated. Non-empty string required. | |
total_claims | integer | Must equal the count of items in the claims array. Non-negative integer. | |
supported_claims_count | integer | Must be less than or equal to total_claims. Non-negative integer. | |
unsupported_claims_count | integer | Must equal total_claims minus supported_claims_count. Non-negative integer. | |
claims | array of objects | Must be a JSON array. Length must equal total_claims. Each element must conform to the claim object schema below. | |
claims[].claim_id | string | Unique within the claims array. Non-empty string. | |
claims[].claim_text | string | The exact claim text extracted from the generated answer. Must be a substring of the generated answer. Non-empty. | |
claims[].support_status | string (enum) | Must be one of: 'FULLY_SUPPORTED', 'PARTIALLY_SUPPORTED', 'UNSUPPORTED', 'CONTRADICTED'. No other values allowed. | |
claims[].severity | string (enum) | Required when support_status is UNSUPPORTED or CONTRADICTED. Must be one of: 'CRITICAL', 'MAJOR', 'MINOR'. Null allowed for supported claims. | |
claims[].evidence_citation | array of strings | Array of source IDs or passage references. Must be empty array when support_status is UNSUPPORTED. Each string must match a source_id in the provided evidence set. | |
claims[].explanation | string | Human-readable justification for the support_status decision. Must reference specific evidence or explain absence. Non-empty. | |
overall_grounding_score | number (0.0-1.0) | Float between 0.0 and 1.0 inclusive. Must equal supported_claims_count divided by total_claims. Round to 2 decimal places. | |
requires_human_review | boolean | Must be true if any claim has severity CRITICAL or support_status CONTRADICTED. Otherwise false. | |
generated_at | string (ISO 8601) | Must parse as valid ISO 8601 datetime in UTC. Reject if missing timezone. |
Common Failure Modes
Unsupported claim flagging fails in predictable ways. These are the most common production failure modes and how to guard against them before they reach users.
False Negatives: Missing Unsupported Claims
What to watch: The flagging prompt misses claims that are plausible but unsupported, especially when the generated answer uses confident language or rephrases evidence in ways that sound grounded. This is the most dangerous failure mode because it lets hallucination through. Guardrail: Include few-shot examples of subtly unsupported claims in the prompt, test against a golden set of known hallucinations, and set a recall threshold (e.g., >95%) before shipping.
False Positives: Flagging Supported Claims
What to watch: The prompt over-flags claims that are actually supported by the evidence, often because it applies overly strict literal matching or fails to recognize paraphrased support. This erodes trust in the validation pipeline and creates alert fatigue. Guardrail: Calibrate with a precision target (e.g., >90%), include counterexamples of correctly supported claims in the prompt, and log false-positive patterns for prompt iteration.
Severity Inflation: Everything Is Critical
What to watch: The severity classifier defaults to 'critical' for every flagged claim, making it impossible to prioritize remediation. This happens when the prompt lacks clear severity definitions or when the model treats all unsupported statements as equally dangerous. Guardrail: Define severity tiers with concrete criteria (e.g., 'critical' = contradicts evidence or fabricates numbers; 'minor' = stylistic inference without factual risk) and include annotated examples for each tier.
Claim Granularity Mismatch
What to watch: The prompt extracts claims at the wrong granularity—either too coarse (whole sentences treated as one claim, missing embedded unsupported sub-claims) or too fine (atomizing every phrase, creating unmanageable flag volumes). Guardrail: Specify claim boundaries in the prompt (e.g., 'one verifiable factual assertion per claim'), test granularity on sample outputs, and adjust based on downstream consumer needs.
Evidence-Answer Alignment Drift
What to watch: The flagging prompt compares claims against the wrong evidence passages, either because the evidence mapping is ambiguous or because the prompt doesn't enforce strict source-claim alignment. This produces garbage flags that look structured but are meaningless. Guardrail: Require explicit evidence-to-claim mapping in the output schema (e.g., 'cite the specific passage ID and span for each claim'), and validate that cited passages actually contain the claimed support.
Prompt Drift Under Output Length Variation
What to watch: The flagging prompt performs well on short answers but degrades on long, multi-paragraph responses where claims accumulate and the model loses track of earlier statements. Flag recall drops as output length increases. Guardrail: Chunk long answers into sections before flagging, process each section independently, and merge results. Set a maximum claims-per-pass threshold and test with your longest expected outputs.
Evaluation Rubric
Use this rubric to test the Unsupported Claim Flagging Prompt before shipping. Each criterion targets a specific failure mode observed in production output validation pipelines. Run these checks against a golden dataset of 50-100 answer-evidence pairs with known claim support status.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Flag Recall |
| Unsupported claims pass through unflagged; recall drops below 0.90 on adversarial samples | Run prompt against 50+ answer-evidence pairs with human-annotated unsupported claims; compute recall = flagged_unsupported / total_known_unsupported |
False-Positive Rate | <= 0.10 false-positive rate on fully supported claims | Prompt flags claims that are directly supported by provided evidence; rate exceeds 0.15 on clean samples | Run prompt against 30+ fully-grounded answers; compute FPR = incorrectly_flagged / total_supported_claims |
Severity Classification Accuracy |
| Critical unsupported claims labeled minor; minor issues escalated to critical; agreement below 0.70 | Compare severity labels from prompt output to human annotations on 40+ flagged claims; compute Cohen's kappa or raw agreement |
Evidence Span Citation | Each flagged claim includes a specific evidence span or null citation when no supporting passage exists | Flagged claims lack citation field; citation points to irrelevant passage; citation hallucinated for unsupported claims | Parse output JSON; assert every flagged claim has a citation field; spot-check 20 citations against source evidence for relevance |
Output Schema Compliance | 100% of outputs parse as valid JSON matching the defined schema with all required fields present | Missing required fields; malformed JSON; extra or renamed fields; nested structure differs from contract | Validate 100 consecutive outputs against JSON Schema; reject any output that fails structural validation |
Boundary Case Handling | Correctly handles empty evidence, single-sentence answers, and claims that are partially supported | Crashes or returns empty report on edge cases; misclassifies partially-supported claims as fully supported or fully unsupported | Run 15 curated edge cases through prompt; manually verify each output for correct flagging and severity assignment |
Instruction Drift Resistance | Prompt maintains flagging behavior across 50+ runs with varied answer length and evidence count | Prompt starts adding unsolicited commentary, reinterpreting severity definitions, or skipping claims after repeated use | Run prompt 50 times against varied inputs; check output consistency in structure, severity definitions, and claim coverage |
Latency Budget Compliance | 95th percentile response time under 8 seconds for answers with <= 10 claims and <= 5 evidence passages | Response time exceeds 15 seconds for typical inputs; timeout errors on longer answers; token usage spikes | Benchmark 100 calls with representative payload sizes; measure p50, p95, p99 latency and token consumption |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base prompt and a small set of 10-20 answer-evidence pairs. Run the prompt on known-good and known-bad examples. Use a simple JSON schema for the output—no nested severity enums yet. Accept string-based severity labels (HIGH, MEDIUM, LOW) and skip strict enum validation during early iteration.
Watch for
- Over-flagging: the model flags stylistic rewording as unsupported when the claim is semantically supported.
- Missing schema adherence: the model returns prose instead of structured JSON.
- False negatives on implicit claims: claims that are implied but not explicitly stated in the evidence may slip through.

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.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us