This prompt is designed for multi-source AI systems, particularly RAG pipelines, that retrieve information from several documents before generating an answer. Its job is to detect when those retrieved documents contain contradictory information on the same factual question. It categorizes the type of conflict, identifies which sources disagree, and flags claims that require human adjudication before they can be used in a downstream answer or decision. Use this prompt when your system cannot afford to silently pick one source over another, such as in financial analysis, medical research, legal document review, or any evidence-backed workflow where conflicting data must be surfaced rather than averaged away.
Prompt
Source Conflict Detection Prompt

When to Use This Prompt
Defines the ideal conditions, required inputs, and critical limitations for deploying the Source Conflict Detection Prompt in a production AI system.
The ideal user is an AI engineer or product developer building a RAG system where multiple documents are retrieved per query and source trustworthiness varies. The prompt requires a specific input shape: a user question or topic, plus a set of retrieved documents with source identifiers. It is not a general-purpose fact-checker for a single document, nor is it a replacement for a structured knowledge base with authoritative conflict resolution rules. It works best when the retrieved documents are topically coherent but may originate from different authors, time periods, or data sources. You should avoid using this prompt when you have a single authoritative source, when conflicts are expected and acceptable (e.g., opinion aggregation), or when the cost of running an extra LLM call for conflict detection outweighs the risk of presenting contradictory information to the user.
Before wiring this prompt into production, define what happens after a conflict is detected. The output is a structured conflict report, not a resolved answer. Your application must decide whether to halt generation and escalate for human review, present the conflict to the user with source attribution, or apply a resolution policy based on source recency or authority. Do not use this prompt as a silent filter that picks a winner without traceability. In regulated or high-risk domains, always route detected conflicts to a human review queue and log the full conflict report for audit purposes. If your system generates an answer despite a detected conflict, include a visible warning and cite the disagreement explicitly.
Use Case Fit
Where the Source Conflict Detection Prompt works and where it introduces risk. This prompt is designed for multi-source RAG systems, not single-document verification or real-time chat.
Good Fit: Multi-Source Synthesis
Use when: Your RAG pipeline retrieves from multiple documents that may disagree on the same factual question. The prompt excels at surfacing contradictions before they reach the user. Guardrail: Always provide full source text, not just summaries, to enable precise conflict identification.
Bad Fit: Single-Source Verification
Avoid when: You have only one source document. Conflict detection requires at least two sources to compare. Guardrail: Route single-source inputs to a factual consistency check prompt instead. Use a classifier to detect the number of sources before selecting the prompt.
Required Inputs
What you need: A specific factual question, at least two retrieved source documents with metadata, and a conflict taxonomy. Guardrail: Include source IDs and retrieval dates in the prompt context. Stale or misattributed sources produce false conflicts that waste human review time.
Operational Risk: Human Review Bottleneck
What to watch: This prompt flags conflicts for human adjudication. In high-volume systems, the adjudication queue can become the bottleneck. Guardrail: Implement a severity filter. Route only high-impact conflicts to humans. Auto-resolve low-severity conflicts using a majority-source rule with an audit log.
Operational Risk: Source Quality Variance
What to watch: The prompt treats all sources equally by default. A conflict between an authoritative source and a low-quality source creates unnecessary noise. Guardrail: Pass source authority scores or reliability metadata into the prompt. Instruct the model to weight conflicts by source quality before flagging.
Operational Risk: Temporal Conflicts
What to watch: Two sources may disagree because one is outdated, not because either is wrong. The prompt may flag this as a factual conflict. Guardrail: Include publication dates in source metadata. Add a temporal conflict category to your taxonomy so the model can distinguish outdated information from genuine contradiction.
Copy-Ready Prompt Template
A production-ready prompt for detecting and categorizing factual contradictions across multiple source documents.
This prompt template is designed to be dropped directly into your evaluation harness or LLM orchestration layer. It expects a specific factual question and a set of retrieved documents, then produces a structured conflict report. The template uses square-bracket placeholders for all dynamic inputs—replace these with your data at runtime before sending the request to the model. The output schema is strict JSON to ensure downstream parsers can consume the conflict report without additional normalization.
textYou are a source conflict detection system for a multi-document RAG pipeline. Your job is to identify when retrieved documents contain contradictory information about the same factual question. ## INPUT **Factual Question:** [QUESTION] **Retrieved Documents:** [DOCUMENTS] ## TASK 1. Extract all factual claims from each document that are relevant to answering the question. 2. Identify pairs of claims that directly contradict each other. 3. For each contradiction, determine the conflict type and which claim requires human adjudication. ## CONFLICT TYPES - **FACTUAL_DISAGREEMENT**: Two documents assert mutually exclusive facts (e.g., "released in 2023" vs. "released in 2024"). - **SCOPE_CONFLICT**: One document makes a broader claim than another supports (e.g., "all regions" vs. "North America only"). - **TEMPORAL_STALENESS**: A newer document contradicts an older one due to a change over time. - **SOURCE_QUALITY_DISPUTE**: Documents disagree and one has clearly higher authority or recency. - **INTERPRETATION_DIVERGENCE**: Documents describe the same event differently without clear factual error. ## CONSTRAINTS - Only flag contradictions where both claims cannot be simultaneously true. - Do not flag differences in phrasing or emphasis as contradictions. - If documents address different aspects of the question without conflict, report NO_CONFLICT. - Assign a severity of HIGH, MEDIUM, or LOW based on the impact on answering the question. - For each conflict, identify which claim(s) require human review before use. ## OUTPUT SCHEMA Return valid JSON only: { "question": "string", "documents_analyzed": number, "conflict_status": "CONFLICT_FOUND" | "NO_CONFLICT" | "INSUFFICIENT_EVIDENCE", "conflicts": [ { "conflict_id": "string", "conflict_type": "FACTUAL_DISAGREEMENT" | "SCOPE_CONFLICT" | "TEMPORAL_STALENESS" | "SOURCE_QUALITY_DISPUTE" | "INTERPRETATION_DIVERGENCE", "severity": "HIGH" | "MEDIUM" | "LOW", "claim_a": { "text": "string", "source_document_index": number, "source_excerpt": "string" }, "claim_b": { "text": "string", "source_document_index": number, "source_excerpt": "string" }, "conflict_explanation": "string", "requires_human_adjudication": boolean, "adjudication_question": "string | null" } ], "uncontested_claims": [ { "text": "string", "source_document_index": number, "agreement_level": "UNANIMOUS" | "MAJORITY" | "SINGLE_SOURCE" } ] }
Adaptation guidance: Replace [QUESTION] with the user's factual query and [DOCUMENTS] with your retrieved passages, each prefixed with an index number (e.g., [0], [1]). If your retrieval system already provides source metadata such as publication dates or authority scores, include those inline to improve SOURCE_QUALITY_DISPUTE and TEMPORAL_STALENESS detection. For high-stakes domains such as healthcare or legal review, set requires_human_adjudication to true for all HIGH-severity conflicts and route them to a review queue before any downstream answer generation.
Validation and testing: Before deploying this prompt, run it against a golden dataset of known conflicting and non-conflicting document pairs. Measure precision (did it flag only real conflicts?) and recall (did it catch all planted contradictions?). Common failure modes include over-flagging stylistic differences as INTERPRETATION_DIVERGENCE and missing TEMPORAL_STALENESS when document dates are not provided. Add a post-processing validator that rejects any output where conflict_status is CONFLICT_FOUND but the conflicts array is empty, as this indicates a schema compliance failure. For production pipelines, log every conflict report alongside the retrieved documents to enable retrospective adjudication and prompt improvement.
Prompt Variables
Required inputs for the Source Conflict Detection Prompt. Each variable must be populated before the prompt is assembled and sent. Missing or malformed inputs are the most common cause of false negatives in conflict detection.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[QUERY] | The factual question or claim being investigated across sources | What was the revenue reported in Q3 2024? | Must be a single, specific factual question. Reject if empty, multi-part, or purely opinion-based. Parse check: string length > 10 chars. |
[SOURCE_DOCUMENTS] | Array of retrieved documents to scan for conflicts, each with content and metadata | [{"source_id": "doc-1", "content": "...", "title": "10-K Filing"}] | Must contain at least 2 documents. Each document requires source_id and content fields. Reject if content is empty or source_ids are duplicated. Schema check: array of objects with required keys. |
[CONFLICT_CATEGORIES] | Taxonomy of conflict types the detector should identify | ["direct_contradiction", "value_mismatch", "temporal_inconsistency", "definitional_conflict"] | Must be a non-empty array of strings from the supported category enum. Unknown categories cause the model to invent conflict types. Enum check: validate against allowed set. |
[OUTPUT_SCHEMA] | Expected JSON structure for the conflict report | {"conflicts": [{"claim": "...", "source_a": "...", "source_b": "...", "type": "...", "severity": "..."}]} | Must be a valid JSON Schema or example structure. The model uses this to format output. Schema check: parseable JSON. Include required fields: claim, source_a, source_b, type, severity. |
[SEVERITY_SCALE] | Ordinal scale for ranking conflict importance | ["critical", "high", "medium", "low", "informational"] | Must be an ordered array of at least 3 severity levels. The model uses position to infer ranking. Validation: array length >= 3, no duplicate values. |
[ABSTENTION_RULES] | Conditions under which the detector should return no conflicts rather than guessing | Return empty conflicts array if sources address different time periods or different entities. | Optional but recommended. If null, the model may fabricate conflicts to fill output. Null allowed. If provided, must be a clear string instruction. |
[MAX_CONFLICTS] | Upper bound on number of conflicts to return to prevent output bloat | 15 | Must be a positive integer. Prevents runaway output in large document sets. Default to 20 if null. Parse check: integer > 0. |
[CONFIDENCE_THRESHOLD] | Minimum confidence score for including a conflict in output | 0.7 | Must be a float between 0.0 and 1.0. Conflicts below this threshold are suppressed. Default to 0.5 if null. Parse check: float in range [0.0, 1.0]. |
Implementation Harness Notes
How to wire the Source Conflict Detection Prompt into a production RAG pipeline with validation, retries, and human adjudication hooks.
The Source Conflict Detection Prompt is designed to sit between retrieval and answer generation in a multi-source RAG pipeline. After retrieving documents but before synthesizing a final answer, pass the user's factual question and all retrieved passages through this prompt. The model returns a structured conflict report that downstream logic can use to decide whether to proceed with generation, request more sources, or escalate to a human reviewer. This is not a prompt you fire once and ignore—it is a gating step that prevents contradictory information from silently polluting your AI's output.
Wire the prompt into your application as a pre-generation validation stage. After retrieval, call the LLM with the prompt template, passing [USER_QUESTION] and [RETRIEVED_DOCUMENTS] as structured inputs. Parse the JSON output and check the conflict_detected boolean. If false, proceed to answer generation with the original sources. If true, evaluate the conflict_severity field: low conflicts can trigger automatic source re-ranking or additional retrieval passes; medium conflicts should append a caveat to the generated answer noting the disagreement; high or critical conflicts must halt generation and route to a human review queue with the full conflict report attached. Implement a retry loop with a maximum of two additional retrieval attempts for low conflicts before escalating. Log every conflict detection event—including the raw prompt, model response, parsed conflict report, and routing decision—for auditability and prompt debugging.
For model selection, use a model with strong reasoning and structured output capabilities. GPT-4o, Claude 3.5 Sonnet, and Gemini 1.5 Pro all perform well on this classification-plus-explanation task. Avoid smaller or faster models that may miss subtle contradictions or produce malformed JSON. Set temperature=0 or very low to maximize consistency across runs. If your application has strict latency requirements, consider running conflict detection in parallel with answer generation and aborting the answer path if a conflict is found, rather than making detection a serial blocker. For high-stakes domains like healthcare, legal, or finance, always require human sign-off on any detected conflict before the information reaches an end user—no exceptions.
Validation must happen at two levels. First, validate the JSON structure: confirm all required fields are present, conflict_detected is a boolean, conflict_severity is one of the allowed enum values, and conflicting_claims is an array with the expected claim structure. Second, validate the semantic content: spot-check that the cited source passages actually exist in your retrieved documents and that the quoted text matches. A common failure mode is the model hallucinating source references—always cross-reference source_id values against your actual retrieval results. If validation fails, retry once with an explicit error message appended to the prompt. If it fails again, escalate to human review with both failed attempts logged.
Build an eval harness before shipping. Create a golden dataset of 50–100 known-conflict and no-conflict cases with human-annotated ground truth. Measure precision (did detected conflicts actually exist?), recall (did the prompt catch all real conflicts?), and severity agreement (did the model's severity rating match the human rating within one level?). Run this eval suite on every prompt version change and every model upgrade. Track false positives carefully—over-flagging non-conflicts as conflicts will create unnecessary human review burden and erode trust in the pipeline. A false negative (missing a real conflict) is worse than a false positive, so tune your severity thresholds conservatively.
Expected Output Contract
Fields, types, and validation rules for the Source Conflict Detection response. Use this contract to parse, validate, and route the model output before it reaches downstream systems or human review queues.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
conflict_id | string (UUID v4) | Must match UUID v4 regex. Generate if absent. | |
status | enum: conflict_detected | no_conflict | insufficient_evidence | Must be one of the three enum values. Reject on mismatch. | |
factual_question | string | Must be non-empty. Must be a single interrogative sentence ending with '?'. | |
source_a | object | Must contain source_id (string), claim (string), and passage (string). All fields required and non-empty. | |
source_b | object | Must contain source_id (string), claim (string), and passage (string). All fields required and non-empty. | |
conflict_type | enum: direct_contradiction | partial_disagreement | incompatible_definitions | scope_mismatch | temporal_conflict | none | Must be one of the enum values. Use 'none' only when status is 'no_conflict'. | |
adjudication_notes | string | Must be non-empty when status is 'conflict_detected'. Must explain the nature of the conflict in 1-3 sentences. | |
recommended_action | enum: escalate_to_human | prefer_source_a | prefer_source_b | flag_for_review | use_with_caveat | none | Must be one of the enum values. 'none' allowed only when status is 'no_conflict'. |
Common Failure Modes
Source conflict detection fails in predictable ways. Here's what breaks first and how to guard against it before conflicts reach downstream systems or users.
False Consensus on Contradictory Sources
What to watch: The model harmonizes conflicting claims into a single answer instead of flagging the contradiction. This happens when the prompt prioritizes synthesis over conflict detection, causing the model to average or merge incompatible facts. Guardrail: Add an explicit instruction to check for contradiction before synthesis. Require the model to list all conflicting claims in a dedicated conflicts array before producing any summary or answer.
Source Recency Bias Overriding Older Evidence
What to watch: The model treats the most recently retrieved document as authoritative, ignoring contradictory information in earlier sources. This is especially dangerous when retrieval order is arbitrary or when newer documents contain errors. Guardrail: Require the model to compare claims across all sources regardless of retrieval order. Include source publication dates in the prompt and instruct the model to flag temporal conflicts explicitly rather than defaulting to recency.
Silent Omission of Minority-Source Claims
What to watch: When one source contradicts several others, the model drops the minority claim entirely without flagging it as a conflict. The output appears clean but hides a genuine disagreement that may be critical. Guardrail: Add a completeness check instruction: require the model to enumerate every factual claim from every source, then explicitly mark which claims agree and which conflict. Missing claims should trigger a validation failure.
Confidence Miscalibration on Ambiguous Conflicts
What to watch: The model assigns high confidence to a conflict resolution when the sources are genuinely ambiguous or the contradiction is only apparent due to different definitions or contexts. This produces a false sense of certainty. Guardrail: Require the model to output a conflict_type field with values like direct_contradiction, definitional_difference, temporal_change, or contextual_variance. For anything other than direct_contradiction, require a confidence score below a threshold and flag for human review.
Hallucinated Source Attribution in Conflict Reports
What to watch: The model correctly identifies a conflict but attributes a claim to the wrong source document, making the conflict report itself unreliable. This undermines trust in the entire detection pipeline. Guardrail: Require verbatim quote extraction with source IDs for every conflicting claim. Add a post-processing validation step that verifies each quoted string exists in the cited source document before the conflict report is accepted.
Conflict Fatigue on High-Volume Multi-Source Inputs
What to watch: When many sources are provided, the model either stops detecting conflicts after a certain point or collapses multiple distinct conflicts into a single vague category. This is a context-window attention problem, not a reasoning failure. Guardrail: Chunk source comparison into pairwise or small-group evaluations rather than feeding all sources at once. Aggregate conflict results in a second pass. Set a maximum source count per prompt call and split larger sets across multiple detection runs.
Evaluation Rubric
Use this rubric to test the Source Conflict Detection Prompt's output quality before shipping. Each criterion targets a specific failure mode in multi-source conflict detection.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Conflict Recall | All factual contradictions between [SOURCE_A] and [SOURCE_B] are identified in the output | Output misses a direct contradiction present in the source pair | Golden dataset with 20 known-conflict source pairs; measure recall against human-annotated conflicts |
Conflict Precision | Every flagged conflict cites specific, verifiable contradictory claims from both sources | Output flags a conflict where sources actually agree or where one source is silent | Human review of 50 flagged conflicts; acceptable precision threshold >= 0.90 |
Conflict Type Classification | Each conflict is assigned exactly one valid type from [CONFLICT_TYPES] enum | Output uses an undefined type, assigns multiple types to one conflict, or misclassifies a factual conflict as interpretation | Schema validation against [CONFLICT_TYPES] enum; spot-check 30 classified conflicts for type accuracy |
Claim Extraction Accuracy | Each conflicting claim is quoted or closely paraphrased from its source with a [SOURCE_ID] reference | Output fabricates a claim not present in the source or attributes a claim to the wrong source | String-match verification of extracted claims against source text; acceptable exact or near-match rate >= 0.95 |
Severity Rating Consistency | Each conflict receives a severity rating from [SEVERITY_LEVELS] that matches the rubric definition | Output assigns CRITICAL to a minor date discrepancy or LOW to a contradictory safety claim | Pairwise comparison of 20 severity ratings against calibrated human judgments; Cohen's kappa >= 0.80 |
Abstention on Non-Conflicts | Output returns an empty conflict list or explicit NO_CONFLICTS_FOUND when sources agree or address different questions | Output invents a conflict to satisfy output length expectations when no real contradiction exists | Test with 15 no-conflict source pairs; false positive rate must be <= 0.05 |
Adjudication Flag Accuracy | Output marks REQUIRES_HUMAN_REVIEW for conflicts where automated resolution is unsafe per [ADJUDICATION_POLICY] | Output marks AUTO_RESOLVABLE for a conflict involving legal liability, safety, or regulatory claims | Policy compliance check against [ADJUDICATION_POLICY] rules on 25 conflicts; acceptable error rate <= 0.02 |
Output Schema Compliance | Output is valid JSON matching [OUTPUT_SCHEMA] with all required fields present and correctly typed | Output is missing required fields, contains extra untyped fields, or fails JSON parse | Automated schema validation in CI; test suite must pass 100% of schema compliance checks |
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 small set of 2–3 source documents. Remove strict output schema requirements and use plain-text conflict summaries instead of structured JSON. Focus on getting the model to correctly identify whether a conflict exists before worrying about conflict type classification.
codeAnalyze the following sources and identify any factual contradictions: [SOURCE_A] [SOURCE_B] Question: [USER_QUESTION] List any conflicting claims.
Watch for
- Model inventing conflicts where sources are actually complementary
- Missing nuance when sources use different terminology for the same fact
- Overly verbose explanations that bury the actual conflict

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