This prompt is designed for verification engineers and RAG pipeline builders who need to create a structured, auditable link between a set of discrete, pre-extracted claims and a body of pre-retrieved evidence passages. Its core job is to pair each claim with the most relevant evidence, providing a direct quote, a source identifier, and a clear match type (support, contradict, or insufficient). It is a critical middleware step that sits strictly after a claim extraction phase and an evidence retrieval phase, and before any final verification scoring, confidence calibration, or human review routing. It does not perform retrieval, answer a user's question, or generate new content; it only maps existing claims to existing evidence.
Prompt
Claim-to-Evidence Pairing Prompt Template

When to Use This Prompt
Understand the exact job this prompt performs, the prerequisites for using it, and the boundaries where it should not be applied.
Use this prompt when you have a clean list of atomic claims and a set of candidate evidence documents or chunks, and you need to produce a structured JSON output that explicitly ties them together for downstream processing. This is essential for building transparent, debuggable verification systems where every factual assertion must be accounted for. The prompt is particularly valuable when you need to detect contradictions between sources, identify claims that lack sufficient evidence, or generate precise citations for an audit trail. It assumes the input claims are already decomposed into single, verifiable statements and that the evidence set has been retrieved and is ready for analysis.
Do not use this prompt as a general-purpose question-answering system or to perform the initial retrieval of evidence. It is not designed to handle raw user questions or to search a knowledge base. It also should not be used if the input is a single, long-form document that hasn't been decomposed into claims, or if the evidence set hasn't been pre-filtered for relevance. Applying this prompt to unprocessed text will lead to poor pairings and missed connections. The next step after using this prompt is typically to feed the structured output into a verification scoring model or a human review queue, where the pairings can be validated and final judgments can be made.
Use Case Fit
Where this prompt works and where it does not. Understand the operational boundaries before integrating it into a verification pipeline.
Good Fit: Structured RAG Verification
Use when: You have retrieved documents with stable identifiers and need explicit claim-to-evidence pairing with direct quotes. Guardrail: Ensure your retrieval step returns source metadata (doc_id, chunk_id) before invoking this prompt.
Bad Fit: Open-Domain Fact-Checking
Avoid when: The model must rely on its own parametric knowledge to verify claims without provided source text. Guardrail: This prompt requires evidence in the context window. If no sources are provided, it will hallucinate citations.
Required Inputs
Risk: Missing or malformed inputs cause silent failures. Guardrail: Always provide [CLAIMS_LIST] as an array of atomic, decontextualized claims and [EVIDENCE_DOCUMENTS] as an array of objects with id, text, and metadata fields.
Operational Risk: Hallucinated Citations
Risk: The model may fabricate plausible-sounding source IDs or quote text not present in the evidence. Guardrail: Implement a post-generation validator that checks every returned source_id and quote against the original evidence payload before accepting the output.
Operational Risk: Partial Match Over-Confidence
Risk: The model may mark a claim as 'supported' when evidence only partially matches. Guardrail: Use the match_type field strictly. Route 'partial' matches to a human review queue and never treat them as 'supported' in automated pipelines.
Scale Limit: Context Window Budget
Risk: Processing many claims against many documents exhausts the context window, leading to truncated outputs. Guardrail: Batch claims into groups of 5-10 and deduplicate evidence documents. Monitor token usage and implement a retry with a smaller batch size on failure.
Copy-Ready Prompt Template
A production-ready prompt for pairing extracted claims with evidence, producing structured outputs with direct quotes, source identifiers, and match types.
This prompt template is designed to be pasted directly into your system instructions for a verification or RAG pipeline. It takes a list of pre-extracted claims and a set of evidence documents, then produces a structured mapping of each claim to supporting, contradicting, or insufficient evidence. The output includes direct quotes, source identifiers, and a match type classification, making it suitable for downstream audit logging, human review routing, or automated confidence scoring.
textYou are a claim-to-evidence verification engine. Your task is to pair each provided claim with evidence from the provided source documents. # INPUTS - Claims: [CLAIMS_LIST] - Evidence Documents: [EVIDENCE_DOCUMENTS] # OUTPUT_SCHEMA Return a JSON object with a single key "claim_evidence_pairs" containing an array of objects. Each object must have the following fields: - "claim_id": string (the identifier from the input claims list) - "claim_text": string (the original claim text) - "match_type": string (one of "SUPPORT", "CONTRADICT", "INSUFFICIENT") - "evidence": array of objects, each containing: - "source_id": string (the identifier from the input evidence documents) - "quote": string (the exact text from the source that supports or contradicts the claim) - "relevance_explanation": string (a brief explanation of how the quote relates to the claim) - "confidence": number (a score from 0.0 to 1.0 indicating how strongly the evidence supports the match_type determination) - "missing_evidence_note": string or null (if match_type is "INSUFFICIENT", describe what specific evidence would be needed to verify the claim) # CONSTRAINTS - Do not fabricate quotes. Every quote must be a verbatim substring from the provided evidence documents. - If a claim is partially supported, prefer "INSUFFICIENT" over "SUPPORT" and explain what is missing. - If multiple sources contradict each other on the same claim, include all contradictory evidence and set match_type to "CONTRADICT". - Do not infer evidence beyond what is explicitly stated in the documents. - If no evidence documents are provided, set match_type to "INSUFFICIENT" for all claims. # EXAMPLES [EXAMPLES] # RISK_LEVEL [HIGH] This task involves factual verification. Hallucinated citations or misattributed evidence can cause real-world harm. If you are uncertain about a match, default to "INSUFFICIENT".
To adapt this template for your pipeline, replace the square-bracket placeholders with your specific data. [CLAIMS_LIST] should be a JSON array of objects with claim_id and claim_text fields. [EVIDENCE_DOCUMENTS] should be a JSON array of objects with source_id and content fields. The [EXAMPLES] placeholder should be replaced with 2-4 few-shot examples demonstrating correct SUPPORT, CONTRADICT, and INSUFFICIENT pairings, including edge cases like partial matches and multi-source conflicts. For high-stakes domains such as healthcare or legal review, add a [CONSTRAINTS] entry requiring a human-readable disclaimer when confidence is below a calibrated threshold, and route those outputs for human review before any downstream action is taken.
Prompt Variables
Required inputs for the claim-to-evidence pairing prompt. Each placeholder must be populated before the prompt is sent. Validation notes describe how to programmatically check that the input is usable before incurring model cost.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[CLAIMS_LIST] | Array of atomic, verifiable claims extracted from source content. Each claim must be a single factual assertion. | ["The company reported $4.2B in Q3 revenue.", "Customer churn decreased by 12% year-over-year."] | Schema check: must be a JSON array of strings. Each string must be non-empty and under 500 characters. Reject if any claim contains multiple assertions joined by 'and' or 'but'. |
[EVIDENCE_SOURCES] | Array of evidence objects with text content and source metadata. Each object must include a unique source identifier. | [{"source_id": "doc-12", "text": "Q3 earnings release: revenue reached $4.2 billion...", "title": "Q3 FY2024 Earnings"}] | Schema check: must be a JSON array of objects. Each object requires 'source_id' (string) and 'text' (string). Warn if any text field is under 50 characters. Reject if source_id values are not unique. |
[MATCH_TYPES] | Enum of allowed match classifications the model may assign to each claim-evidence pair. | ["SUPPORT", "CONTRADICT", "INSUFFICIENT"] | Enum check: must be a JSON array of strings. Allowed values are SUPPORT, CONTRADICT, INSUFFICIENT. Reject if empty or contains unknown values. Default to the three standard types if not provided. |
[OUTPUT_SCHEMA] | JSON schema or field specification describing the required output structure for each claim-evidence pair. | {"claim": "string", "evidence_quote": "string", "source_id": "string", "match_type": "string", "rationale": "string"} | Schema parse check: must be valid JSON. Confirm all required fields are present. Reject if schema is not parseable. Warn if schema lacks a 'rationale' or explanation field for auditability. |
[CONFIDENCE_THRESHOLD] | Minimum confidence score (0.0 to 1.0) required for auto-accepting a match. Pairs below this threshold should be flagged for human review. | 0.75 | Range check: must be a float between 0.0 and 1.0. Reject if outside range. Default to 0.7 if not provided. Log a warning if threshold is below 0.5 or above 0.95. |
[MAX_PAIRS_PER_CLAIM] | Maximum number of evidence sources to pair with each claim. Controls output size and prevents over-matching. | 3 | Integer check: must be a positive integer. Reject if 0 or negative. Default to 3 if not provided. Warn if value exceeds 10 due to context window and cost implications. |
[CITATION_FORMAT] | Specification for how evidence quotes should cite their source. Controls inline citation structure. | "[Quote text]" (Source: [source_id], Paragraph [n]) | String check: must be non-empty. Validate that the format string contains a reference to source_id. Reject if format does not include a source identifier token. Default to inline parenthetical format if not provided. |
[HALLUCINATION_CHECKS] | Boolean flag enabling additional verification that quoted evidence text actually appears in the provided sources. | Boolean check: must be true or false. When true, a post-processing step must verify each evidence_quote is a substring of the cited source text. Log a warning if set to false in production verification pipelines. |
Implementation Harness Notes
How to wire the Claim-to-Evidence Pairing prompt into a production RAG verification pipeline with validation, retries, and human review.
The Claim-to-Evidence Pairing prompt is designed to be a single step within a larger verification pipeline, not a standalone application. It expects pre-extracted claims and pre-retrieved evidence chunks as input. The implementation harness must therefore handle claim decomposition upstream, evidence retrieval upstream, and output validation downstream. The prompt itself should be treated as a stateless function: claims and evidence go in, structured pairings come out. Do not use this prompt to generate claims or retrieve evidence—it will hallucinate both if asked.
Input assembly: Before calling the model, construct the [CLAIMS] array from your claim extraction step and the [EVIDENCE_CHUNKS] array from your retrieval step. Each claim must include a unique claim_id and the original claim text. Each evidence chunk must include a chunk_id, source identifier, and full text. The prompt's [MATCH_TYPES] placeholder should be set to a controlled vocabulary such as ['SUPPORT', 'CONTRADICT', 'INSUFFICIENT']. The [OUTPUT_SCHEMA] placeholder should specify a JSON array of objects with fields: claim_id, chunk_id, match_type, direct_quote, and explanation. Model choice: Use a model with strong instruction-following and structured output capabilities (e.g., GPT-4o, Claude 3.5 Sonnet). Avoid smaller models for this task—they frequently confuse INSUFFICIENT with CONTRADICT and fabricate quotes when evidence is thin.
Validation and retry logic: After receiving the model response, validate the output against the schema before accepting it. Check that every claim_id and chunk_id in the output exists in the input arrays—hallucinated IDs are a common failure mode. Verify that every direct_quote is a substring of the referenced evidence chunk using an exact or fuzzy string match. If validation fails, construct a retry prompt that includes the original input, the invalid output, and a specific error message describing which field failed validation. Limit retries to 2 attempts; if validation still fails, route the affected claims to a human review queue with the partial output and error context attached.
Logging and observability: Log every prompt invocation with: input claim count, input chunk count, model used, latency, token usage, validation pass/fail, and retry count. Attach the validated output to your verification audit trail. For high-risk domains (legal, medical, financial), do not auto-accept SUPPORT or CONTRADICT pairings without human sampling. Implement a review sampling rate—start with 10% of pairings—and increase it if your eval metrics show precision below your threshold. What to avoid: Do not send claims without evidence chunks to this prompt expecting it to search; it cannot. Do not use this prompt's output as ground truth for training without human verification. Do not skip the quote substring check—it is your primary defense against hallucinated evidence.
Expected Output Contract
Define the exact structure, types, and validation rules for the output of the Claim-to-Evidence Pairing Prompt Template. Use this contract to build a post-processing validator in your application code.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
claim_evidence_pairs | Array of objects | Must be a non-empty JSON array. If no claims are found, return an empty array, not null. | |
claim_evidence_pairs[].claim_id | String | Must be a unique identifier within the response, formatted as 'C-[integer]' (e.g., 'C-1'). | |
claim_evidence_pairs[].original_claim_text | String | Must be an exact, verbatim substring from the [INPUT_TEXT]. Validate by checking string containment. | |
claim_evidence_pairs[].match_type | Enum: 'SUPPORT', 'CONTRADICT', 'INSUFFICIENT' | Must be one of the three specified enum values. Reject any other string. | |
claim_evidence_pairs[].evidence_quote | String or null | If match_type is 'SUPPORT' or 'CONTRADICT', must be a direct quote from the [EVIDENCE_SOURCE]. If 'INSUFFICIENT', must be null. | |
claim_evidence_pairs[].source_identifier | String or null | If evidence_quote is not null, must contain a valid source ID from the provided [SOURCE_MAP]. If evidence_quote is null, must be null. | |
claim_evidence_pairs[].confidence_score | Number (0.0 to 1.0) | Must be a float between 0.0 and 1.0. A score of 0.0 is only valid when match_type is 'INSUFFICIENT'. | |
claim_evidence_pairs[].rationale | String | Must be a non-empty string explaining the match_type and confidence_score. Must not simply restate the match_type. |
Common Failure Modes
Claim-to-evidence pairing fails in predictable ways. These are the most common production failure modes and how to guard against them before they reach users.
Hallucinated Citations
Risk: The model fabricates source identifiers, paragraph numbers, or quotes that do not exist in the provided evidence. This is the highest-severity failure in verification pipelines because it creates false confidence. Guardrail: Require exact string matching between the output citation and the source text. Implement a post-processing validator that searches for every quoted span in the original document. If a quote cannot be located, flag the pair for human review or automatic rejection.
Misattributed Evidence
Risk: A claim is paired with evidence from the wrong source, wrong section, or wrong document. The evidence exists but does not actually support the specific claim it is linked to. Guardrail: Include source metadata in every evidence chunk (document ID, section header, page number). Require the model to output the source identifier alongside the evidence. Validate that the identifier exists in the provided source set before accepting the pair.
Over-Confident Partial Matches
Risk: The model marks a claim as 'supported' when evidence only partially confirms it. For example, a claim about 'Q3 revenue growth of 12%' matched to evidence stating 'revenue grew in Q3' without the percentage. Guardrail: Decompose compound claims into atomic sub-claims before evidence matching. Require the model to explicitly state which claim components are supported and which are not. Add a 'partially_supported' match type with required gap documentation.
Silent Null Evidence Failures
Risk: When no relevant evidence is retrieved, the model still produces a 'best effort' match instead of explicitly reporting no evidence found. This creates false positives in automated pipelines. Guardrail: Add an explicit 'insufficient_evidence' match type to the output schema. Include a system instruction that requires the model to output this type when no passage meets the relevancy threshold. Test with empty evidence sets to verify the model correctly abstains.
Context-Stripped Quote Distortion
Risk: The model extracts a quote that matches literally but loses surrounding context that changes its meaning. A sentence supporting a claim may be preceded by 'Contrary to previous reports...' which inverts the intended meaning. Guardrail: Require quotes to include a minimum context window (e.g., the full paragraph or preceding and following sentences). Add a context-integrity check that flags quotes extracted from sections containing negation, hedging, or contradiction markers.
Position Bias in Multi-Source Ranking
Risk: When multiple evidence passages are provided, the model disproportionately selects evidence from the beginning or end of the context window, ignoring equally relevant passages in the middle. Guardrail: Randomize evidence passage order before sending to the model. Run the same claim against multiple shuffled orderings and flag pairs where the selected evidence changes based on position. Use a separate relevance scorer before evidence selection to reduce order dependence.
Evaluation Rubric
Use this rubric to test the quality of claim-to-evidence pairing outputs before integrating the prompt into a production verification pipeline. Each criterion targets a specific failure mode common in evidence matching systems.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Citation Hallucination | Every source identifier in the output resolves to a document or chunk that was actually provided in [SOURCE_MATERIAL]. No fabricated document names, URLs, or chunk IDs. | A source ID, title, or URL appears in the output that does not exist in the input source list. The model invents a plausible-sounding reference. | Parse all source identifiers from the output. Cross-reference each against the input [SOURCE_MATERIAL] index. Flag any identifier not present in the input set. |
Direct Quote Fidelity | Every quoted string in the output is a verbatim substring of the referenced source document. No paraphrased text is presented inside quotation marks. | A quoted string contains words, punctuation, or ordering not present in the original source. The model alters a quote to better match the claim. | Extract all quoted strings. For each, perform an exact substring search in the referenced source document. Flag any quote that returns zero exact matches. |
Match Type Accuracy | The assigned match type (support/contradict/insufficient) correctly reflects the logical relationship between the claim and the cited evidence for all pairs. | A claim is labeled 'support' when the evidence is unrelated. A direct contradiction is labeled 'insufficient'. The model conflates topic relevance with logical support. | For a golden dataset of 20 claim-evidence pairs with known labels, compare model-assigned match types to ground truth. Require >90% agreement on a stratified sample. |
Claim Coverage Completeness | Every claim in [EXTRACTED_CLAIMS] appears in the output with at least one evidence pair. No claims are silently dropped. | One or more input claims are missing from the output entirely. The model skips claims it cannot match rather than reporting 'insufficient' evidence. | Count unique claim IDs in [EXTRACTED_CLAIMS] and compare to unique claim IDs in the output. Flag any input claim ID not present in the output. |
Evidence-Only Grounding | The output contains no factual assertions, interpretations, or context beyond what is directly quoted or cited from [SOURCE_MATERIAL]. The model adds zero external knowledge. | The output includes a statement like 'This claim is widely accepted' or adds background context not present in any source. The model fills gaps with its own knowledge. | Have a reviewer compare the output against [SOURCE_MATERIAL]. Flag any sentence in the analysis or explanation fields that cannot be traced to a specific source passage. |
Schema Compliance | The output is valid JSON matching the [OUTPUT_SCHEMA] specification. All required fields are present. No extra top-level keys exist. | The output is missing a required field such as 'evidence_quote' or 'match_type'. The output contains an unexpected key. The JSON is malformed and fails to parse. | Validate the output against the [OUTPUT_SCHEMA] using a JSON schema validator. Reject any output that fails structural validation. |
Insufficient Evidence Handling | Claims with no supporting or contradicting evidence are explicitly marked as 'insufficient' with an empty evidence quote and a note explaining the gap, not omitted or mislabeled. | A claim with no evidence is labeled 'support' with a weakly related passage. A claim with no evidence is omitted from the output. The model forces a match where none exists. | Include at least one claim in the test set that has no relevant evidence in [SOURCE_MATERIAL]. Verify the output labels it 'insufficient' and provides no fabricated quote. |
Source Conflict Transparency | When multiple sources provide conflicting evidence for the same claim, the output surfaces the conflict explicitly rather than silently selecting one source. | The output reports only the supporting source and ignores a contradicting source present in [SOURCE_MATERIAL]. The model resolves ambiguity without documenting it. | Provide [SOURCE_MATERIAL] containing both supporting and contradicting evidence for the same claim. Verify the output includes both sources and flags the conflict. |
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 single source document and a small set of pre-extracted claims. Remove strict output schema requirements initially. Focus on getting correct match_type classifications (support, contradict, insufficient) before adding production constraints.
code[SYSTEM_INSTRUCTION] You are a verification assistant. Given a claim and a source document, determine if the source supports, contradicts, or provides insufficient evidence for the claim. Return a JSON object with match_type, direct_quote, and brief_explanation. [CLAIM] [claim_text] [SOURCE] [source_text]
Watch for
- Overly broad
supportclassifications when evidence is only tangentially related - Missing
direct_quotefields when evidence exists - Hallucinated quotes that don't appear in the source
- Treating
insufficientas a failure rather than a valid verification outcome

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