This prompt is designed for verification engineers and RAG pipeline builders who need to surface direct disagreements between sources rather than silently selecting one as authoritative. The core job-to-be-done is producing a structured contradiction report that quotes both sides, identifies the specific point of conflict, and suggests a resolution path—without the model taking sides. Use this when your system retrieves multiple documents that may disagree on factual claims, and downstream consumers (analysts, reviewers, or automated pipelines) need explicit conflict visibility rather than a smoothed-over consensus.
Prompt
Contradictory Evidence Flagging Prompt

When to Use This Prompt
Define the job, ideal user, required inputs, and hard constraints for the Contradictory Evidence Flagging Prompt.
The ideal user is integrating this into a production verification pipeline where source provenance is already tracked. Required inputs include: the original claim being checked, at least two source documents with metadata (source ID, publication date, authority tier), and a defined output schema for contradiction reports. The prompt assumes evidence has already been retrieved and paired to the claim—it does not perform retrieval itself. Do not use this prompt when you have only one source, when the disagreement is purely interpretive rather than factual, or when your system's primary goal is to produce a single best answer rather than to surface uncertainty. For single-source verification, use the Claim-to-Evidence Pairing Prompt instead.
High-risk domains require additional harness controls. In legal, financial, or clinical settings, contradiction reports must never be treated as final determinations—they are triage artifacts for human review. The prompt includes a [RISK_LEVEL] parameter that adjusts the resolution suggestion language: at high risk levels, the model should refuse to recommend a resolution and instead escalate for human judgment. Always validate that both quoted passages actually appear in the cited sources before surfacing a contradiction to users. False-positive contradiction flags—where the model claims disagreement but the sources are actually consistent—are the most common production failure mode and require dedicated eval checks.
Before deploying, calibrate the prompt against a golden dataset of known contradictions and non-contradictions from your domain. Pay particular attention to near-miss cases: sources that use different terminology for the same fact, different numerical precision, or different temporal scopes. These are the cases where contradiction detection most often fails. Wire the output into a human review queue when the contradiction confidence score falls below your calibrated threshold, and log every contradiction flag with source document hashes for later audit.
Use Case Fit
Where the Contradictory Evidence Flagging Prompt works and where it introduces risk. Use this to decide if a prompt is the right tool or if you need product code, retrieval, or human review.
Good Fit: Multi-Source Synthesis
Use when: You have a claim and multiple retrieved documents that may disagree. The prompt excels at surfacing conflict rather than silently averaging or selecting a majority view. Guardrail: Always provide full source context; the model cannot flag contradictions it cannot see.
Bad Fit: Single-Source Verification
Avoid when: Only one source document is available. Contradiction detection requires at least two evidence points. A single source can only confirm or fail to confirm a claim. Guardrail: Route single-source checks to an Evidence Sufficiency Assessment prompt instead.
Required Inputs
What you must provide: A specific, atomic claim and two or more evidence passages with source metadata (title, date, author). Without source identifiers, the output cannot be traced or audited. Guardrail: Validate that each evidence chunk has a unique, stable identifier before calling the prompt.
Operational Risk: False-Positive Flags
What to watch: The model may flag semantic differences in phrasing as contradictions, even when the underlying facts agree. This is common with paraphrased or simplified evidence. Guardrail: Add a post-processing step that checks if flagged contradictions are resolvable by normalization (units, date formats, synonyms).
Operational Risk: False Negatives on Implicit Conflict
What to watch: Contradictions that require inference or domain knowledge are often missed. A model may not flag a conflict if the disagreement is spread across non-adjacent sentences or requires calculation. Guardrail: Pair this prompt with a numerical claim verification step for quantitative assertions and a human review queue for high-stakes domains.
When to Escalate to Code
Avoid when: You need deterministic, rule-based contradiction detection on structured data fields (e.g., date mismatches, conflicting status codes). A prompt is probabilistic and may miss exact-match conflicts. Guardrail: Use application-layer logic for schema-level contradictions and reserve the prompt for unstructured text analysis.
Copy-Ready Prompt Template
A reusable prompt for surfacing contradictory evidence with quoted sources and resolution suggestions.
This prompt template is designed to be dropped into a verification pipeline where multiple evidence sources have already been retrieved for a given claim. It forces the model to surface disagreement rather than silently selecting the most confident source. The output is a structured contradiction report that includes both sides quoted verbatim, source metadata, and a resolution suggestion. Use this when your system must demonstrate that it has considered conflicting information before producing a final answer.
textYou are a contradiction detection specialist. Your task is to compare a claim against multiple evidence sources and flag any contradictory evidence. CLAIM: [CLAIM] EVIDENCE SOURCES: [EVIDENCE_SOURCES] INSTRUCTIONS: 1. For each evidence source, determine whether it supports, contradicts, or is neutral toward the claim. 2. If any sources contradict the claim or each other, produce a contradiction report. 3. If no contradictions exist, state that explicitly. 4. Quote the exact text from each source that supports your determination. 5. Include source identifiers and relevant metadata in your output. OUTPUT SCHEMA: { "claim": "[CLAIM]", "contradictions_found": boolean, "contradiction_reports": [ { "source_a": { "id": "string", "position": "supports|contradicts|neutral", "quoted_evidence": "string", "metadata": {} }, "source_b": { "id": "string", "position": "supports|contradicts|neutral", "quoted_evidence": "string", "metadata": {} }, "contradiction_type": "direct|temporal|numerical|logical|contextual", "explanation": "string", "resolution_suggestion": "string" } ], "uncontradicted_sources": [ { "id": "string", "position": "supports|neutral", "quoted_evidence": "string" } ] } CONSTRAINTS: - Never fabricate evidence or source identifiers. - If evidence is ambiguous, mark it as neutral rather than forcing a support/contradict classification. - For numerical contradictions, specify the conflicting values and any tolerance windows. - If sources disagree on a matter of interpretation rather than fact, flag it as contextual contradiction. - Do not resolve contradictions by choosing the more authoritative source without explanation. - If [RISK_LEVEL] is high, append a human review flag to every contradiction report. EXAMPLES: [EXAMPLES]
To adapt this template, replace each square-bracket placeholder with your application's runtime values. The [EVIDENCE_SOURCES] placeholder should receive pre-retrieved passages with their source IDs and metadata already attached—this prompt does not perform retrieval. The [EXAMPLES] placeholder is critical for production use: include at least two few-shot examples showing a direct contradiction and a false-positive case where sources appear to conflict but don't. For high-stakes domains, set [RISK_LEVEL] to high and ensure your harness routes flagged outputs to a human review queue. The output schema is designed for programmatic consumption; validate it against the schema before passing contradiction reports downstream.
Prompt Variables
Required inputs for the Contradictory Evidence Flagging Prompt. Each placeholder must be populated before the prompt is assembled and sent. Validation notes describe how to programmatically verify the input before incurring inference cost.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[CLAIM] | The single, atomic factual assertion to check for contradictory evidence | The Acme 3000 processor achieves 15 TFLOPS in FP16. | Must be a single sentence. Reject if multiple claims detected. Run claim decomposition first if input contains conjunctions or multiple assertions. |
[EVIDENCE_SET_A] | First set of evidence passages with source metadata, typically from one source or document | {"source": "Acme whitepaper v2.3", "date": "2024-11-15", "passages": ["The Acme 3000 delivers 15 TFLOPS..."]} | Must contain at least one passage. Each passage must have source identifier and retrieval timestamp. Reject empty array. |
[EVIDENCE_SET_B] | Second set of evidence passages to compare against Set A for contradictions | {"source": "Third-party benchmark report", "date": "2025-01-10", "passages": ["Measured 12.3 TFLOPS on Acme 3000..."]} | Must contain at least one passage. Source must differ from Set A. Null allowed if only checking internal consistency within one source. |
[CONTRADICTION_TYPES] | List of contradiction categories the system should detect | ["direct_factual", "numerical_disagreement", "temporal_inconsistency", "methodological_conflict"] | Must be a non-empty array of valid enum values. Reject unknown types. Default set available if null: direct_factual, numerical_disagreement, temporal_inconsistency. |
[NUMERICAL_TOLERANCE] | Acceptable percentage deviation before flagging numerical disagreement | 5 | Must be a positive number or null. If null, default to 5%. Values below 1% risk false positives from rounding. Values above 20% risk missing material discrepancies. |
[OUTPUT_SCHEMA] | Expected JSON structure for the contradiction report | {"contradiction_found": boolean, "contradiction_type": string, "claim_a": string, "claim_b": string, "source_a": string, "source_b": string, "analysis": string, "resolution_suggestion": string} | Must be a valid JSON Schema object or example structure. Reject if missing required fields: contradiction_found, claim_a, claim_b, source_a, source_b. Parse check before prompt assembly. |
[CONFIDENCE_THRESHOLD] | Minimum confidence score required to flag a contradiction in output | 0.7 | Must be a float between 0.0 and 1.0. Values below 0.5 produce noisy outputs. Values above 0.9 risk missed contradictions. Default 0.7 if null. |
[ESCALATION_RULES] | Conditions that require human review rather than automated flagging | ["confidence_below_0.8", "sources_same_authority_tier", "contradiction_type_is_methodological"] | Must be an array of valid rule identifiers or null. If null, only flag contradictions above confidence threshold. Reject unknown rule identifiers. |
Common Failure Modes
Contradiction detection is a high-recall, low-precision task by default. These failure modes surface when the model over-identifies conflict, misses genuine disagreement, or fails to handle source authority and temporal context.
False-Positive Contradictions from Semantic Drift
What to watch: The model flags statements as contradictory when they use different terminology for the same concept, describe different temporal states, or address different scopes. This is the most common failure mode and erodes user trust quickly. Guardrail: Add a pre-check instruction requiring the model to identify the specific entity, time window, and measurement unit before declaring a contradiction. Use few-shot examples showing near-miss non-contradictions.
False Equivalence Between Authoritative and Weak Sources
What to watch: The model treats a peer-reviewed study and a random blog post as equally valid evidence, producing a 'contradiction' where none exists in practice. This inflates conflict reports and wastes reviewer time. Guardrail: Require source authority metadata in the input schema. Add a constraint that contradictions are only valid when both sources meet a minimum authority threshold. Flag low-authority conflicts separately as 'unresolved' rather than 'contradictory.'
Temporal Context Collapse
What to watch: The model ignores publication dates and treats a 2019 statement and a 2024 statement as contradictory when the underlying facts changed. This produces false conflict flags for time-series data, policy changes, or evolving research. Guardrail: Include publication dates in the evidence schema. Add a temporal-awareness rule: if sources are more than [N] months apart, require explicit confirmation that the contradiction is not explained by a factual change over time before flagging.
Missed Contradictions from Implicit Disagreement
What to watch: The model fails to detect contradiction when sources disagree through hedging, indirect language, or partial refutation rather than direct negation. This is the false-negative counterpart to semantic drift. Guardrail: Add an explicit instruction to check for contradictions in conclusions, recommendations, and implied claims, not just direct factual assertions. Include few-shot examples of indirect contradiction patterns.
Numerical Contradiction Without Tolerance Windows
What to watch: The model flags small numerical differences (e.g., 23.4% vs 23.5%) as contradictions when they fall within measurement error, rounding, or estimation tolerance. This produces noise that buries real discrepancies. Guardrail: Define domain-specific tolerance windows in the prompt constraints. Require the model to calculate the percentage difference and only flag contradictions exceeding the threshold. For estimated values, widen the window.
Context-Stripping in Quote-Based Contradictions
What to watch: The model extracts a quote from one source and a counter-claim from another, but strips the qualifying context from both—producing an artificial contradiction where both statements are actually compatible within their full context. Guardrail: Require the model to include surrounding context sentences when quoting evidence for a contradiction. Add a validation step: before finalizing a contradiction flag, check whether the quoted passages remain contradictory when their full paragraph context is restored.
Evaluation Rubric
Use this rubric to test the Contradictory Evidence Flagging Prompt before deployment. Each criterion targets a known failure mode in contradiction detection systems. Run these checks against a curated test set containing both genuine contradictions and tricky non-contradictions.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Genuine Contradiction Detection | Flags direct factual conflicts between two sources on the same claim with both sides quoted. | Misses a direct contradiction present in the test set; output is null or incorrectly labels it as 'consistent'. | Run prompt on 20 known contradiction pairs. Require 95% recall. |
False-Positive Flagging | Does not flag statements as contradictory when they address different claims, time periods, or conditions. | Flags a non-contradiction as a conflict; output misinterprets scope, temporal context, or conditional qualifiers. | Run prompt on 20 known non-contradiction pairs. Require 95% specificity. |
Source Quotation Accuracy | Both contradictory statements are quoted verbatim from the provided [SOURCE_A] and [SOURCE_B] text. | Quoted text is hallucinated, paraphrased beyond recognition, or attributed to the wrong source. | String-match quoted spans against input source texts. Require exact substring match for at least one quote per source. |
Resolution Suggestion Quality | Provides a specific, actionable resolution path (e.g., check recency, verify methodology, consult primary source). | Suggestion is generic ('review sources'), missing, or hallucinates a resolution not derivable from the evidence. | LLM-as-judge evaluation on a 1-5 scale for specificity and actionability. Require mean score >= 4. |
Empty Input Handling | Returns a structured output indicating no contradictions found when [SOURCE_A] or [SOURCE_B] is empty or null. | Returns a fabricated contradiction, throws a parsing error, or outputs unstructured text. | Unit test with null, empty string, and whitespace-only inputs. Assert valid JSON output with contradiction_found: false. |
Partial Agreement Handling | Correctly identifies when sources agree on the core fact but differ on a secondary detail, and does not flag as a full contradiction. | Flags a minor numerical or descriptive discrepancy as a direct contradiction without noting the area of agreement. | Run on 10 partial-agreement pairs. Require contradiction_type field to be 'partial' or 'none', not 'direct'. |
Output Schema Compliance | Returns valid JSON matching the [OUTPUT_SCHEMA] with all required fields present and correctly typed. | Output is missing required fields, contains extra untyped fields, or is not parseable JSON. | Schema validation check in CI/CD pipeline. Assert against JSON Schema definition for every test case. |
Temporal Context Awareness | Distinguishes between a genuine contradiction and a change over time (e.g., a policy update) by noting differing effective dates. | Flags a statement from 2019 and a statement from 2024 as contradictory without noting the temporal context. | Run on 5 temporal-change pairs. Require temporal_context_notes field to be populated when dates differ. |
Implementation Harness Notes
How to wire the Contradictory Evidence Flagging Prompt into a production verification pipeline with validation, retries, and human review.
The Contradictory Evidence Flagging Prompt is designed to be called after claim extraction and evidence retrieval have already occurred. It expects a structured input containing a specific claim and a set of evidence passages retrieved from one or more sources. The prompt's job is to compare the evidence against the claim and surface direct contradictions, not to perform retrieval or decide which source is more authoritative. This means the implementation harness must enforce a strict input contract: the claim must be a single, atomic assertion, and each evidence passage must include source metadata (document ID, publication date, authoritativeness tier) and the exact text span being compared. Without this upstream discipline, the prompt will produce noisy contradiction flags or miss genuine conflicts.
Wire this prompt as a stateless function in your verification pipeline. The call signature should accept a Claim object (with claim_id, claim_text, claim_date) and a list of Evidence objects (each with source_id, source_authority_tier, source_date, passage_text, retrieval_score). The function should validate that at least two evidence passages are present—contradiction detection requires comparison, and a single passage cannot contradict itself. Before calling the LLM, run a pre-check: if all evidence passages share the same source_id, skip the contradiction check and return a single_source_no_contradiction_check status. This prevents false-positive contradiction flags from paraphrased restatements within the same document. For model choice, use a model with strong comparative reasoning (GPT-4o, Claude 3.5 Sonnet, or equivalent). Avoid smaller or faster models for this task; contradiction detection requires careful semantic comparison that cheaper models often fail on, producing both false positives (flagging paraphrases as contradictions) and false negatives (missing genuine factual conflicts).
The output must be parsed into a structured ContradictionReport schema with fields: contradiction_detected (boolean), contradiction_type (enum: direct_factual, numerical, temporal, interpretation_conflict, none), conflicting_passages (list of passage pairs with passage_a_id, passage_b_id, conflict_description, quoted_text_a, quoted_text_b), resolution_suggestion (enum: prefer_more_recent, prefer_higher_authority, human_review_required, unresolvable), and confidence (0.0–1.0). Implement a post-processing validator that checks: (1) if contradiction_detected is true, conflicting_passages must be non-empty; (2) every passage_id referenced in the output must exist in the input; (3) quoted_text_a and quoted_text_b must be substrings of their respective input passages (with fuzzy matching to handle minor whitespace differences). If validation fails, retry once with the validation errors appended to the prompt as [PREVIOUS_OUTPUT_VALIDATION_ERRORS]. If the retry also fails validation, route to a human review queue with the raw output and validation failure details.
For high-stakes domains (healthcare, legal, financial compliance), always route contradiction_detected: true outputs with confidence < 0.85 or resolution_suggestion: human_review_required to a human reviewer. Log every contradiction flag with the full input claim, evidence set, model output, validation results, and final disposition (auto-accepted, auto-rejected, human-reviewed). This audit trail is essential for tuning the system's contradiction detection thresholds and defending decisions later. The most common production failure mode is over-flagging: the model treats differences in phrasing, scope, or granularity as contradictions. Mitigate this by maintaining a set of false-positive examples from your production logs and including them as [NEGATIVE_EXAMPLES] in the prompt template. Update these examples monthly based on human reviewer overrides.
Do not use this prompt for real-time chat or low-latency user-facing features without caching. Contradiction detection across multiple evidence passages is inherently slow (expect 2–5 seconds for a typical call). For batch verification pipelines, run contradiction checks as an asynchronous step after evidence retrieval, with a configurable timeout (recommend 10 seconds) and a dead-letter queue for timeouts. If your pipeline processes high-volume claims, consider pre-filtering: only run contradiction detection when evidence retrieval returns passages from multiple sources with conflicting sentiment or when a claim's confidence score from the evidence sufficiency step falls below a threshold. This reduces unnecessary LLM calls and keeps costs manageable.
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 simple JSON schema for the contradiction report. Use a single model call with both claims and evidence in the prompt. Skip source authority weighting and resolution suggestions initially—focus on accurate flagging of direct contradictions.
code[SYSTEM]: You are a contradiction detector. Given a set of claims and evidence sources, identify direct contradictions. For each contradiction, quote both sides and explain the conflict. [INPUT_CLAIMS]: [CLAIM_LIST] [EVIDENCE_SOURCES]: [EVIDENCE_LIST] [OUTPUT_SCHEMA]: { "contradictions": [{ "claim": "...", "claim_source": "...", "contradicting_evidence": "...", "evidence_source": "...", "conflict_explanation": "..." }] }
Watch for
- False positives on paraphrased agreement (model flags same claim stated differently as contradiction)
- Missing temporal context (old evidence contradicting newer claim without noting recency)
- Overly broad contradiction labels when claims are about different scopes or conditions

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