Inferensys

Prompt

Evidence Matching with Partial Match Handling Prompt

A practical prompt playbook for using the Evidence Matching with Partial Match Handling Prompt in production AI verification workflows. Prevents over-confident verification by scoring partial support and identifying unsupported claim components.
Developer designing multi-agent workflow on laptop, architecture diagram on screen, casual home office setup with afternoon light.
PROMPT PLAYBOOK

When to Use This Prompt

Deploy this prompt when binary match/no-match logic fails and you need to quantify partial support for a claim from incomplete evidence.

This prompt is designed for verification engineers and RAG pipeline builders who face a specific failure mode: over-confident verification from partial evidence. In production fact-checking systems, a source often confirms some components of a claim but not others—for example, a document may verify a person's role but not the specific action attributed to them, or a retrieved passage may corroborate a numerical trend but differ in magnitude. Binary verification prompts that output only 'supported' or 'unsupported' collapse this nuance, either accepting a claim on weak grounds or rejecting it despite substantial corroboration. This template solves that problem by forcing the model to decompose a claim into its constituent atomic components, evaluate each independently against the provided evidence, and produce a structured partial-match score with explicit identification of which parts are supported, which are not, and why.

Use this prompt in the evidence-matching stage of a verification workflow, after claim extraction and evidence retrieval have completed, and before final verification reporting. It expects a pre-extracted claim (ideally decomposed into sub-claims by an upstream process) and a set of retrieved evidence passages. The output is a structured JSON object containing a partial-match score, a component-by-component support assessment, and a summary of evidence gaps. This prompt is not a replacement for claim extraction or evidence retrieval—it assumes those steps have already produced clean inputs. It also should not be used when the evidence set is empty; pair it with a null-evidence handling prompt for that case. For high-stakes domains like healthcare, finance, or legal verification, always route partial-match outputs to human review rather than treating the score as a final determination.

Before integrating this prompt into your pipeline, calibrate the partial-match threshold against your domain's tolerance for uncertainty. A 70% match may be sufficient for news monitoring but unacceptable for regulatory compliance. Build eval datasets with known partial-match scenarios—claims where exactly half the components are supported, claims with near-miss numerical evidence, and claims where support is distributed across multiple sources—to validate that the model isn't defaulting to binary thinking despite the structured output format. The most common production failure is the model treating a high partial-match score as equivalent to full verification; mitigate this by always surfacing the unsupported components explicitly in downstream reporting, never just the aggregate score.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Evidence Matching with Partial Match Handling Prompt works and where it introduces risk. Use this to decide if partial-match scoring is the right tool for your verification pipeline.

01

Good Fit: Multi-Faceted Claims

Use when: A single claim contains multiple independently verifiable components (e.g., 'The CEO, who joined in 2020, announced a 15% revenue increase'). Guardrail: The prompt decomposes the claim and scores each component separately, preventing a single unsupported detail from causing a full rejection.

02

Good Fit: Evidence with Gaps

Use when: Retrieved documents support the general topic but lack specific details like exact dates, figures, or named entities. Guardrail: The prompt outputs a structured breakdown showing which spans are supported and which are not, avoiding binary yes/no overconfidence.

03

Bad Fit: Binary Verification Needs

Avoid when: The downstream system requires a strict true/false or supported/unsupported label with no middle ground. Risk: Partial-match scores can confuse binary classifiers or trigger rules that expect definitive answers. Guardrail: Use a threshold to convert partial scores to binary labels only after human review of the score distribution.

04

Required Inputs

What you must provide: A single atomic or multi-part claim, a set of retrieved evidence passages with source identifiers, and a defined partial-match scoring schema. Guardrail: Without explicit source metadata, the prompt cannot produce traceable partial-match justifications. Always include document IDs and chunk indices.

05

Operational Risk: Score Inflation

What to watch: The model may assign high partial-match scores by over-weighting vague topical overlap rather than specific factual alignment. Guardrail: Require the output to quote the exact evidence span supporting each component. Validate that quoted spans contain the specific entities, numbers, or relationships claimed.

06

Operational Risk: Component Boundary Drift

What to watch: The model may incorrectly split or merge claim components, causing misattributed evidence matches. Guardrail: Include a pre-processing step that extracts and normalizes claim components before evidence matching. Log component boundaries for audit and debugging.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A copy-ready template for matching claims to evidence with explicit partial-match scoring and unsupported component identification.

This template is designed for verification pipelines where evidence often partially supports a claim without confirming every component. It forces the model to decompose a claim into atomic sub-claims, match each against the provided evidence, and produce a structured output that distinguishes supported, unsupported, and contradicted elements. The output includes a partial-match score, a detailed component-level breakdown, and an overall verification status. This prevents the common failure mode where a model marks a claim as 'supported' because one part matches, ignoring the rest.

text
You are an evidence verification system. Your task is to match a claim against provided evidence and produce a structured partial-match assessment.

INPUT:
- CLAIM: [CLAIM_TEXT]
- EVIDENCE: [EVIDENCE_TEXT]
- EVIDENCE_SOURCE: [SOURCE_IDENTIFIER]
- DOMAIN: [DOMAIN]

INSTRUCTIONS:
1. Decompose the CLAIM into atomic sub-claims. Each sub-claim must be a single verifiable assertion.
2. For each sub-claim, determine its match status against the EVIDENCE:
   - SUPPORTED: The evidence directly confirms this sub-claim.
   - UNSUPPORTED: The evidence does not address this sub-claim.
   - CONTRADICTED: The evidence directly contradicts this sub-claim.
3. For each SUPPORTED sub-claim, provide the exact quote from EVIDENCE that supports it.
4. Calculate a PARTIAL_MATCH_SCORE as: (number of SUPPORTED sub-claims) / (total sub-claims).
5. Determine OVERALL_STATUS:
   - FULLY_SUPPORTED: All sub-claims are SUPPORTED (score = 1.0).
   - PARTIALLY_SUPPORTED: Some sub-claims are SUPPORTED, none are CONTRADICTED (0 < score < 1.0).
   - PARTIALLY_CONTRADICTED: Some sub-claims are SUPPORTED, at least one is CONTRADICTED.
   - UNSUPPORTED: No sub-claims are SUPPORTED, none are CONTRADICTED (score = 0).
   - CONTRADICTED: At least one sub-claim is CONTRADICTED, none are SUPPORTED.
6. If EVIDENCE is empty or irrelevant, set OVERALL_STATUS to NO_EVIDENCE and PARTIAL_MATCH_SCORE to null.

OUTPUT_SCHEMA:
{
  "claim": "string",
  "evidence_source": "string",
  "sub_claims": [
    {
      "sub_claim_text": "string",
      "status": "SUPPORTED | UNSUPPORTED | CONTRADICTED",
      "supporting_quote": "string | null",
      "explanation": "string"
    }
  ],
  "partial_match_score": "number | null",
  "overall_status": "FULLY_SUPPORTED | PARTIALLY_SUPPORTED | PARTIALLY_CONTRADICTED | UNSUPPORTED | CONTRADICTED | NO_EVIDENCE",
  "unsupported_components_summary": "string"
}

CONSTRAINTS:
- Do not infer support beyond what the evidence explicitly states.
- If the evidence implies support but does not state it directly, mark the sub-claim as UNSUPPORTED.
- Do not fabricate quotes. If no quote exists, set supporting_quote to null.
- The unsupported_components_summary must list which parts of the claim lack evidence.

Adaptation guidance: Replace [CLAIM_TEXT] with the assertion to verify, [EVIDENCE_TEXT] with the retrieved passage or document content, [SOURCE_IDENTIFIER] with a document ID, URL, or chunk reference, and [DOMAIN] with the subject area (e.g., 'medical', 'legal', 'financial') to help the model calibrate its decomposition logic. For batch processing, wrap this template in a loop that iterates over claim-evidence pairs. For RAG pipelines, populate [EVIDENCE_TEXT] with the top-k retrieved passages and run this prompt once per passage, then aggregate results with a separate scoring step. If your evidence source contains multiple documents, consider using the Multi-Source Evidence Matching Prompt instead.

Validation and testing: Before deploying, validate outputs against a golden dataset of 50+ claim-evidence pairs with known partial-match outcomes. Check that partial_match_score is mathematically consistent with the sub-claim counts, that supporting_quote fields contain verbatim text from the evidence when present, and that UNSUPPORTED sub-claims never have a non-null quote. Common failure modes include the model marking a sub-claim as SUPPORTED based on inference rather than explicit evidence, and the model failing to decompose compound claims into atomic units. Add a post-processing validator that rejects outputs where supporting_quote text is not a substring of the input evidence. For high-stakes domains, route all PARTIALLY_SUPPORTED and PARTIALLY_CONTRADICTED outputs to human review with the full sub-claim breakdown attached.

IMPLEMENTATION TABLE

Prompt Variables

Inputs the prompt needs to work reliably. Validate these before sending to prevent silent failures, hallucinated matches, or over-confident partial evidence scoring.

PlaceholderPurposeExampleValidation Notes

[CLAIM]

The discrete factual assertion to verify

The company's Q3 revenue grew 12% year-over-year to $4.2 billion

Must be a single atomic claim. Reject if multiple assertions are concatenated. Parse check: one subject-predicate-object unit

[EVIDENCE_SET]

Retrieved passages, documents, or source excerpts to match against the claim

Passage 1: 'Q3 revenue reached $4.1B, up 10% YoY.' Passage 2: 'The company reported $4.2B in Q3.'

Must contain at least one non-empty passage. Null allowed only if [NULL_EVIDENCE_MODE] is true. Validate source identifiers are present for each passage

[SOURCE_METADATA]

Provenance information for each evidence item including document ID, date, and authority level

doc_id: 'earnings-2024-q3', pub_date: '2024-10-15', authority: 'official-filing'

Required for every passage in [EVIDENCE_SET]. Missing metadata triggers citation failure. Validate date format is ISO 8601

[MATCH_THRESHOLD]

Minimum partial-match score required to classify evidence as supporting rather than insufficient

0.65

Float between 0.0 and 1.0. Default 0.5 if not specified. Threshold below 0.4 risks over-matching noise. Validate range before prompt execution

[NULL_EVIDENCE_MODE]

Controls behavior when retrieval returns zero results

Boolean. When true, prompt produces explicit 'no evidence found' output with search query documentation. When false, prompt returns error. Validate before sending to prevent silent null handling

[OUTPUT_SCHEMA]

Expected structure for partial-match results including supported components, unsupported components, and match scores

See output-contract table for field definitions

Must specify fields: claim_id, match_score, supported_components[], unsupported_components[], evidence_quote, source_id, match_type. Schema validation required before parsing response

[DOMAIN_CONTEXT]

Optional domain-specific terminology, tolerance windows, or evidence standards

financial-reporting: numerical-tolerance=5%, authority-weight=official-filing>press-release>analyst-estimate

Optional. When provided, must include tolerance windows for numerical claims and authority weighting rules. Null allowed for general-domain use

[CONTRADICTION_FLAG]

Whether to actively search for and report contradictory evidence alongside supporting evidence

Boolean. When true, prompt must return contradiction_report field with conflicting passages quoted. When false, only supporting and insufficient matches are returned. Default true for verification pipelines

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Evidence Matching with Partial Match Handling prompt into a production verification pipeline with validation, retries, and human review gates.

The partial match prompt is not a standalone tool; it is a scoring and decomposition step inside a larger evidence-matching pipeline. In production, you will typically call this prompt after a retrieval step has returned candidate evidence passages and a claim extraction step has produced atomic claims. The prompt's job is to produce a structured partial-match assessment for each claim-evidence pair, identifying which components of the claim are supported, which are not, and why. This output feeds downstream decisions: auto-verification for high-confidence full matches, human review for partial matches above a threshold, and 'unverified' labeling for low-confidence or no-evidence cases.

Wire the prompt into your application with a strict JSON schema validator on the output. The expected output shape should include fields such as claim_id, evidence_id, overall_match_score (a float from 0.0 to 1.0), supported_components (an array of claim fragments with evidence quotes), unsupported_components (an array of claim fragments with explicit 'no supporting evidence found' notes), and match_explanation (a short string). Use a JSON Schema or Pydantic model to validate this structure before the output enters any database or routing logic. If validation fails, retry once with the same prompt and a repair instruction appended: 'The previous output did not match the required schema. Please correct and return valid JSON only.' If the second attempt fails, log the failure and route the claim-evidence pair to a human review queue with the raw model output attached.

Model choice matters here. Partial match decomposition requires strong instruction-following and structured output discipline. Prefer models with native JSON mode or constrained decoding (e.g., GPT-4o with response_format, Claude 3.5 Sonnet with tool-use-as-structured-output, or fine-tuned open-weight models with grammar-constrained generation). Avoid models that tend to produce narrative explanations instead of structured decompositions. Set temperature low (0.0–0.2) to reduce variance in match scores and component identification. For high-throughput pipelines, batch multiple claim-evidence pairs into a single prompt call with an array output schema, but cap batch size at 5–10 pairs to prevent the model from losing precision on individual assessments.

Implement a scoring threshold router after the prompt returns. Define two thresholds: AUTO_VERIFY_THRESHOLD (e.g., 0.9) and HUMAN_REVIEW_THRESHOLD (e.g., 0.5). Claims with overall_match_score >= AUTO_VERIFY_THRESHOLD and zero unsupported components can be auto-verified. Claims with overall_match_score >= HUMAN_REVIEW_THRESHOLD but with unsupported components should be routed to a human review queue with the full partial-match output as context. Claims below HUMAN_REVIEW_THRESHOLD should be labeled 'unverified' and flagged for evidence gap analysis. Log every routing decision with the claim ID, evidence ID, score, and threshold values for auditability.

Common failure modes to monitor in production: (1) the model assigns high match scores to claims where the evidence supports only a trivial or tangential component while missing the core assertion; (2) the model splits a single atomic claim into too many granular components, inflating the supported ratio; (3) the model fails to identify when evidence partially contradicts a claim, treating contradiction as 'unsupported' instead of flagging it explicitly. Mitigate these by running periodic eval passes with a golden dataset of human-annotated partial matches, and by adding a contradiction-detection field to the output schema (contradicted_components) if your domain requires it. For high-risk domains such as healthcare or legal verification, always require human review for any partial match, regardless of score, and never auto-verify claims with any unsupported components.

PRACTICAL GUARDRAILS

Common Failure Modes

Partial match handling introduces specific failure modes where the model over-confidently confirms a claim or misrepresents the degree of support. These cards cover the most common breaks and how to prevent them.

01

Over-Confident Partial Support

What to watch: The model assigns a high match score when only a minor or tangential component of the claim is supported, ignoring the core assertion. This creates a false sense of verification. Guardrail: Require the output to explicitly list which claim components are supported and which are not. Add a validator that checks if the score is above a threshold while critical components remain unsupported, and flag for human review.

02

Semantic Drift in Match Justification

What to watch: The model's explanation of why evidence matches rephrases the claim to fit the evidence, rather than assessing the original claim. This masks a true mismatch. Guardrail: Include a strict instruction to quote the original claim verbatim in the justification. Use a secondary LLM call or string-matching check to verify that the justification references the exact claim text, not a looser paraphrase.

03

Ignoring Negation and Modality

What to watch: The model treats 'X may cause Y' and 'X causes Y' as equivalent, or misses negation entirely ('X does not cause Y'). This is a critical failure for factual verification. Guardrail: Add a dedicated pre-processing step or explicit prompt instruction to extract and isolate modal verbs, hedging language, and negation markers. The partial match logic must treat a mismatch in these markers as a major, not minor, unsupported component.

04

Numerical Tolerance Mismatch

What to watch: A claim states 'over 50%' and evidence shows '48%'. The model may flag this as a partial match without explaining the numerical gap, or it may apply an inconsistent tolerance window. Guardrail: Define explicit numerical tolerance rules in the prompt (e.g., 'exact match required for percentages unless a ±2% margin is stated'). The output must include the raw numbers from both the claim and the evidence for automated validation.

05

Evidence Saturation Blindness

What to watch: The model finds one piece of supporting evidence for a component and stops looking, missing contradictory evidence elsewhere in the provided context. This produces a falsely high partial match score. Guardrail: Structure the prompt to require an exhaustive scan of all provided evidence before scoring. Implement a post-processing check that flags any claim where supporting and contradictory evidence both exist but the contradiction wasn't addressed in the output.

06

Component Weighting Collapse

What to watch: The model treats all claim components as equally important. A claim like 'The CEO, who previously worked at Google, announced record profits' might be scored as a 66% match if the CEO and Google facts are verified, even if the 'record profits' core assertion is false. Guardrail: Instruct the model to classify each component as 'primary' or 'secondary' before scoring. The final match score must be disproportionately weighted by the verification status of primary components, and the logic for this weighting must be explained.

IMPLEMENTATION TABLE

Evaluation Rubric

Score each criterion on a 1-5 scale before shipping the Evidence Matching with Partial Match Handling prompt. Run these tests against a golden set of claim-evidence pairs with known partial-match outcomes.

CriterionPass StandardFailure SignalTest Method

Partial match score calibration

Score reflects proportion of claim components supported; 0.0 for no support, 1.0 for full support, intermediate values for partial

Score is binary when evidence partially supports claim; score is 1.0 when key components are unsupported

Run 20 partial-match cases with human-annotated ground-truth scores; measure MAE between prompt score and human score; threshold MAE < 0.15

Supported component identification

Every supported claim component is listed with the specific evidence span that supports it

Supported components list is empty when evidence supports some claim parts; components are listed without evidence spans

Parse [SUPPORTED_COMPONENTS] field; verify each entry has a non-empty evidence_span; check against 10 cases where partial support exists

Unsupported component identification

Every unsupported claim component is listed with explicit reason (missing evidence, contradictory evidence, or ambiguous match)

Unsupported components list is empty when evidence fails to support some claim parts; reason field is null or generic

Parse [UNSUPPORTED_COMPONENTS] field; verify each entry has a non-null reason from allowed enum; test 10 cases with known unsupported sub-claims

Evidence span grounding

All evidence spans are verbatim quotes from [SOURCE_DOCUMENTS]; no paraphrased or hallucinated evidence

Evidence span contains text not present in source; span is a summary rather than a direct quote

Substring match each evidence_span against [SOURCE_DOCUMENTS] text; flag any span with edit distance > 5 characters from nearest source substring

Match type classification

Each component is classified as exact_match, semantic_match, partial_match, no_match, or contradiction per defined taxonomy

Components with clear evidence support classified as no_match; contradictory evidence classified as exact_match

Parse match_type field for each component; verify against taxonomy enum; spot-check 30 component classifications against human labels; target accuracy > 0.90

Confidence score per component

Each component match includes a confidence score 0.0-1.0 reflecting evidence quality and match certainty

Confidence is 1.0 for ambiguous matches; confidence is missing or null for unsupported components

Parse confidence field; verify range 0.0-1.0; check that ambiguous partial matches have confidence < 0.8; test 15 edge cases

Null evidence handling

When [SOURCE_DOCUMENTS] is empty or contains no relevant passages, output partial_match_score: 0.0 with all components marked no_match and reason: no_evidence_available

Output contains hallucinated evidence spans when no sources provided; score is non-zero without evidence

Test with empty [SOURCE_DOCUMENTS] and with irrelevant documents only; verify score is 0.0 and no evidence spans are populated

Output schema compliance

Output matches [OUTPUT_SCHEMA] exactly; all required fields present; no extra fields; types correct

Missing required fields; extra undocumented fields; string where number expected; nested structure differs from schema

Validate output against JSON Schema; run schema validation on 50 outputs across varied inputs; target 100% schema compliance

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a frontier model (GPT-4o, Claude 3.5 Sonnet) and a small set of claim-evidence pairs. Focus on getting the partial-match structure right: supported_components, unsupported_components, and partial_match_score. Skip strict schema validation initially.

code
[SYSTEM]: You are an evidence matching specialist. For each claim, compare it against the provided evidence and identify which parts are supported and which are not. Output JSON with supported_components, unsupported_components, and a partial_match_score from 0.0 to 1.0.

[CLAIM]: [CLAIM_TEXT]
[EVIDENCE]: [EVIDENCE_TEXT]

Watch for

  • Model conflating partial support with full support and returning binary scores
  • Overly broad component decomposition that splits claims into meaningless fragments
  • Missing unsupported_components when evidence is tangentially related but not confirmatory
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.