This prompt is a guardrail component for output validation pipelines. Its job is to analyze a generated text alongside a set of provided source documents and identify every factual claim that lacks supporting evidence. It distinguishes between claims that are unsupported because the sources are silent on the topic and claims that directly contradict the provided evidence. The output includes a severity classification for each flagged claim so that downstream systems can route low-risk stylistic statements differently from high-risk factual fabrications.
Prompt
Unsupported Claim Flagging Prompt

When to Use This Prompt
Understand the job-to-be-done, ideal user, required context, and when not to use the Unsupported Claim Flagging Prompt.
Use this prompt after answer generation and before the response reaches a user, auditor, or downstream system. It assumes you have already retrieved or provided the relevant source documents. This is not a retrieval prompt, not a citation formatter, and not a general fact-checker that searches the open web. The ideal user is an AI product engineer or output validation pipeline builder who needs a deterministic, auditable step between generation and delivery. Required context includes the full generated text to be verified and the complete set of source documents that should support it. Without both, the prompt cannot function—it will either flag everything as unsupported or miss fabrications entirely.
Do not use this prompt when you need to retrieve sources, when you need to format citations, or when you need a human-readable explanation of why a claim is supported. It is not a replacement for retrieval-augmented generation (RAG) and should not be used as the primary factuality check in systems where source documents are not available. If your workflow requires open-web verification, use a separate retrieval step before invoking this prompt. For high-risk domains such as healthcare, legal, or financial compliance, always route severity-flagged outputs to human review before any automated action is taken. The next step after reading this section is to review the prompt template and wire it into your validation harness with appropriate severity thresholds and escalation rules.
Use Case Fit
Where the Unsupported Claim Flagging Prompt delivers reliable guardrail behavior—and where it creates new risks. Use these cards to decide if this prompt fits your pipeline before you integrate it.
Good Fit: Post-Generation Output Validation
Use when: you have a completed model response and a set of provided source documents. The prompt excels at auditing claims after generation, not during. Guardrail: Always run this prompt as a separate validation step with a distinct model call, never inline during answer generation.
Bad Fit: Real-Time Streaming Responses
Avoid when: latency budget is under 500ms or responses must stream token-by-token. Claim-by-claim verification requires the full output and all sources upfront. Guardrail: Buffer the complete response, run verification asynchronously, and surface flags in a post-hoc review panel rather than blocking the stream.
Required Input: Source Documents with Stable References
Risk: the prompt cannot verify claims without explicit, retrievable source passages. Passing only document titles or URLs produces false negatives. Guardrail: Require source text spans with stable identifiers as input. If your RAG pipeline discards passage text after retrieval, store it for verification before generating the final answer.
Operational Risk: Severity Classification Drift
Risk: severity labels such as 'unsupported' versus 'fabricated' can drift across model versions or input lengths, causing inconsistent routing. Guardrail: Pin severity definitions with concrete examples in the prompt. Run a weekly calibration eval against a golden set of 50 claim-source pairs to detect drift early.
Bad Fit: Open-Domain Conversation Without Sources
Avoid when: the system has no retrieved or provided evidence to check against. The prompt will flag every factual claim as unsupported, producing noise instead of signal. Guardrail: Gate execution on the presence of at least one source passage. If no sources exist, route to a separate 'no-evidence' handling path instead of running verification.
Required Input: Complete Model Output Text
Risk: truncating the model output before verification hides claims that appear later in the response, creating a false sense of grounding. Guardrail: Verify the full output text, not a summary. If token limits force truncation, split the output into claim groups and verify each group separately with overlapping context windows.
Copy-Ready Prompt Template
A copy-ready template for flagging unsupported claims in model outputs, ready to paste into your validation pipeline.
This prompt template is designed to be dropped directly into your output validation or guardrail step. It instructs the model to act as a strict evidence auditor: it must identify every factual claim in a generated text, check whether that claim is supported by the provided source material, and classify any unsupported claim by severity. The output is a structured report that your application can parse to decide whether to block, flag, or escalate the response before it reaches a user.
textYou are an evidence auditor. Your task is to identify claims in the provided model output that lack support from the provided source documents. ## INPUT Model Output: [OUTPUT_TEXT] Source Documents (with IDs): [SOURCE_DOCUMENTS] ## INSTRUCTIONS 1. Extract every discrete factual claim from the Model Output. A claim is a statement that can be verified against evidence. 2. For each claim, search the Source Documents for direct supporting evidence. 3. Classify each claim as: - SUPPORTED: The claim is directly backed by at least one source passage. - UNSUPPORTED: No source provides evidence for the claim. - CONTRADICTED: A source explicitly states the opposite of the claim. - FABRICATED: The claim references a source, page, or detail that does not exist in the provided documents. 4. For each UNSUPPORTED, CONTRADICTED, or FABRICATED claim, assign a severity: - LOW: Minor detail, unlikely to mislead. - MEDIUM: Could cause confusion or minor factual error. - HIGH: Material misrepresentation, safety risk, or regulatory concern. - CRITICAL: Fabricated citation, invented data, or dangerous misinformation. ## OUTPUT SCHEMA Return a JSON object with this structure: { "total_claims": <integer>, "supported_count": <integer>, "unsupported_count": <integer>, "contradicted_count": <integer>, "fabricated_count": <integer>, "flagged_claims": [ { "claim_text": "<exact claim from output>", "classification": "UNSUPPORTED | CONTRADICTED | FABRICATED", "severity": "LOW | MEDIUM | HIGH | CRITICAL", "reasoning": "<why this claim was flagged, referencing specific sources or gaps>" } ], "overall_assessment": "<one-sentence summary of output reliability>" } ## CONSTRAINTS - Do not flag claims that are clearly opinion, hedging, or stylistic language. - If a claim is partially supported but overstates the evidence, classify it as UNSUPPORTED. - If no source documents are provided, classify all factual claims as UNSUPPORTED. - Never invent supporting evidence. If you are unsure, flag the claim.
To adapt this template, replace [OUTPUT_TEXT] with the model-generated text you are validating and [SOURCE_DOCUMENTS] with your retrieved or provided evidence, including source IDs for traceability. For high-risk domains such as healthcare or legal, add a [RISK_LEVEL] parameter that adjusts severity thresholds and always route CRITICAL and HIGH findings to a human review queue. Before deploying, run this prompt against a golden dataset of known supported and unsupported claims to calibrate your severity thresholds and measure precision and recall. The structured JSON output is designed to be consumed by downstream routing logic—parse the flagged_claims array and use the severity field to decide whether to block the response, surface a warning, or log for audit.
Prompt Variables
Each placeholder required by the Unsupported Claim Flagging Prompt, its purpose, a concrete example, and actionable validation notes for integration into a production guardrail pipeline.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[MODEL_OUTPUT] | The full generated text to be audited for unsupported claims. | "Our Q3 revenue grew 15% driven by the new enterprise tier, as confirmed by the CFO." | Schema check: must be a non-empty string. Null or empty input should abort the pipeline with a clear error code. |
[SOURCE_EVIDENCE] | A list of source documents or passages provided as grounding context. | [{"source_id": "doc_12", "text": "Q3 revenue reached $4.2M."}, {"source_id": "doc_45", "text": "Enterprise tier launched in Q2."}] | Schema check: must be a valid JSON array. If empty, all claims in [MODEL_OUTPUT] should be flagged as unsupported. Validate each object has a non-empty 'text' field. |
[SEVERITY_THRESHOLD] | The minimum severity level for flagging a claim. Claims below this threshold are ignored. | "medium" | Enum check: must be one of 'low', 'medium', 'high', 'critical'. Default to 'medium' if null. Invalid values should cause a retry or fallback to the default. |
[OUTPUT_SCHEMA] | The exact JSON schema the model must use to return flagged claims. | {"type": "object", "properties": {"claim": {"type": "string"}, "severity": {"type": "string"}, "reason": {"type": "string"}}} | Schema check: must be a valid JSON Schema object. The final model response must be parsed and validated against this schema. A failed parse should trigger a repair or retry loop. |
[MAX_CLAIMS] | The maximum number of unsupported claims to return in a single analysis. | 5 | Type check: must be an integer. If the number of detected claims exceeds this, include a 'claims_truncated': true field in the output. A value of 0 should be treated as unbounded. |
[FABRICATION_DEFINITION] | A clear instruction distinguishing an unsupported claim from a fabrication. | "A fabrication is a claim that directly contradicts the provided sources. An unsupported claim lacks evidence but does not necessarily contradict them." | Content check: must be a non-empty string. This definition is critical for the model's classification logic. An empty definition will cause unreliable severity scoring. |
[CONTEXT_WINDOW_LIMIT] | The maximum token count for the combined prompt, used to truncate source evidence if necessary. | 120000 | Type check: must be an integer. If the total prompt exceeds this limit, evidence should be truncated from the bottom of the list with a 'truncation_warning': true flag added to the prompt context. |
Implementation Harness Notes
How to wire the Unsupported Claim Flagging Prompt into a production validation pipeline with retries, logging, and human review.
The Unsupported Claim Flagging Prompt is not a standalone tool; it is a guardrail component designed to sit inside a post-generation validation pipeline. After your primary model produces an answer, pass that answer and its source context into this prompt. The output is a structured JSON payload containing flagged claims, severity classifications, and evidence gap descriptions. This output should be consumed programmatically by your application logic—not displayed directly to end users. The typical integration point is after answer generation and before the response is returned to the user, or as an asynchronous audit step for compliance workflows.
To wire this into production, wrap the prompt call in a validation harness that handles model choice, retries, and structured output parsing. Use a fast, cost-efficient model for this task (such as GPT-4o-mini or Claude Haiku) since the verification logic is classification-heavy and does not require deep reasoning. Implement a retry loop with a maximum of 2 attempts: if the model returns malformed JSON or fails to produce the expected flagged_claims array, retry with the error message appended to the prompt. After parsing, validate the output schema—each flagged claim must contain claim_text, severity (one of unsupported, fabricated, contradicted), and evidence_gap_description. Reject outputs that do not conform. Log every verification result, including the input claims, the model's classification, and the final action taken, for auditability and prompt debugging.
For high-risk domains such as healthcare, legal, or finance, do not rely solely on this automated flag. Route any claim flagged with severity fabricated or contradicted to a human review queue before the response reaches the user. For unsupported claims, you may choose to either strip the claim from the output automatically or append a visible uncertainty marker, depending on your product's risk tolerance. Avoid the temptation to use this prompt as a real-time correctness guarantee—it reduces hallucination risk but does not eliminate it. Pair it with citation verification prompts and evidence sufficiency checks for a layered defense. The next step is to build an eval harness using golden datasets of known supported and unsupported claims to measure your pipeline's precision and recall before deployment.
Expected Output Contract
The JSON structure, field types, and validation rules your harness should enforce for the Unsupported Claim Flagging Prompt output.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
output_id | string (UUID v4) | Must be a valid UUID v4 string. Reject if missing or malformed. | |
claims | array of objects | Must be a non-empty array. Each element must conform to the claim object schema. | |
claims[].claim_id | string | Must be unique within the claims array. Use format 'claim-{index}'. | |
claims[].claim_text | string | Must be a non-empty string. Should be a verbatim extract from the original model output. | |
claims[].support_status | enum: SUPPORTED | PARTIALLY_SUPPORTED | UNSUPPORTED | FABRICATED | Must be one of the four enum values. Reject any other string. | |
claims[].severity | enum: LOW | MEDIUM | HIGH | CRITICAL | Must be one of the four enum values. CRITICAL only allowed when support_status is FABRICATED. | |
claims[].evidence_summary | string or null | If support_status is UNSUPPORTED or FABRICATED, this field must be null. Otherwise, provide a brief summary. | |
claims[].source_reference | string or null | If support_status is SUPPORTED, this field must contain a valid source identifier. Otherwise, must be null. | |
overall_score | number (float, 0.0-1.0) | Must be a float between 0.0 and 1.0 inclusive. Represents the proportion of supported claims. |
Common Failure Modes
Unsupported claim flagging fails in predictable ways in production. These are the most common failure modes and the guardrails that prevent them from reaching users.
Over-Flagging of Idiomatic Language
What to watch: The prompt flags figurative language, common knowledge statements, or rhetorical transitions as unsupported claims. Phrases like 'it's worth noting' or 'as expected' trigger false positives, flooding the review queue with noise. Guardrail: Add explicit exclusion rules for idiomatic expressions, transitional phrases, and widely accepted domain knowledge. Include a severity classification step that routes low-confidence flags to a sampling review rather than blocking output.
Missing Implicit Source Support
What to watch: The prompt marks a claim as unsupported because the evidence is spread across multiple passages or requires inference from context, even though a human reader would find the support adequate. This creates false negatives that erode trust in the flagging system. Guardrail: Require the prompt to check for distributed support across the full source set before flagging. Include an instruction to consider whether the claim is a reasonable synthesis of multiple evidence spans rather than demanding a single direct quote.
Severity Inflation on Edge Cases
What to watch: The prompt assigns high severity to claims that are partially supported or represent minor factual uncertainties, causing unnecessary escalation and human review bottlenecks. Guardrail: Implement a structured severity rubric with clear thresholds: 'unsupported' vs 'partially supported' vs 'contradicted.' Route only 'contradicted' and high-confidence 'unsupported' claims for immediate review. Use a second-pass verification prompt for borderline cases.
Context Window Truncation Masking Evidence
What to watch: When source documents are long, the prompt may flag claims as unsupported because the supporting evidence fell outside the context window or was truncated during retrieval. The flag is technically correct given the provided context but misleading in practice. Guardrail: Include a 'context completeness' check before flagging. If the source appears truncated or the evidence set is incomplete, classify the flag as 'insufficient context' rather than 'unsupported claim.' Log truncation events for retrieval pipeline tuning.
Claim Extraction Granularity Mismatch
What to watch: The prompt extracts claims at the wrong granularity—either too fine (flagging individual words) or too coarse (missing embedded sub-claims within a sentence). This produces either noise or blind spots in the verification output. Guardrail: Define explicit claim boundaries in the prompt: extract one claim per independent clause that contains a verifiable factual assertion. Include examples of correct and incorrect claim granularity. Validate claim extraction separately before running support checks.
Source-Answer Alignment Drift
What to watch: The prompt flags a claim as unsupported because it compares the claim against the wrong source or a source that addresses a related but different question. This happens frequently when multiple retrieved passages cover similar topics. Guardrail: Add a pre-check step that confirms source relevance to the specific claim before evaluating support. Require the prompt to state which source passage it compared against and why, making misalignment visible in the output for downstream review.
Evaluation Rubric
Criteria for testing the Unsupported Claim Flagging Prompt before production deployment. Each row defines a pass standard, a failure signal, and a concrete test method.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Claim Extraction Recall | All factual claims in [INPUT_TEXT] are extracted with no omissions | Extracted claims list is missing a verifiable factual statement present in the input | Run against a golden dataset of 50 annotated texts; recall must be >= 0.95 |
Claim Extraction Precision | Every extracted claim is a discrete factual assertion, not a question, opinion, or duplicate | Extracted list contains rhetorical questions, subjective statements, or near-duplicate claims | Manual review of 100 random extractions; precision must be >= 0.90 |
Support Classification Accuracy | Each claim correctly classified as SUPPORTED, PARTIALLY_SUPPORTED, or UNSUPPORTED against [SOURCE_DOCUMENTS] | A claim with verbatim source text is marked UNSUPPORTED, or a fabricated claim is marked SUPPORTED | Run against 200 claim-source pairs with human-verified labels; F1 per class must be >= 0.85 |
Evidence Span Location | For SUPPORTED and PARTIALLY_SUPPORTED claims, the [EVIDENCE_SPAN] field contains the exact supporting text from the source | Evidence span is hallucinated, truncated mid-sentence, or pulled from an unrelated document section | String-match verification against source documents; exact match rate must be >= 0.90 |
Severity Classification | UNSUPPORTED claims are assigned correct severity: CRITICAL for fabricated data, HIGH for unsupported factual assertions, LOW for minor unsupported details | A claim inventing a financial figure is classified as LOW severity | Test against 50 pre-labeled severity examples; weighted kappa >= 0.80 against human raters |
Hallucination Type Discrimination | Each UNSUPPORTED claim is correctly labeled as FABRICATION, EXTRAPOLATION, or CONTRADICTION | A claim that directly contradicts a source is labeled as EXTRAPOLATION | Run against 30 examples per hallucination type; per-class F1 must be >= 0.80 |
Output Schema Compliance | Output is valid JSON matching [OUTPUT_SCHEMA] with all required fields present and correctly typed | Missing required field, wrong type, or extra fields not in schema | Automated JSON Schema validation in CI pipeline; pass rate must be 100% on 500 test runs |
Empty Input Handling | When [INPUT_TEXT] contains no factual claims, output returns an empty claims array with a valid reason in [NO_CLAIMS_RATIONALE] | Empty input produces a hallucinated claim, null output, or unparseable response | Test with 20 empty or non-factual inputs; empty claims array rate must be 100% |
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
Use the base prompt with a simple JSON schema and a single severity dimension. Remove the multi-source cross-referencing step and the detailed evidence-span requirement. Focus on binary classification: supported vs. unsupported.
codeAnalyze the following [OUTPUT_TEXT] against [SOURCE_DOCUMENTS]. For each claim, return: - claim: string - supported: boolean - severity: "LOW" | "MEDIUM" | "HIGH"
Watch for
- Over-flagging opinion statements as unsupported facts
- Missing schema validation on the JSON output
- No distinction between "no evidence found" and "contradicted by evidence"

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