Inferensys

Prompt

Claim Triangulation Across Sources Prompt

A practical prompt playbook for using Claim Triangulation Across Sources Prompt in production AI workflows.
Developer doing prompt engineering on laptop, prompt variations visible on screen, casual coding session.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the job-to-be-done, ideal user, required context, and boundaries for the claim triangulation prompt.

This prompt is for intelligence analysts, research teams, and QA engineers who need to verify high-stakes claims against multiple independent sources before accepting them as fact. It decomposes a claim into sub-claims, checks each against every provided source, and produces a triangulation report showing which sources confirm, contradict, or are silent on each point. Use this when a single-source match is insufficient and you need cross-source corroboration before a claim enters a decision brief, an audit record, or a published answer.

This prompt belongs in post-retrieval verification pipelines, not in real-time chat. It assumes you have already retrieved candidate source passages and need a structured, multi-source consistency check before human review. The ideal input is a single, well-formed claim and a set of 2–5 independently retrieved source passages. Do not use this prompt when you have only one source, when the claim is trivial or subjective, or when you need a fast binary yes/no. The triangulation report it produces is designed to be consumed by a human reviewer or an upstream automated gating system, not displayed directly to end users.

Before wiring this into a production pipeline, ensure your retrieval step is returning genuinely independent sources. If all passages originate from the same document or share a common author, the triangulation will produce a false sense of consensus. Pair this prompt with a source-diversity check upstream. After the prompt runs, route any claim where more than one source contradicts or where all sources are silent to a human review queue. Never auto-accept a claim based solely on this prompt's output without a defined escalation path for ambiguous or conflicting results.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Claim Triangulation Across Sources Prompt works and where it introduces unacceptable risk or cost.

01

Good Fit: High-Stakes Intelligence Verification

Use when: Analysts must verify a critical claim before it enters a decision memo, threat assessment, or public report. The cost of a false claim is high, and the latency of multi-source review is acceptable. Guardrail: Require a minimum of two independent, named sources before marking any claim as 'verified' in the output schema.

02

Bad Fit: Real-Time Chat or Low-Latency Copilots

Avoid when: The user expects a sub-second response or the workflow is a conversational Q&A. Triangulation requires multiple retrieval calls and a detailed reasoning pass, which adds unacceptable latency. Guardrail: Route to a faster single-source grounding prompt for chat; reserve triangulation for an asynchronous 'deep check' tool.

03

Required Inputs: Claim, Sources, and Metadata

Risk: Running triangulation on a vague claim or without source metadata produces unverifiable 'silent' results. Guardrail: The prompt harness must enforce a structured input with a specific [CLAIM] string, a list of [SOURCES] with unique IDs, and [SOURCE_DATE] fields to resolve temporal conflicts.

04

Operational Risk: Source Proximity and Echo Chambers

Risk: Two 'independent' sources may derive from the same original report, creating a false sense of consensus. Guardrail: Add a pre-processing step or a field in the source metadata to flag derivative sources. The prompt should instruct the model to note when confirming sources share a common root.

05

Operational Risk: Silent Abstention on Sub-Claims

Risk: The model verifies the main claim but fails to flag that a critical sub-clause or date is unsupported. Guardrail: The prompt must instruct the model to decompose the [CLAIM] into atomic sub-claims and report a verdict for each. The output schema must include a 'sub_claims' array, not just a top-level score.

06

Bad Fit: Single-Source or Closed Knowledge Bases

Avoid when: Only one authoritative document exists for the domain. Triangulation will always return 'insufficient sources' or force a false contradiction. Guardrail: Use a single-source verification prompt instead. Reserve triangulation for workflows where multiple overlapping corpora are available.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A copy-ready prompt that triangulates a claim across multiple independent sources and outputs a structured verification report.

This prompt template is designed for intelligence analysts, research teams, and verification engineers who need to confirm whether a high-stakes claim is supported by multiple independent sources before it is treated as verified. It forces the model to examine each source separately, identify where sources agree or conflict, and flag parts of the claim that lack corroboration. The output is a structured triangulation report that can be fed into downstream review queues, dashboards, or human approval workflows.

text
You are a claim verification analyst. Your job is to determine whether a claim is verified by triangulating it across multiple independent sources. You must not rely on a single source. A claim is only considered VERIFIED if at least two independent sources explicitly support each material part of the claim.

## INPUT

**Claim to verify:**
[CLAIM]

**Sources:**
[SOURCES]

Each source is provided with a unique ID, a title, and the full text of the relevant passage.

## OUTPUT SCHEMA

Return a JSON object with the following structure:

```json
{
  "claim": "[the original claim text]",
  "overall_verdict": "VERIFIED | PARTIALLY_VERIFIED | UNVERIFIED | CONTRADICTED",
  "overall_rationale": "[summary explanation of the verdict]",
  "claim_parts": [
    {
      "part_text": "[a distinct factual sub-claim]",
      "verdict": "VERIFIED | UNVERIFIED | CONTRADICTED",
      "supporting_sources": ["source_id_1", "source_id_2"],
      "contradicting_sources": ["source_id_3"],
      "silent_sources": ["source_id_4"],
      "rationale": "[explanation of how sources support or contradict this part]"
    }
  ],
  "source_coverage": {
    "[source_id]": {
      "supports_parts": ["part_index_0", "part_index_1"],
      "contradicts_parts": ["part_index_2"],
      "silent_on_parts": ["part_index_3"],
      "notes": "[any observations about this source's reliability or relevance]"
    }
  },
  "triangulation_gaps": [
    {
      "gap_description": "[what part of the claim lacks sufficient corroboration]",
      "affected_parts": ["part_index_0"],
      "recommendation": "[what additional sources or evidence would resolve this gap]"
    }
  ]
}

CONSTRAINTS

  1. Decompose the claim into distinct factual sub-claims. Each sub-claim should be a single verifiable statement.
  2. A sub-claim is VERIFIED only when at least TWO independent sources explicitly support it. A source that merely implies or is consistent with the claim does not count as supporting it.
  3. A sub-claim is CONTRADICTED when at least one source explicitly states something incompatible with it.
  4. A sub-claim is UNVERIFIED when fewer than two sources support it and no source contradicts it.
  5. Mark sources as SILENT when they do not address a sub-claim at all. Do not infer support from silence.
  6. If two sources appear to agree but one is clearly derived from the other (e.g., same press release, same author), treat them as a single source for triangulation purposes. Note this dependency in the source coverage notes.
  7. Do not use your own knowledge. Base every determination strictly on the provided source text.
  8. If the claim contains temporal or quantitative assertions, verify those specific values, not just the general direction.
  9. Flag any source that appears to contradict itself internally.
  10. If the overall claim cannot be decomposed into distinct parts, explain why and return a single claim part.

EXAMPLES

Example 1: Verified claim

Claim: "Company X announced a $50M Series B round led by Firm Y in March 2024."

Source A: Press release from Company X dated March 15, 2024 stating $50M Series B led by Firm Y. Source B: SEC filing from Company X dated March 16, 2024 confirming $50M raise with Firm Y as lead investor. Source C: News article citing the press release.

Expected: VERIFIED for the core claim (Sources A and B are independent; Source C is derivative of A and should be noted as dependent).

Example 2: Unverified claim

Claim: "Company X's revenue grew 300% in Q1 2024."

Source A: Blog post by Company X CEO stating "tremendous growth in Q1." Source B: Industry report estimating sector growth at 15%.

Expected: UNVERIFIED. Source A does not state the specific 300% figure. Source B does not address Company X specifically. No source supports the exact claim.

RISK LEVEL

[RISK_LEVEL]

If RISK_LEVEL is HIGH or CRITICAL, add an additional field human_review_required: true to the output and include a reviewer_notes field summarizing what a human reviewer should focus on.

To adapt this prompt, replace [CLAIM] with the statement you need to verify and [SOURCES] with a list of source objects, each containing an id, title, and text field. The [RISK_LEVEL] placeholder accepts one of LOW, MEDIUM, HIGH, or CRITICAL. When set to HIGH or CRITICAL, the prompt automatically adds a human-review flag and reviewer guidance to the output schema. For production use, you should validate the output JSON against the schema before accepting the verdict, and log any schema violations as potential model failures.

Before deploying this prompt into a production verification pipeline, run it against a golden dataset of claims with known ground-truth verdicts. Measure precision (did it flag only truly unverified claims?) and recall (did it catch all fabricated claims?). Pay particular attention to the claim decomposition step: if the model fails to split a compound claim correctly, the entire triangulation can produce misleading results. Start with LOW or MEDIUM risk claims until you have calibrated the model's decomposition behavior, then escalate to HIGH and CRITICAL workflows with mandatory human review in the loop.

IMPLEMENTATION TABLE

Prompt Variables

Required and optional inputs for the Claim Triangulation Across Sources prompt. Each placeholder must be populated before the prompt is sent. Validation notes describe how to check the input quality before execution.

PlaceholderPurposeExampleValidation Notes

[CLAIM]

The specific claim or statement to verify across multiple sources

The vendor's system processes 10,000 transactions per second according to their 2024 benchmark report

Must be a single, self-contained factual assertion. Parse check: one subject-predicate-object statement. Split compound claims before invoking this prompt.

[SOURCE_LIST]

Array of source documents with identifiers, content, and metadata to use for triangulation

[{"source_id":"src-01","title":"Vendor Benchmark 2024","content":"...","date":"2024-03-15","type":"vendor_publication"}]

Minimum 2 sources required. Each source object must include source_id and content fields. Schema check: validate array structure before prompt assembly. Reject if fewer than 2 sources present.

[SOURCE_INDEPENDENCE_NOTES]

Assessment of whether sources are truly independent or share provenance

src-01 and src-02 are both published by the same vendor; src-03 is an independent third-party audit

Optional but strongly recommended for high-stakes claims. If omitted, the prompt will treat all sources as independent by default. Null allowed.

[EVIDENCE_STANDARD]

The threshold for considering a claim verified across sources

Require at least 2 independent sources with direct, explicit support. Corroborating evidence must be contemporaneous (within 6 months of claim date).

Must define minimum source count, independence requirement, and any temporal or authority constraints. Parse check: confirm standard is stated as actionable criteria, not vague guidance.

[OUTPUT_SCHEMA]

The expected structure for the triangulation report

{"claim":"string","verification_status":"verified|contradicted|insufficient_evidence|unverifiable","source_analysis":[{"source_id":"string","position":"supports|contradicts|silent","evidence_span":"string","confidence":"high|medium|low"}],"triangulation_summary":"string"}

Schema check: validate against expected JSON structure before sending. Include enum constraints for verification_status and position fields. Reject malformed schemas.

[CONTRADICTION_HANDLING]

Instructions for how to resolve or surface conflicting evidence across sources

When sources contradict, surface the contradiction explicitly. Do not attempt to resolve or weight sources unless one is demonstrably more authoritative per provided metadata.

Must specify whether the model should attempt resolution, surface only, or escalate. Parse check: confirm instruction is present and unambiguous. Default to surface-only if not specified.

[CONFIDENCE_THRESHOLD]

Minimum confidence level required to mark a source position as definitive

0.8

Float between 0.0 and 1.0. Used to gate high/medium/low labels. Validation: range check. If null, default to 0.7. Retry condition: if model returns confidence below threshold without explanation, re-prompt with explicit instruction.

[TEMPORAL_CONSTRAINTS]

Time-bound rules for source validity relative to the claim

Sources must be dated within 12 months of the claim date. Older sources may be used for context but not for verification.

Optional. If omitted, no temporal filtering applied. Parse check: confirm date ranges or relative time windows are specified. Null allowed.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Claim Triangulation prompt into an application with validation, retries, and human review gates.

The Claim Triangulation prompt is designed for high-stakes verification workflows where a single source is never enough. In production, this prompt should sit behind a retrieval step that fetches candidate documents for each sub-claim, then feeds the claim and its evidence pool into the model. The output is a structured triangulation report, not a yes/no answer. Your application must parse this report, check for contradictions, and decide whether to surface a verified claim, flag it for review, or reject it as unverifiable. Because the cost of a false positive (treating an unverified claim as confirmed) is high, the harness must include strict post-processing validation before any claim reaches a downstream system or user.

Wire the prompt into a pipeline with these stages: (1) Claim decomposition—break the input claim into atomic sub-claims using a separate extraction prompt or regex patterns. (2) Multi-source retrieval—for each sub-claim, query your document store, search API, or knowledge base and collect the top-k passages per source. (3) Triangulation execution—pass each sub-claim and its evidence set through this prompt, requesting the structured output schema. (4) Output validation—parse the JSON response and enforce that every 'confirmed' sub-claim has at least two independent sources with non-overlapping provenance. Reject or escalate any sub-claim that fails this independence check. (5) Aggregation—combine sub-claim verdicts into a final report, preserving the per-source evidence map. Log every stage with trace IDs so you can audit why a claim was confirmed, contradicted, or left unresolved.

Model choice matters here. Use a model with strong instruction-following and structured output capabilities (GPT-4o, Claude 3.5 Sonnet, or equivalent). Set temperature to 0 or near-zero to minimize variance in verdicts. Implement a retry loop with exponential backoff for malformed JSON responses, but cap retries at 3 attempts—after that, escalate the sub-claim to a human review queue with the raw evidence attached. For regulated or safety-critical domains, add a mandatory human approval step for any claim where sources partially contradict each other or where the confidence score falls below a defined threshold. Never auto-approve a 'confirmed' verdict without validating that the cited sources actually exist and contain the supporting passages—citation fabrication is a known failure mode. Build an eval harness that runs this prompt against a golden dataset of claims with known ground-truth source support, measuring precision (did we confirm only verifiable claims?) and recall (did we catch all verifiable claims?) before deploying to production.

IMPLEMENTATION TABLE

Expected Output Contract

Schema for the triangulation report. Each claim fragment must be validated against this contract before the report is considered complete. Use this table to build a JSON Schema validator or a structured output parser.

Field or ElementType or FormatRequiredValidation Rule

report_id

string (UUID v4)

Must match regex ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

original_claim

string

Must be non-empty; must be an exact copy of the input claim text; no truncation allowed

claim_fragments

array of objects

Must contain at least 1 fragment; each fragment must have a unique fragment_id within the array

claim_fragments[].fragment_id

string

Must be unique within the claim_fragments array; format: frag-{index} where index starts at 1

claim_fragments[].fragment_text

string

Must be a contiguous substring of original_claim; no paraphrasing or rephrasing allowed

claim_fragments[].triangulation_status

enum string

Must be one of: confirmed, contradicted, partially_supported, unverifiable; no other values accepted

claim_fragments[].supporting_sources

array of strings

Must contain at least 1 source_id when triangulation_status is confirmed or partially_supported; must be empty when status is unverifiable

claim_fragments[].contradicting_sources

array of strings

Must contain at least 1 source_id when triangulation_status is contradicted; must be empty when status is confirmed

claim_fragments[].silent_sources

array of strings

Must list all source_ids from the input source list that are not in supporting_sources or contradicting_sources; null not allowed, use empty array

claim_fragments[].evidence_excerpts

array of objects

Must contain at least 1 excerpt when triangulation_status is not unverifiable; each excerpt must include source_id, passage_text, and relevance

claim_fragments[].evidence_excerpts[].source_id

string

Must match a source_id provided in the input source list; case-sensitive match required

claim_fragments[].evidence_excerpts[].passage_text

string

Must be a verbatim quote from the source; no paraphrasing; must be between 50 and 500 characters

claim_fragments[].evidence_excerpts[].relevance

enum string

Must be one of: directly_supports, partially_supports, directly_contradicts, implies_contradiction; no other values accepted

claim_fragments[].confidence_score

number (0.0 to 1.0)

Must be a float between 0.0 and 1.0 inclusive; 0.0 means no confidence; 1.0 means fully triangulated with multiple independent confirmations

claim_fragments[].analyst_notes

string or null

If provided, must be under 300 characters; must not introduce new claims not present in fragment_text; null allowed

overall_triangulation_verdict

enum string

Must be one of: verified, contradicted, inconclusive, unverifiable; must be consistent with the distribution of fragment-level triangulation_status values

independent_source_count

integer

Must be the count of unique source_ids that appear in supporting_sources across all fragments; must be >= 0; must be <= total number of input sources

verification_summary

string

Must be between 50 and 500 characters; must summarize the triangulation outcome without introducing new claims; must reference the independent_source_count

PRACTICAL GUARDRAILS

Common Failure Modes

Claim triangulation is powerful but brittle. These are the most common failure modes when verifying claims across multiple independent sources, along with practical mitigations to keep your verification pipeline reliable.

01

False Consensus from Correlated Sources

What to watch: Multiple sources may appear independent but derive from the same upstream origin (syndicated report, shared press release, common dataset). The model treats them as confirming evidence when they're really echoes. Guardrail: Add a source-independence check step that asks the model to identify shared provenance, common authors, or identical phrasing before counting sources as independent confirmations.

02

Silence Misinterpreted as Contradiction

What to watch: When a source doesn't mention a claim, the model may incorrectly classify silence as contradiction or treat absence of evidence as evidence of absence. This inflates conflict counts and erodes trust in the triangulation report. Guardrail: Enforce a strict three-way classification (confirm/contradict/silent) with explicit rules that silence means no statement either way. Add a confidence penalty when most sources are silent.

03

Claim Granularity Mismatch

What to watch: A compound claim like 'Company X launched Product Y in Q3 with Feature Z' may be partially supported across sources. The model either rejects the whole claim when one element is unsupported or confirms it when only part is verified. Guardrail: Decompose compound claims into atomic sub-claims before triangulation. Require each sub-claim to be independently verified and report partial support explicitly rather than binary confirm/contradict.

04

Temporal Source Staleness

What to watch: Older sources may confirm a claim that newer sources contradict due to changed circumstances. The model treats all sources equally without weighting by recency, producing a misleading consensus. Guardrail: Include source publication dates in the input schema and instruct the model to flag temporal conflicts explicitly. Add a recency-weighting rule that prioritizes newer sources when contradictions emerge over time.

05

Overconfidence from Weak Confirmation

What to watch: Sources that mention a claim in passing, hedge heavily, or use qualified language are treated as strong confirmations. The triangulation report overstates certainty because it doesn't distinguish between assertive and tentative support. Guardrail: Add a confirmation-strength dimension to the output schema (strong/weak/hedged). Require the model to extract the exact qualifying language from each source and surface uncertainty in the final verdict.

06

Source Authority Blindness

What to watch: The model treats a firsthand investigative report and an anonymous forum post as equally valid sources. Triangulation counts reach the threshold but the evidence quality is poor. Guardrail: Include source credibility metadata (authority level, verification status, domain expertise) in the input schema. Add a minimum authority threshold for sources to count toward verification and flag when confirmations come only from low-authority sources.

IMPLEMENTATION TABLE

Evaluation Rubric

Criteria for evaluating the quality of a claim triangulation report before it is accepted into a downstream system or shown to an analyst. Each row defines a pass standard, a failure signal, and a practical test method.

CriterionPass StandardFailure SignalTest Method

Source Independence

At least two sources are from distinct documents, authors, or publishers with no shared byline.

All supporting sources trace back to the same original document or a single syndicated feed.

Parse source metadata for [DOC_ID] and [AUTHOR]; flag if unique count < 2.

Claim Decomposition Completeness

Every distinct factual sub-claim in [INPUT_CLAIM] appears as a separate row in the triangulation report.

A sub-claim from the input is missing from the report, causing an incomplete verification.

Use an LLM-as-Judge to compare extracted sub-claims against the original [INPUT_CLAIM] text; require 100% recall.

Verdict Accuracy per Sub-Claim

Each sub-claim verdict (Confirmed, Contradicted, Unsupported) matches the evidence in the cited source passage.

A sub-claim is marked Confirmed but the cited passage does not contain the fact, or is marked Contradicted when the passage is silent.

Human spot-check a random sample of 10 verdict-evidence pairs; require >90% agreement. Automate with a secondary verification prompt on the same passage.

Evidence Span Grounding

Every Confirmed or Contradicted verdict includes an exact quote or tight paraphrase from the source passage.

A verdict provides only a source label with no specific text span, or the span is a hallucination not found in the source.

Run a substring match between the reported evidence span and the source passage; flag if no match is found.

Contradiction Handling

When sources contradict, the report explicitly states the conflict and does not silently pick a winner.

The report marks one source as Confirmed and ignores a Contradicted source without noting the conflict.

Scan the report for any sub-claim with both Confirmed and Contradicted sources; assert that a Conflict note is present.

Silence Interpretation

Sources that do not address a sub-claim are marked as Silent, not as Contradicted or Confirmed.

A Silent source is incorrectly used to Contradict a claim, or its silence is treated as implicit confirmation.

For each sub-claim, verify that Silent sources have no semantic overlap with the claim using an NLI model; flag if entailment or contradiction score > 0.7.

Output Schema Validity

The report is valid JSON matching the [OUTPUT_SCHEMA] with all required fields present and correctly typed.

The output is missing required fields, contains extra untyped keys, or uses string where an array is expected.

Validate the raw output against the JSON Schema definition; reject on any schema violation.

Overall Confidence Calibration

The report's overall confidence score is High only when all sub-claims are Confirmed by >=2 independent sources with no contradictions.

A High confidence score is assigned when a sub-claim is Unsupported or a contradiction is present.

Implement a rule-based check: if any sub-claim verdict is Unsupported or Contradicted, assert confidence != High.

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a smaller source set (2-3 documents) and relaxed triangulation rules. Accept single-source confirmation for low-risk claims during early testing. Remove strict output schema requirements initially to iterate faster on the verification logic.

code
[CLAIM]: The vendor reduced latency by 40% in Q3.
[SOURCES]: Source A (vendor blog), Source B (customer case study)
[INSTRUCTION]: For each factual sub-claim in [CLAIM], indicate whether it is confirmed by at least one source, contradicted, or unverifiable. Two-source triangulation is preferred but not required at this stage.

Watch for

  • Single-source echo chambers where both sources derive from the same original document
  • Overly permissive verification that treats vague alignment as confirmation
  • Missing sub-claim decomposition when claims contain multiple embedded assertions
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.