This prompt is designed for analyst teams and AI systems that need to extract specific, contradictory claims from multiple source documents and produce a structured contradiction log. It is built for research brief workflows where evidence-backed reporting requires surfacing disagreements before synthesis. The primary job-to-be-done is transforming a set of topically related documents into an auditable, source-linked map of direct factual conflicts, enabling analysts to understand where the evidence diverges before they write a summary or recommendation.
Prompt
Contradiction Extraction Prompt for Research Briefs

When to Use This Prompt
Defines the ideal scenario, required inputs, and clear boundaries for using the contradiction extraction prompt in research brief workflows.
The ideal user is an analyst, researcher, or AI pipeline operator who has already retrieved or collected a set of documents on the same topic and needs to identify where they directly conflict on factual claims. The prompt assumes the input documents share a common subject but may differ in conclusions, data, or reported findings. It is not designed to surface differences in scope, methodology, or framing—only direct contradictions where two or more sources cannot simultaneously be correct on a specific factual statement. The required inputs are a set of source documents with identifiers and a defined topic or question that bounds the extraction scope.
Do not use this prompt when the goal is to summarize consensus, rank sources by authority, or synthesize a unified answer from conflicting evidence. It is also inappropriate for single-document analysis, open-domain retrieval without pre-selected sources, or workflows where the output goes directly to end users without human review. The extracted contradictions require analyst verification before inclusion in a final brief, as the model may flag stylistic differences as conflicts or miss implicit contradictions that require domain expertise to detect. For downstream tasks like conflict resolution or evidence weighting, use this prompt's output as an intermediate artifact and pair it with the Conflict Resolution Decision Prompt or Source Reliability Weighting Prompt from this pillar.
Before running this prompt, ensure each source document has a stable identifier and that the document set is complete enough to surface meaningful contradictions. If the input set is too small or too homogenous, the prompt will return an empty or sparse log—which is a valid outcome, not a failure. After extraction, validate the output by spot-checking whether flagged contradictions are genuine direct conflicts rather than differences in scope, population, or timeframe. Common failure modes include flagging paraphrased agreement as contradiction, missing contradictions that require numerical comparison, and extracting contradictions on peripheral claims while missing central disputes. Wire the output into a human review queue before it reaches any synthesis or publishing step.
Use Case Fit
Where the Contradiction Extraction Prompt works, where it fails, and what you must provide before running it in a production harness.
Good Fit: Multi-Document Analyst Briefs
Use when: you have 3+ documents covering the same topic and need a structured log of direct factual conflicts. Why it works: the prompt forces pairwise comparison and explicit citation, which reduces hallucinated contradictions.
Bad Fit: Single-Source Summaries
Avoid when: only one document is provided or documents cover entirely different topics. Risk: the model may invent straw-man contradictions or misinterpret scope differences as factual conflicts. Guardrail: gate execution with a minimum document count check and topic-overlap threshold before calling the prompt.
Copy-Ready Prompt Template
A reusable prompt template for extracting and structuring contradictions from multiple research documents into a verifiable contradiction log.
This section provides the core prompt for the Contradiction Extraction workflow. The template is designed to be dropped into an AI harness that supplies the source documents, claim scope, and output schema. It forces the model to extract only direct contradictions—not differences in methodology, scope, or terminology—and to pair each contradiction with exact source citations. Use this template as the starting point; the surrounding harness should handle document chunking, citation resolution, and output validation before any contradiction log reaches an analyst.
textYou are a contradiction extraction specialist. Your task is to identify direct, specific contradictions between the provided source documents and produce a structured contradiction log. ## INPUT DOCUMENTS [DOCUMENTS] ## CLAIM SCOPE [CLAIM_SCOPE] ## INSTRUCTIONS 1. Read all provided documents carefully. 2. Identify claims where two or more documents make statements that cannot all be true at the same time. 3. A contradiction exists only when the statements are about the same specific fact, metric, event, or finding. Do not flag differences in: - Scope (e.g., one study covers US, another covers EU) - Methodology (e.g., different measurement techniques) - Time period (e.g., 2022 data vs. 2023 data) unless the temporal difference itself is the contradiction - Terminology or definitions unless they produce factual conflict 4. For each contradiction, extract the exact conflicting statements from each source. 5. Provide precise citations including document identifier and, where available, section or paragraph reference. 6. Classify the contradiction type using only these categories: - FACTUAL: Direct conflict on a verifiable fact or metric - INTERPRETATION: Same evidence, different conclusions - PREDICTION: Conflicting forecasts or projections - OMISSION: One source asserts a fact that another source should include but does not 7. Assign a severity rating: HIGH (material impact on conclusions), MEDIUM (notable but not decision-changing), LOW (minor discrepancy). 8. If no contradictions are found, return an empty log with a brief explanation of why. ## OUTPUT SCHEMA Return a JSON object with this exact structure: { "contradictions": [ { "id": "string", "claim": "string (the specific disputed claim)", "type": "FACTUAL | INTERPRETATION | PREDICTION | OMISSION", "severity": "HIGH | MEDIUM | LOW", "positions": [ { "source_id": "string", "citation": "string (section, paragraph, or page reference)", "statement": "string (exact quoted or closely paraphrased statement)", "position_summary": "string (one-sentence summary of what this source claims)" } ], "analysis": "string (brief explanation of why this is a contradiction, not a scope or methodology difference)", "resolvability": "RESOLVABLE | PARTIALLY_RESOLVABLE | UNRESOLVABLE", "resolution_note": "string or null (if resolvable, note what additional evidence or clarification would resolve it)" } ], "no_contradictions_found": false, "no_contradictions_explanation": null, "total_documents_reviewed": 0, "total_contradictions_found": 0 } ## CONSTRAINTS - Do not fabricate contradictions. If documents agree or discuss different things, do not force a conflict. - Do not cite a source for a claim it does not explicitly make. - If a contradiction involves more than two sources, include all conflicting positions in the positions array. - Keep statements under 200 words each; prefer direct quotes where possible. - If [RISK_LEVEL] is HIGH, flag any contradiction that could affect safety, compliance, or regulatory standing with an additional "risk_flag": true field.
To adapt this template, replace [DOCUMENTS] with your pre-chunked and citation-mapped source passages. The [CLAIM_SCOPE] placeholder should describe the domain or specific claims under review—for example, 'clinical efficacy claims about Drug X' or 'market size estimates for the EV battery sector.' The [RISK_LEVEL] placeholder accepts HIGH, MEDIUM, or LOW and controls whether risk-flagging fields are activated. In your harness, inject these variables before sending the prompt. After receiving the output, validate the JSON structure, verify that each citation resolves to an actual document span, and run a secondary check: for each contradiction, confirm that the conflicting statements are about the same specific fact. If the output contains contradictions flagged as HIGH severity or with risk_flag set to true, route to human review before the contradiction log is finalized. Do not skip validation—models will occasionally flag paraphrased agreement as contradiction or miss implicit conflicts that require domain knowledge.
Prompt Variables
Required inputs for the Contradiction Extraction Prompt. Each placeholder must be populated before the prompt is sent to the model. Missing or malformed inputs are the most common cause of false negatives (missed contradictions) and false positives (flagged agreements as conflicts).
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[DOCUMENT_SET] | Collection of source documents to scan for contradictions. Each document must have a unique identifier and full text. | {"doc_id": "SRC-2024-03", "text": "The trial enrolled 1,200 patients..."} | Must be valid JSON array of objects with doc_id and text fields. Reject if empty or fewer than 2 documents. Validate doc_id uniqueness. |
[CLAIM_FOCUS] | Optional topic or claim to scope contradiction extraction. Narrows the search to specific subject matter. | "efficacy of drug X in elderly populations" | If provided, must be a non-empty string under 500 characters. If null, extraction runs across all claims in the document set. Null allowed. |
[CONTRADICTION_TYPES] | Taxonomy of contradiction categories the model should detect. Controls granularity of the output log. | ["factual_disagreement", "methodological_conflict", "interpretation_divergence"] | Must be a JSON array of strings from the allowed enum. Reject unknown types. Default to all types if null. |
[SOURCE_METADATA] | Optional metadata for each source document: recency, authority score, methodology notes. Used to weight contradictions. | {"SRC-2024-03": {"date": "2024-03-15", "authority": 0.85}} | If provided, keys must match doc_ids in [DOCUMENT_SET]. Authority scores must be floats between 0 and 1. Null allowed. |
[OUTPUT_SCHEMA] | Expected structure for the contradiction log. Defines required fields and their types. | {"contradictions": [{"claim": "string", "source_a": "string", "source_b": "string", "type": "string", "excerpt_a": "string", "excerpt_b": "string"}]} | Must be a valid JSON Schema object. Reject if missing required contradiction fields. Validate against schema before returning to caller. |
[CONFIDENCE_THRESHOLD] | Minimum confidence score for including a contradiction in the output. Filters borderline cases. | 0.7 | Must be a float between 0.0 and 1.0. Contradictions below this threshold are excluded from the log. Default 0.5 if null. |
[MAX_CONTRADICTIONS] | Upper bound on the number of contradictions returned. Prevents unbounded output on large document sets. | 20 | Must be a positive integer. Model output must be truncated to this limit. Reject if 0 or negative. Default 50 if null. |
Implementation Harness Notes
How to wire the Contradiction Extraction Prompt into an application or workflow.
The Contradiction Extraction Prompt is designed to be called programmatically as part of a research briefing pipeline. It expects a set of pre-segmented document passages, each with a stable identifier, and returns a structured contradiction log. The prompt is not a chat interface; it should be invoked with a strict system message and a single user turn containing the formatted input. The model should be configured with a low temperature (0.0–0.2) to maximize deterministic extraction, and the output must be validated against the expected JSON schema before it enters any downstream system.
Integration pattern: Place this prompt behind an API endpoint or a queue worker that receives a batch of passages. The caller must supply a [DOCUMENTS] array where each object includes id, text, and optional metadata (e.g., publication date, author, source type). The prompt template uses these fields to generate a contradiction log with claim_1, claim_2, source_1_id, source_2_id, conflict_type, and explanation fields. Validation layer: After the model responds, parse the JSON output and run a schema validator. Reject any output where source_1_id equals source_2_id (self-contradiction), where extracted claims are paraphrases rather than direct conflicts, or where conflict_type is not one of the allowed enum values (factual, methodological, interpretation, scope, temporal). Retry logic: If validation fails, re-invoke the prompt once with the validation errors appended as a [CORRECTION_NOTES] field. If the second attempt also fails, log the raw output and escalate for human review rather than silently accepting a malformed contradiction log.
Model choice and tool use: This prompt works best with models that have strong instruction-following and structured output capabilities (e.g., GPT-4o, Claude 3.5 Sonnet). Do not use a model that lacks reliable JSON mode for this task. If your platform supports native structured output or tool calling, define a tool schema matching the contradiction log format and require the model to call it; this reduces parsing errors. RAG integration: If passages are retrieved from a vector store or search index, ensure each passage carries its source identifier through the retrieval pipeline. The contradiction extraction step should run after retrieval and before synthesis, so that downstream answer generation can incorporate the conflict log. Logging and audit: Store every contradiction extraction result with the model version, prompt version, input passage IDs, and validation outcome. This audit trail is essential for debugging false positives and for compliance workflows where contradiction handling must be explainable.
Human review triggers: Automatically escalate to human review when the contradiction log exceeds a configurable threshold (e.g., more than 10 contradictions in a single batch), when conflict_type distribution is unexpectedly skewed, or when the model's finish reason indicates truncation or content filtering. For high-stakes domains such as legal or medical research briefs, require human sign-off on all extracted contradictions before they are presented to end users. What to avoid: Do not feed the entire document corpus into a single prompt call if it exceeds the model's context window; chunk the input and merge results with deduplication logic. Do not treat the contradiction log as ground truth without verification—always spot-check a sample against source passages. Finally, do not use this prompt as a substitute for source reliability assessment; pair it with a separate source authority scoring step to avoid flagging trivial disagreements between high-authority and low-authority sources as meaningful conflicts.
Expected Output Contract
Define the exact shape, types, and validation rules for the contradiction extraction output. Use this contract to build a parser, validator, or retry guard before the output enters a downstream system or review queue.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
contradiction_id | string (UUID v4) | Must be a valid UUID v4 string. Reject if missing or malformed. | |
claim_a | string | Must be a non-empty string under 500 characters. Must contain a direct quote or close paraphrase from [SOURCE_A]. | |
claim_b | string | Must be a non-empty string under 500 characters. Must contain a direct quote or close paraphrase from [SOURCE_B]. | |
source_a | object | Must contain 'document_id' (string) and 'passage_id' (string or null). 'document_id' must match an input document identifier. | |
source_b | object | Must contain 'document_id' (string) and 'passage_id' (string or null). 'document_id' must match an input document identifier and differ from source_a.document_id. | |
conflict_type | enum string | Must be one of: 'factual_contradiction', 'methodological_difference', 'interpretation_divergence', 'scope_mismatch', 'temporal_change'. Reject unknown values. | |
confidence_score | number (0.0–1.0) | Must be a float between 0.0 and 1.0 inclusive. Values below [MIN_CONFIDENCE_THRESHOLD] should trigger human review. | |
explanation | string | Must be a non-empty string under 300 characters. Must reference specific content from both claims without introducing new facts not present in the sources. |
Common Failure Modes
What breaks first when extracting contradictions from research briefs and how to guard against it.
False Positives on Paraphrased Agreement
What to watch: The model flags passages as contradictory when they actually agree but use different terminology, scope, or framing. This inflates the contradiction log with noise and erodes analyst trust. Guardrail: Add a pre-check instruction requiring the model to verify that both passages address the same specific claim, population, timeframe, and condition before declaring a contradiction. Include few-shot examples of paraphrased agreement labeled as non-contradictions.
Missed Implicit Contradictions
What to watch: The model only catches explicit textual conflicts and misses contradictions that require inference—such as one source implying a causal relationship that another source's data would refute. Guardrail: Include a secondary extraction pass that asks the model to identify claims where the logical implications of Source A conflict with the stated findings of Source B, even if the surface language differs. Validate with human-annotated implicit contradiction test cases.
Scope and Methodology Mismatch Misclassification
What to watch: The model treats differences in study population, time period, or measurement methodology as factual contradictions rather than scope variations. This produces a contradiction log full of explainable differences instead of genuine disputes. Guardrail: Require the model to classify each extracted contradiction by type—factual, methodological, scope, temporal, or interpretive—and suppress or downgrade non-factual mismatches. Add a structured output field for contradiction type with a controlled enum.
Source Citation Drift and Hallucination
What to watch: The model attributes contradictory claims to the wrong source, fabricates quote-like text, or merges two sources into a single citation. This creates an audit trail that fails verification and undermines the entire brief. Guardrail: Enforce strict quote extraction with character-level source grounding. Require the model to copy the exact text span from each source document and include a verifiable location reference. Run a post-extraction citation verification step that checks each quoted span against the original document.
Over-Extraction and Low-Severity Noise
What to watch: The model extracts every minor discrepancy, producing an unmanageable contradiction log where high-impact disagreements are buried under trivial wording differences. Analysts ignore the output or waste time triaging noise. Guardrail: Add a severity rating instruction with clear criteria—impact on decision quality, source authority gap, and resolvability. Filter the output to only include contradictions above a defined severity threshold, or sort by severity so high-impact items surface first.
Forced Reconciliation of Genuine Disagreement
What to watch: The model attempts to explain away genuine contradictions by inventing reconciling factors—claiming methodological differences that don't exist or speculating about unstated temporal changes. This hides real conflicts that analysts need to see. Guardrail: Instruct the model to explicitly mark contradictions as unresolved when no documented scope, methodology, or temporal factor explains the disagreement. Add a resolvability field and require the model to state 'no reconciliation identified from provided sources' rather than fabricating one.
Evaluation Rubric
Use this rubric to test whether the contradiction extraction prompt produces reliable, production-ready output before shipping. Each criterion targets a known failure mode for contradiction extraction in research briefs.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Direct Contradiction Detection | Extracted contradictions are direct factual conflicts, not differences in scope, methodology, or population | Output includes pairs labeled as contradictory that discuss different time periods, populations, or measurement methods without flagging the distinction | Run 10 known-scope-difference pairs through the prompt; expect 0 false positives |
Source Citation Accuracy | Every contradiction pair includes exact source identifiers that match the input documents and can be traced back to specific passages | Citations reference documents not in the input set, use vague labels like 'Source A', or point to passages that do not contain the claimed statement | Spot-check 20 citations against source documents; require 100% match rate |
Claim Pairing Precision | Each contradiction entry pairs exactly two claims that cannot both be true simultaneously | Entries pair a claim with a paraphrase of the same claim, pair claims that are compatible under different assumptions, or group three or more claims into one entry | Manual review of 30 contradiction pairs; target precision above 0.90 |
Completeness of Conflict Log | All genuine contradictions present in the source set are extracted, with recall above 0.85 on a labeled test set | Known contradictions from the test set are missing from the output, especially implicit contradictions requiring inference | Run against a golden dataset of 15 document sets with pre-labeled contradictions; measure recall |
Structured Output Schema Compliance | Output strictly follows the defined [OUTPUT_SCHEMA] with all required fields present and correctly typed | Missing required fields, null values where non-nullable, extra fields not in schema, or string values where arrays are expected | Validate output against JSON Schema; require 100% structural compliance |
Abstention on No-Conflict Inputs | Prompt returns an empty contradiction log or explicit 'no contradictions found' marker when source documents do not conflict | Prompt fabricates contradictions, reports stylistic differences as factual conflicts, or hallucinates claims not present in sources | Test with 5 document sets known to contain zero contradictions; expect empty or explicit null output |
Uncertainty Flagging for Ambiguous Cases | Prompt marks borderline cases with a confidence indicator or uncertainty flag rather than silently including or excluding them | All contradiction entries appear with equal confidence; no distinction between clear-cut conflicts and ambiguous disagreements | Review output for presence of confidence field or uncertainty flag on at least 80% of ambiguous test cases |
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 contradiction extraction prompt with a single model call and relaxed output validation. Accept plain-text structured logs instead of strict JSON. Focus on getting the extraction logic right before adding schema enforcement.
Add a preamble: You are an analyst assistant. Extract direct contradictions only. Ignore differences in scope, methodology, or time period unless they produce opposite factual claims.
Watch for
- Extracting paraphrased agreement as contradiction
- Treating scope differences (e.g., different populations) as factual conflicts
- Missing implicit contradictions that require inference
- Output format drift across multiple runs

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