This prompt is for verification analysts and pipeline engineers who need to resolve factual conflicts across three or more sources. Instead of treating contradiction as a binary flag, this prompt triangulates a weighted consensus, surfaces minority reports, adjusts for source reliability, and produces confidence intervals. Use it when pairwise comparison is insufficient and you need a structured resolution that a downstream system or human reviewer can act on. This prompt belongs after claim extraction and evidence matching, and before final verification report generation. It assumes you already have extracted claims and their supporting evidence from each source.
Prompt
Contradiction Triangulation Prompt Across Three or More Sources

When to Use This Prompt
Determine if multi-source triangulation is the right tool for your verification conflict, or if a simpler pairwise comparison will suffice.
Do not use this prompt when you have only two sources—a pairwise comparison prompt is cheaper, faster, and less prone to false equivalence. Avoid it when sources are not independent (e.g., one source is a reprint of another), when the claim is subjective or unverifiable, or when you lack source reliability metadata. The triangulation logic requires at least three distinct evidence-bearing sources with known provenance. If you feed it two identical sources and one outlier, the weighted consensus will be misleading. If you feed it sources without reliability scores, the prompt will still produce output, but the confidence intervals will be unreliable. Always validate that your input includes source authority metadata, claim-to-evidence mappings, and a defined output schema before invoking this prompt.
After running this prompt, route the output to a verification report generator or a human review queue depending on the consensus strength. If the confidence interval is wide or the stalemate flag is raised, escalate for human judgment rather than treating the weighted consensus as ground truth. For production pipelines, pair this prompt with a convergence detection check: if the top two sources agree and the third is an outlier with low reliability, auto-resolve; if three high-reliability sources disagree, escalate. Never use this prompt as the final step in a fully automated pipeline without a human-in-the-loop escape hatch for unresolved conflicts.
Use Case Fit
Where the Contradiction Triangulation Prompt delivers reliable multi-source resolution and where it introduces risk. Use these cards to decide if this prompt fits your verification pipeline stage.
Good Fit: Multi-Source Conflict Resolution
Use when: you have three or more sources with conflicting claims on the same fact and need a weighted consensus. Guardrail: provide explicit source metadata (authority, recency, domain) so the model can apply differential weighting rather than treating all sources equally.
Bad Fit: Binary True/False Verification
Avoid when: the task is a single claim against a single authoritative source. Triangulation adds unnecessary complexity and latency. Guardrail: route binary verification to a pairwise comparison prompt and reserve triangulation for genuine multi-source stalemates.
Required Inputs: Source Metadata and Claim Context
What to watch: triangulation quality collapses when sources lack authority scores, publication dates, or domain tags. Guardrail: enforce a minimum input schema with source ID, authority tier, recency, and full claim text before invoking the prompt. Reject underspecified requests.
Operational Risk: False Convergence
What to watch: the model may manufacture consensus by downweighting legitimate dissent or ignoring minority reports. Guardrail: require explicit minority report output with preserved dissenting claims and confidence intervals. Flag stalemates where no convergence threshold is met.
Operational Risk: Source Authority Overfitting
What to watch: high-authority sources can dominate even when factually wrong on a specific claim. Guardrail: implement authority decay for domain-mismatched sources and require evidence-level reasoning, not just source-level trust scores.
Escalation Trigger: Unresolvable Stalemates
What to watch: some contradictions cannot be resolved algorithmically and require human investigation. Guardrail: define a stalemate threshold (e.g., confidence below 0.7 or equal-weight split across three positions) that triggers human review with a structured handoff packet containing all source excerpts and the model's attempted resolution.
Copy-Ready Prompt Template
A reusable prompt for triangulating contradictions across three or more sources, producing a weighted consensus with minority reports and confidence intervals.
This template is designed to be copied directly into your application or testing environment. It instructs the model to act as a verification analyst, comparing claims from multiple sources, identifying where they agree and conflict, and producing a structured assessment. The prompt uses square-bracket placeholders for all dynamic inputs—replace each one with your specific data before sending it to the model. The output is a JSON object designed for machine consumption in a fact-checking pipeline, including a consensus assessment, a minority report for dissenting sources, and a confidence interval.
textYou are a verification analyst performing multi-source contradiction triangulation. Your task is to compare claims from three or more provided sources, identify areas of agreement and direct contradiction, and produce a weighted consensus assessment. ## INPUT ### Claim Under Review [CLAIM] ### Source Evidence You will be given evidence from [NUMBER_OF_SOURCES] sources. Each source includes a reliability score from 1 (low) to 5 (high) and a recency date. [SOURCE_1_ID]: Reliability=[SOURCE_1_RELIABILITY], Recency=[SOURCE_1_DATE] [SOURCE_1_TEXT] [SOURCE_2_ID]: Reliability=[SOURCE_2_RELIABILITY], Recency=[SOURCE_2_DATE] [SOURCE_2_TEXT] [SOURCE_3_ID]: Reliability=[SOURCE_3_RELIABILITY], Recency=[SOURCE_3_DATE] [SOURCE_3_TEXT] [ADDITIONAL_SOURCES] ## CONSTRAINTS - Do not introduce external knowledge. Base your analysis solely on the provided source texts. - If sources agree, state the consensus clearly. If they conflict, describe the nature of the contradiction (direct factual, numerical, temporal, interpretive). - Weight sources by their reliability score and recency. A more recent, high-reliability source should have greater influence on the consensus. - If no clear consensus can be reached, declare a stalemate and explain why the evidence is insufficient to resolve the conflict. - For numerical claims, note the specific values and any tolerance windows implied by the sources. ## OUTPUT_SCHEMA Return a single JSON object with the following structure: { "claim": "The original claim under review.", "consensus_assessment": { "verdict": "supported|contradicted|uncertain|stalemate", "majority_view": "A concise statement of the most likely truth based on weighted evidence.", "confidence": 0.0-1.0, "confidence_rationale": "Explanation of the confidence score, referencing source agreement and reliability." }, "minority_report": { "exists": true|false, "dissenting_view": "The conflicting perspective, if any.", "dissenting_sources": ["SOURCE_ID"], "reason_for_dissent": "Why these sources disagree, e.g., outdated info, lower reliability, different methodology." }, "source_alignment": [ { "source_id": "SOURCE_ID", "position": "supports|contradicts|partially_supports|unrelated", "evidence_excerpt": "Relevant quote from the source.", "weight_applied": 0.0-1.0 } ], "conflict_analysis": { "conflict_type": "direct_factual|numerical|temporal|interpretive|none", "description": "A clear explanation of the conflict, if any.", "resolvable": true|false, "resolution_path": "Suggested next step, e.g., 'Check source [SOURCE_2_ID] methodology' or 'Escalate for human review.'" } }
To adapt this template for your pipeline, start by mapping your internal source metadata to the [SOURCE_ID], [SOURCE_RELIABILITY], and [SOURCE_DATE] placeholders. If you don't have explicit reliability scores, a simple heuristic based on source type (e.g., primary document=5, reputable news=4, opinion piece=2) is better than omitting the field. The [ADDITIONAL_SOURCES] placeholder should repeat the source block for sources four through N. Before deploying, test the prompt against a golden dataset of known consensuses and stalemates to calibrate the confidence thresholds and ensure the model isn't fabricating a majority view when evidence is evenly split.
Prompt Variables
Required inputs for the Contradiction Triangulation Prompt. Each placeholder must be populated before the prompt is sent. Validation rules ensure the prompt receives complete, well-formed inputs to prevent silent failures in multi-source conflict resolution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SOURCES] | Array of source objects, each containing an id, full text, publication date, and author/organization | [{"id":"src1","text":"The event occurred at 3 PM EST...","date":"2024-11-15","author":"Reuters"}, {"id":"src2","text":"Witnesses reported the incident around 2:45 PM...","date":"2024-11-15","author":"AP"}, {"id":"src3","text":"Official statements confirm a 3:15 PM timeline...","date":"2024-11-16","author":"BBC"}] | Parse check: must be valid JSON array with 3+ objects. Each object requires non-empty id and text fields. Date must be ISO 8601 or null. Reject if fewer than 3 sources. |
[CLAIM_DOMAIN] | Short description of the factual domain under verification to scope the triangulation analysis | event_timeline | Must be a non-empty string from an allowed domain list: event_timeline, numerical_claim, policy_statement, scientific_finding, financial_report, legal_assertion, or general_factual. Reject unrecognized domains. |
[CONTRADICTION_FOCUS] | Specific question or claim the triangulation should resolve across sources | What time did the security breach occur according to available sources? | Must be a non-empty string ending with a question mark or a declarative claim statement. Length between 10 and 500 characters. Reject empty or overly vague focus strings. |
[SOURCE_WEIGHTS] | Optional pre-assigned reliability weights per source for initial scoring | {"src1":0.8,"src2":0.7,"src3":0.9} | If provided, must be valid JSON object with keys matching [SOURCES] ids and values between 0.0 and 1.0. Null allowed. If null, prompt uses equal weighting. Reject weights with missing source keys or out-of-range values. |
[CONFIDENCE_THRESHOLD] | Minimum confidence score required for a consensus verdict before triggering stalemate handling | 0.75 | Must be a float between 0.5 and 0.95. Values below 0.5 produce unreliable consensus. Values above 0.95 may cause excessive stalemate flags. Default 0.7 if null. |
[OUTPUT_SCHEMA] | Expected JSON structure for the triangulation output including consensus, minority reports, and confidence intervals | {"consensus":{"verdict":"string","confidence":"float","supporting_sources":["string"]},"minority_reports":[{"source_id":"string","position":"string","rationale":"string"}],"confidence_interval":{"lower":"float","upper":"float"},"stalemate":"boolean","explanation":"string"} | Must be a valid JSON Schema object or example structure. Parse check required. Reject if schema lacks required fields: consensus, minority_reports, stalemate. Schema validation failure aborts prompt assembly. |
[STALEMATE_POLICY] | Instruction for handling cases where no consensus emerges above the confidence threshold | return_stalemate_with_minority_reports | Must be one of: return_stalemate_with_minority_reports, escalate_for_human_review, return_lowest_confidence_verdict, or abstain. Reject unrecognized policy values. Human review escalation requires downstream routing configured. |
[TEMPORAL_WINDOW_DAYS] | Maximum acceptable date difference between sources before temporal inconsistency is flagged | 7 | Must be a positive integer or null. If null, temporal proximity is not enforced. Values over 365 should trigger a review warning. Used for recency weighting and staleness detection in source reliability adjustment. |
Implementation Harness Notes
How to wire the Contradiction Triangulation Prompt into a production verification pipeline with validation, retries, and human review routing.
The Contradiction Triangulation Prompt is designed to be a decision-support node within a larger fact-checking pipeline, not a standalone chatbot. It expects three or more pre-extracted source passages, each with associated metadata (source ID, publication date, authority score), and a set of claims that have already been flagged as conflicting by an upstream pairwise comparison step. The prompt's job is to resolve the multi-source conflict by producing a weighted consensus, a minority report, and a confidence interval. Wiring this into an application requires a clear contract: the input schema must include sources (an array of objects with id, text, date, and authority_score), conflicting_claims (an array of claim strings), and resolution_parameters (an object specifying minimum_authority_threshold, stalemate_confidence_floor, and require_minority_report as a boolean). The output contract should be a structured JSON object with consensus_assessment, minority_report, confidence_interval, source_weighting_rationale, and unresolved_flags.
In practice, you should wrap the LLM call in a harness that performs pre-flight validation, post-processing, and retry logic. Before sending the prompt, validate that at least three sources are present, that each source has a non-empty text field, and that authority scores are normalized between 0 and 1. After receiving the response, parse the JSON and run a schema validator to ensure all required fields exist and that the confidence_interval contains valid lower and upper bounds. If validation fails, retry once with a repair prompt that includes the original input and the specific validation error. For high-stakes domains like healthcare or finance, route any output where unresolved_flags is non-empty or where the confidence interval width exceeds a configurable threshold (e.g., >0.4) to a human review queue. Log the full prompt, response, and validation result for auditability. Model choice matters: use a model with strong reasoning benchmarks (e.g., GPT-4o, Claude 3.5 Sonnet) and set temperature to 0 or very low to maximize deterministic, repeatable assessments.
The most common production failure mode is stalemate handling. When sources are equally authoritative and directly contradict each other, the model may produce an overconfident consensus or an unhelpfully vague one. Your harness should detect this by checking if the consensus_assessment confidence is below the stalemate_confidence_floor you configured. In that case, suppress the consensus output in your application UI, surface the minority_report prominently, and escalate for human review. Do not present a machine-generated consensus as resolved when the model itself signals low confidence. A second failure mode is source-count degradation: if your pipeline occasionally retrieves only two sources due to a retrieval failure, do not fall back to this prompt. Route two-source conflicts to a dedicated Pairwise Claim Comparison Prompt instead. Finally, avoid running triangulation on claims that are fundamentally interpretive or opinion-based; pre-filter claims using a Fact-Interpretation Separation prompt to ensure you're only triangulating verifiable factual assertions.
Expected Output Contract
Defines the structured output schema for the contradiction triangulation prompt. Use this contract to validate model responses before they enter downstream reconciliation or reporting workflows.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
triangulation_id | string (UUID) | Must be a valid UUID v4 string. Reject if missing or malformed. | |
claim_under_review | string | Must exactly match the [CLAIM] input. Reject if altered or paraphrased. | |
source_assessments | array of objects | Array length must equal the number of provided [SOURCES]. Each object must contain source_id, reliability_score, and key_evidence fields. | |
source_assessments[].source_id | string | Must match one of the [SOURCE_IDS] provided in the input. Reject on unknown IDs. | |
source_assessments[].reliability_score | number (0.0-1.0) | Must be a float between 0.0 and 1.0 inclusive. Reject if out of range or non-numeric. | |
convergence_assessment | string (enum) | Must be one of: 'strong_consensus', 'moderate_consensus', 'weak_consensus', 'stalemate', 'insufficient_data'. Reject on unknown values. | |
weighted_consensus | string | Must be a non-empty string summarizing the most probable resolution. If stalemate, must explicitly state no consensus was reached. | |
minority_report | string or null | Must be a non-empty string if dissenting sources exist, otherwise null. Reject if empty string is provided. | |
confidence_interval | string | Must match the pattern 'low: X%, high: Y%' where X and Y are integers between 0 and 100 and X < Y. Reject on malformed intervals. | |
unresolved_flags | array of strings | Must be an array of specific conflict descriptions. If no unresolved issues, must be an empty array, not null. | |
escalation_recommended | boolean | Must be true if convergence_assessment is 'stalemate' or confidence_interval range exceeds [ESCALATION_THRESHOLD]. Validate against input threshold. |
Common Failure Modes
What breaks first when triangulating contradictions across three or more sources and how to guard against it.
False Consensus from Correlated Sources
What to watch: The model treats three sources as independent when two share the same upstream origin, creating a false majority. Guardrail: Add a source_independence check in the harness that flags shared authorship, syndication, or common wire services before counting votes.
Stalemate with No Resolution Path
What to watch: The prompt produces a 'no consensus' result but fails to explain why or what additional evidence would break the tie. Guardrail: Require the output to include a missing_evidence field listing specific data points that would resolve the conflict, and set a max retry budget before escalating to human review.
Over-Weighting Recent or Authoritative Sources
What to watch: The model silently favors the most recent source or the one with the highest perceived authority, ignoring older but more accurate primary evidence. Guardrail: Implement explicit source_weight parameters in the prompt that separate recency, authority, and directness of evidence, and log the weighting rationale for audit.
Confidence Inflation on Partial Agreement
What to watch: The model assigns high confidence when sources agree on a surface-level claim but diverge on critical details, masking the real conflict. Guardrail: Add a granularity_check step that decomposes claims into sub-claims before triangulation, and require confidence scores at the sub-claim level, not just the headline claim.
Minority Report Suppression
What to watch: The model omits or buries the dissenting source's perspective in the consensus summary, losing critical contradictory evidence. Guardrail: Mandate a dedicated minority_report section in the output schema with equal prominence, and validate its presence with a post-processing check before the result is surfaced.
Temporal Context Collapse
What to watch: Sources from different time periods are compared as if they are contemporaneous, making legitimate updates appear as contradictions. Guardrail: Require the prompt to extract and normalize publication dates, and add a temporal_relevance flag that distinguishes 'contradiction' from 'information update' based on chronology.
Evaluation Rubric
Use this rubric to evaluate the quality of a contradiction triangulation output before integrating it into a production verification pipeline. Each criterion targets a specific failure mode common in multi-source conflict resolution.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Source Coverage | Every source in [SOURCE_SET] is referenced in the consensus or minority report. | A source is silently dropped without an explicit 'excluded' justification. | Count unique source IDs in output vs. input [SOURCE_SET]. Flag if count differs and no exclusion reason is present. |
Claim Grounding | Every consensus statement and conflict note includes a direct quote or precise paraphrase from at least one source. | A claim appears in the 'Consensus Assessment' without a linked [EVIDENCE] excerpt. | Parse output for claim-evidence pairs. Fail if any claim node has an empty or missing evidence field. |
Minority Report Completeness | All sources that diverge from the consensus are captured in the 'Minority Report' with their specific conflicting claim. | A source with a known conflicting claim is absorbed into the consensus without comment. | Cross-reference sources flagged as 'contradicts' in the raw pairwise comparison against the final minority report list. |
Confidence Calibration | The 'Consensus Confidence' score is downgraded when sources have equal weight but conflicting claims (stalemate). | A high confidence score is assigned when two equally authoritative sources directly contradict each other. | Inject a test case with two sources of equal [AUTHORITY_WEIGHT] that conflict. Fail if confidence > 0.6. |
Stalemate Handling | Unresolvable conflicts are explicitly flagged as 'UNRESOLVED' with a recommendation for human review. | An unresolvable conflict is presented as a weakly justified resolution or omitted entirely. | Check for the presence of an 'UNRESOLVED' flag or a non-null 'escalation_required' field when source weights are tied and claims conflict. |
Source Reliability Adjustment | A source's [RELIABILITY_SCORE] is explicitly noted when it is downgraded or upgraded based on corroboration patterns. | The output uses a source to support a consensus without acknowledging that the source was previously flagged as low-reliability. | Provide a [SOURCE_PROFILES] input with a low-reliability source. Fail if that source is used as primary evidence without a caveat. |
Output Schema Validity | The output strictly conforms to the [OUTPUT_SCHEMA] with all required fields present and correctly typed. | The output is missing the 'minority_report' array or contains a string where an object is expected. | Validate the raw output against the [OUTPUT_SCHEMA] using a JSON Schema validator. Fail on any validation errors. |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a frontier model (GPT-4o, Claude 3.5 Sonnet). Provide three sources inline in [SOURCE_1], [SOURCE_2], [SOURCE_3] blocks. Accept raw markdown output without strict schema enforcement. Focus on getting the triangulation reasoning right before adding validation.
Watch for
- Model conflating paraphrased agreement with genuine convergence
- Missing minority reports when two sources agree and one dissents
- Overconfident language when sources are low-quality
- No confidence intervals on weighted consensus

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