Inferensys

Prompt

Attributed Statement Verification Prompt

A practical prompt playbook for verifying whether a public figure actually said or wrote an attributed statement, designed to chain with web-search and document-retrieval tools in production AI workflows.
Stylish WeWork-like workspace with hot desks and document wall, professional searching through enterprise knowledge base on a mounted ultrawide display, warm industrial pendants overhead.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the operational boundary for the Attributed Statement Verification Prompt within a retrieval-augmented pipeline.

This prompt is the decision engine for a verification pipeline, not a standalone fact-checker. Its job is to confirm or refute whether a specific public figure made a particular statement, but it can only do so by reasoning over evidence you provide. The ideal user is an AI engineer or backend developer who has already built a retrieval step—web search, internal document corpus, or news archive—and needs a reliable, schema-constrained verification decision. The prompt accepts an attributed statement and a subject identifier, then expects the retrieved evidence to be injected alongside it. Without that evidence, the model is explicitly instructed to abstain rather than rely on its parametric knowledge, preventing hallucinated verifications that erode trust in your pipeline.

You should use this prompt when your application requires a structured, auditable verification output that includes a verification status, source provenance, a calibrated confidence score, and any contradictory evidence found. It is designed for high-stakes editorial, compliance, or research workflows where the cost of a false positive (verifying a false statement) or false negative (flagging a true statement) is significant. The output schema is strict, making it suitable for direct ingestion into a database, a CMS plugin, or a human review queue. Do not use this prompt for open-ended research questions, subjective opinion analysis, or verifying claims that lack a clear public-figure attribution. It is also not a replacement for a retrieval system; if your pipeline cannot supply relevant text snippets, this prompt will simply return an ABSTAIN status, which is the correct and safe behavior.

Before wiring this into production, understand its primary failure mode: evidence quality. The model's verification is only as good as the retrieval step that feeds it. If your search returns irrelevant, outdated, or satirical sources, the prompt may produce a false VERIFIED or REFUTED status with high confidence. To mitigate this, always pair this prompt with a robust retrieval and source-authority scoring layer. The next section provides the copy-ready template. After adapting it, proceed to the implementation harness section to learn how to add validation, retries, and human review gates before shipping.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Attributed Statement Verification Prompt delivers reliable results and where it introduces unacceptable risk. Use these cards to decide if this prompt fits your workflow before integrating it into a production pipeline.

01

Good Fit: Source Material Is Available

Use when: you can provide the original source text, transcript, or document alongside the attributed statement. The prompt compares claim against evidence directly. Avoid when: the source is unavailable and the model must rely on parametric knowledge alone—this turns verification into hallucination-prone generation.

02

Bad Fit: Ambiguous or Unverifiable Attribution

Risk: statements attributed to vague sources ('sources say,' 'experts believe') lack a verifiable target. The model may fabricate provenance or over-confidently label claims unverifiable. Guardrail: require a specific, retrievable source identifier before invoking verification. Route ambiguous attributions to human review.

03

Required Inputs: Statement, Source, and Retrieval Context

Use when: you supply the exact attributed statement, the claimed speaker/publication, and either the full source text or tool-retrieved evidence. Avoid when: any of these three inputs is missing or inferred. Missing source text forces the model to guess, producing unreliable verification statuses and confidence scores.

04

Operational Risk: High-Visibility or Litigious Content

Risk: incorrect verification outputs on public-figure statements can cause reputational damage, legal exposure, or editorial corrections. Guardrail: never auto-publish verification results from this prompt. Route all outputs through human review with the evidence chain, confidence score, and contradictory sources surfaced explicitly.

05

Operational Risk: Paraphrased or Translated Statements

Risk: the prompt is optimized for direct quote-to-source comparison. Paraphrased or translated attributions introduce semantic drift that the model may miss or over-flag. Guardrail: pre-process paraphrased statements with the Paraphrase Fidelity Scoring Prompt before running attributed verification. Flag translations for bilingual human review.

06

Tool Dependency: Retrieval Quality Determines Accuracy

Risk: if the prompt chains to web search or document retrieval tools, verification accuracy is bounded by retrieval recall. Missing source documents produce false 'unverified' results. Guardrail: log retrieval results alongside verification outputs. If retrieval confidence is low, abstain and escalate rather than returning a misleading verification status.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A production-ready system prompt for verifying whether a public figure actually said or wrote an attributed statement, with source provenance and confidence scoring.

This template is designed to be pasted directly into your system instructions for an LLM that has access to web-search and document-retrieval tools. It forces the model to act as a verification engine, not a conversational assistant. The prompt requires the model to ground every determination in retrieved evidence, produce a structured JSON output, and abstain when evidence is insufficient. Before using this template, ensure your retrieval pipeline can supply live search results or document chunks into the [RETRIEVED_EVIDENCE] placeholder. The prompt is opinionated about output structure because downstream systems—dashboards, review queues, audit logs—need predictable fields, not prose.

text
You are a statement verification engine. Your sole task is to determine whether an attributed statement was actually said or written by the named person, using only the provided evidence. You do not answer questions, provide opinions, or generate content outside the verification task.

## INPUT
Attributed Statement: [STATEMENT]
Attributed Person: [PERSON_NAME]
Attribution Context (date, venue, publication, surrounding claims): [ATTRIBUTION_CONTEXT]
Retrieved Evidence (search results, document excerpts, transcripts): [RETRIEVED_EVIDENCE]

## OUTPUT SCHEMA
Return ONLY valid JSON matching this schema:
{
  "verification_status": "verified" | "contradicted" | "unverifiable" | "misattributed",
  "confidence_score": 0.0-1.0,
  "confidence_rationale": "string explaining calibration",
  "matching_evidence": [
    {
      "source_title": "string",
      "source_url": "string or null",
      "excerpt": "relevant passage",
      "match_type": "exact_match" | "paraphrase_match" | "contextual_match",
      "date_of_source": "ISO date or null"
    }
  ],
  "contradictory_evidence": [
    {
      "source_title": "string",
      "source_url": "string or null",
      "excerpt": "contradicting passage",
      "contradiction_type": "direct_denial" | "contextual_conflict" | "temporal_impossibility"
    }
  ],
  "missing_context_warnings": ["string flags for context-stripping risks"],
  "abstention_reason": "string or null (required if status is unverifiable)"
}

## VERIFICATION RULES
1. **Evidence-first**: Every status determination must cite specific evidence from the `[RETRIEVED_EVIDENCE]` field. Do not rely on training data knowledge.
2. **Exact match requires verbatim text**: Only mark `match_type` as `exact_match` if the retrieved source contains the identical wording. Minor punctuation differences still qualify.
3. **Paraphrase match requires meaning preservation**: A `paraphrase_match` means the core claim is substantively the same, even if wording differs. Flag any semantic drift in `missing_context_warnings`.
4. **Contradiction requires direct conflict**: Only populate `contradictory_evidence` when a source explicitly states something incompatible with the attributed statement. Silence or absence is not contradiction.
5. **Unverifiable is a valid outcome**: If evidence is insufficient, conflicting, or too low-quality to decide, set `verification_status` to `unverifiable` and explain in `abstention_reason`. Do not guess.
6. **Confidence calibration**: Score 0.9+ only for exact matches from authoritative primary sources (official transcripts, verified social accounts, reputable publications with bylines). Score 0.7-0.89 for strong paraphrase matches from reliable secondary sources. Score 0.5-0.69 for partial matches or single-source corroboration. Score below 0.5 for weak evidence, anonymous sources, or significant context gaps. Always explain your calibration in `confidence_rationale`.
7. **Misattribution handling**: If evidence shows the statement was made by someone else or fabricated, set status to `misattributed` and include the correct attribution in `contradictory_evidence`.
8. **Context-stripping detection**: If the attributed statement omits qualifiers present in the original source (e.g., "I think," "possibly," "in some cases"), add a warning to `missing_context_warnings` even if the core words match.

## TOOL USE
You have access to web_search and document_retrieval tools. Use them to supplement `[RETRIEVED_EVIDENCE]` if the provided evidence is insufficient. However, always cite the specific source you retrieve. Do not blend retrieved evidence with training data assumptions.

## CONSTRAINTS
- Do not output markdown, explanations, or conversational text outside the JSON.
- Do not invent sources, URLs, or excerpts.
- Do not treat the absence of contradictory evidence as confirmation.
- If the attributed person is a public figure with known impersonation accounts, prioritize verified sources.
- For statements attributed to deceased persons, flag temporal impossibility if the statement references events after their death.

Adaptation guidance: Replace the square-bracket placeholders with live data from your retrieval pipeline. The [RETRIEVED_EVIDENCE] field should contain pre-fetched search results or document chunks formatted as structured text with source metadata. If your application already has a tool-use loop, you can remove the [RETRIEVED_EVIDENCE] placeholder and let the model call search tools directly—but always keep the citation requirement. For high-stakes domains (legal evidence, journalism, compliance), add a [RISK_LEVEL] parameter that adjusts the confidence threshold for auto-verification and routes low-confidence results to human review. The output schema is intentionally flat to simplify parsing; if your pipeline needs nested structures (e.g., per-claim verification within a multi-claim statement), extend the schema but preserve the verification_status and confidence_score fields as the primary routing signals.

IMPLEMENTATION TABLE

Prompt Variables

Inputs the Attributed Statement Verification Prompt needs to work reliably. Validate each before sending to prevent garbage-in, garbage-out verification results.

PlaceholderPurposeExampleValidation Notes

[ATTRIBUTED_STATEMENT]

The exact statement being verified, exactly as it appears in the content under review

We are going to build a wall and Mexico will pay for it

Required. Non-empty string. Preserve original punctuation and casing. Do not normalize or paraphrase before verification. Max 2000 chars

[ATTRIBUTED_SPEAKER]

The person or entity the statement is attributed to, with sufficient disambiguation for source lookup

Donald Trump (45th US President)

Required. Non-empty string. Include title, role, or affiliation if ambiguity exists. Validate against a known entity list if available

[ATTRIBUTED_DATE]

The date or date range when the statement was allegedly made, in ISO 8601 format

2016-08-31

Required. Must parse as valid ISO 8601 date or date range. Null allowed if genuinely unknown, but confidence will be capped. Reject obviously future dates relative to speaker lifespan

[ATTRIBUTED_CONTEXT]

The event, venue, or medium where the statement was allegedly made

Campaign rally in Phoenix, Arizona

Required. Non-empty string. Provides critical retrieval constraints. Accept free text but prefer structured fields: event_type, venue, location, medium

[RETRIEVED_SOURCES]

Array of source documents or passages retrieved from search, archives, or knowledge bases for evidence matching

[{"source_id": "trump-phoenix-transcript-2016", "text": "...", "source_type": "transcript", "retrieval_date": "2025-01-15"}]

Required. Array with at least 1 source. Each source must have source_id, text, and source_type. Validate text is non-empty. Null or empty array triggers abstention, not verification

[VERIFICATION_STANDARD]

The evidence threshold required for a positive verification, expressed as a named standard or explicit criteria

exact_match_required OR near_match_with_context_preservation

Required. Must be one of: exact_match_required, near_match_allowed, paraphrase_match_allowed, or custom with explicit criteria. Controls confidence calibration and false-positive rate

[OUTPUT_SCHEMA]

The expected JSON schema for the verification output, including required fields and enum constraints

See output-contract table for full schema definition

Required. Must be a valid JSON Schema object. Validate schema is parseable before prompt assembly. Reject schemas missing verification_status, confidence_score, or evidence fields

[ABSTENTION_RULES]

Conditions under which the model should abstain from verification rather than guess

abstain_if_no_sources: true, abstain_if_contradictory_evidence: false, abstain_if_confidence_below: 0.6

Required. Must specify at least one abstention condition. Validate each condition is a recognized rule type. Null not allowed; explicit abstention rules are a safety requirement

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Attributed Statement Verification Prompt into a production verification pipeline with validation, tool use, retries, and human review.

The Attributed Statement Verification Prompt is designed as a single step in a larger verification pipeline, not as a standalone chatbot interaction. The prompt expects a specific input shape—an attributed statement and a set of retrieved source documents—and returns a structured verification verdict. In production, you will wrap this prompt in an application harness that handles pre-processing (claim extraction, source retrieval), post-processing (schema validation, confidence thresholding), and orchestration (retries, fallbacks, human review routing). The harness is responsible for ensuring the model receives clean, bounded inputs and that its output is machine-verifiable before any downstream action is taken.

Start by defining a strict input contract. The [ATTRIBUTED_STATEMENT] placeholder should receive a single, atomic claim with an explicit attribution target (e.g., 'CEO Jane Smith stated that Q3 revenue grew 12%'). The [RETRIEVED_SOURCES] placeholder expects a pre-assembled context block containing the top-k documents from your retrieval system, each with a source ID, title, date, and snippet. Do not pass raw search engine results directly into the prompt. Instead, use a retrieval pipeline—keyword search, vector search, or hybrid—to fetch candidate sources, then apply a relevance filter and deduplication step before assembly. For high-stakes verification, include a source authority score from a separate assessment step so the model can weight evidence appropriately. The [VERIFICATION_DATE] and [DOMAIN] fields help the model calibrate recency expectations and terminology handling.

After the model returns a response, validate the output against the expected JSON schema before any downstream consumption. The prompt specifies fields like verification_status, confidence_score, source_provenance, and contradictory_evidence. Your harness should check that verification_status is one of the allowed enum values (verified_true, verified_false, unverifiable, disputed), that confidence_score is a float between 0.0 and 1.0, and that source_provenance contains valid source IDs that map back to the input sources. If schema validation fails, implement a retry loop: re-invoke the model with the same inputs plus a repair instruction that includes the specific validation error. Limit retries to two attempts before escalating to a human reviewer or logging the failure for offline analysis. For unverifiable or disputed outputs, route the verification packet—including the original statement, retrieved sources, and model output—to a human review queue with a structured context summary.

Model choice matters for this workflow. Use a model with strong instruction-following and structured output capabilities. At the time of writing, GPT-4o, Claude 3.5 Sonnet, and Gemini 1.5 Pro all perform well on attributed verification tasks when given clean source context. For cost-sensitive or high-throughput pipelines, consider routing simple, high-confidence cases to a smaller model (e.g., GPT-4o-mini or Claude 3 Haiku) and escalating ambiguous or low-confidence cases to a larger model. Implement a confidence threshold in your harness: if confidence_score falls below 0.7, automatically escalate to a stronger model or human review. Log every verification decision with the full input, output, validation result, and routing decision for auditability and prompt debugging.

Tool integration is essential for this prompt to function at scale. The prompt itself does not call tools; your harness must handle retrieval before invocation. Connect the harness to a web search API (e.g., Bing, Brave, or Tavily) for real-time claims, or to an internal document store (e.g., a vector database like Pinecone or Weaviate) for claims against known corpora. For claims about public figures, consider integrating with structured knowledge sources like Wikidata or Wikipedia APIs to cross-reference biographical facts. The harness should also support a 'source freshness' check: if the most recent retrieved source is older than a configurable threshold relative to the claim date, flag the verification as potentially stale and adjust the confidence score downward or route to human review.

Before deploying, build a regression test suite with at least 50 labeled examples covering true statements, false statements, unverifiable statements, and edge cases like statements with partial evidence or conflicting sources. For each test case, store the expected verification_status, an acceptable confidence_score range, and the required source IDs. Run this suite on every prompt or model change. Additionally, implement an LLM-as-judge eval step that compares the harness output against ground truth using a rubric focused on status accuracy, source attribution correctness, and contradiction detection. Monitor production performance by tracking the rate of schema validation failures, human review escalations, and user-reported errors. The most common failure mode is the model hallucinating source details when the retrieved context is insufficient—your harness must treat missing source IDs in the output as a critical error and never surface unverifiable provenance to end users.

IMPLEMENTATION TABLE

Expected Output Contract

Defines the strict JSON schema, field types, and validation rules for the Attributed Statement Verification Prompt response. Use this contract to build downstream parsers, validators, and routing logic.

Field or ElementType or FormatRequiredValidation Rule

verification_status

enum: ["verified", "contradicted", "unverifiable", "inconclusive"]

Must be one of the four enum values. No other string allowed.

attributed_statement

string

Must exactly match the [ATTRIBUTED_STATEMENT] input. Fail if altered.

attributed_person

string

Must match the [ATTRIBUTED_PERSON] input. Fail if empty or null.

confidence_score

number (0.0-1.0)

Must be a float between 0.0 and 1.0 inclusive. Parse as float and check bounds.

source_provenance

array of objects

Must be a non-empty array if status is 'verified' or 'contradicted'. Each object must contain 'source_title', 'source_url', and 'relevant_excerpt' string fields.

contradictory_evidence

array of objects or null

Required if status is 'contradicted'. Must be null or empty array otherwise. Each object must contain 'source_title', 'source_url', and 'contradicting_excerpt'.

analysis_rationale

string

Must be a non-empty string explaining the verification decision. Max 500 words.

needs_human_review

boolean

Must be true if confidence_score < [HUMAN_REVIEW_THRESHOLD] or status is 'inconclusive'. Otherwise false.

PRACTICAL GUARDRAILS

Common Failure Modes

Attributed Statement Verification prompts fail in predictable ways. These are the most common breakages and how to prevent them before they reach production.

01

Source Absence Treated as Denial

What to watch: The model concludes a statement is false or fabricated simply because it cannot find a source in the provided context or search results. This confuses 'not found' with 'proven false.' Guardrail: Require an explicit VERIFICATION_STATUS enum that separates UNVERIFIABLE from FALSE. Add a rule: 'If no source confirms or denies the statement, output UNVERIFIABLE, not FALSE.'

02

Near-Match Overconfidence

What to watch: The model matches an attributed statement to a source with similar wording but materially different meaning, then reports high confidence. Paraphrases with shared keywords trigger false positives. Guardrail: Add a semantic fidelity check step: 'Before confirming a match, explain the core claim in both the attributed statement and the source. If the core claims differ, flag as MISMATCH regardless of lexical overlap.'

03

Context-Stripping Blindness

What to watch: The model verifies a quote against a source passage but ignores surrounding context that changes the meaning. A technically accurate quote can still be misleading when context is stripped. Guardrail: Require the model to retrieve and evaluate at least N sentences before and after the matched passage. Add a CONTEXT_DISTORTION field that flags when surrounding material contradicts or qualifies the quoted text.

04

Temporal Anchoring Drift

What to watch: The model matches a statement to a source from a different time period without checking temporal consistency. A figure may have said something in 2019 that they explicitly contradicted in 2023. Guardrail: Require date extraction from both the attributed statement and the source. Add a rule: 'If the statement includes a temporal marker and the source predates or postdates it significantly, flag TEMPORAL_MISMATCH and reduce confidence.'

05

Attribution Confusion Across Entities

What to watch: The model attributes a statement to the wrong person when multiple speakers appear in the same source document. This is especially common in interview transcripts and panel discussions. Guardrail: Require explicit speaker identification before verification. Add a validation step: 'Confirm the speaker name in the source matches the attributed entity. If speaker attribution is ambiguous, flag SPEAKER_UNCERTAINTY and do not confirm.'

06

Confidence Calibration Collapse

What to watch: The model outputs high confidence for weak evidence or low confidence for strong evidence because it lacks calibration anchors. Binary thinking about evidence quality produces brittle scores. Guardrail: Provide a confidence rubric with explicit anchors: 'HIGH: multiple independent primary sources with exact matches. MEDIUM: single primary source with near-match. LOW: secondary sources, inferred meaning, or partial match. UNVERIFIABLE: no source found.'

IMPLEMENTATION TABLE

Evaluation Rubric

Run these checks against a golden dataset of 50-100 known-attribution cases before shipping. Each row defines a pass/fail standard, a failure signal to monitor in production, and a test method.

CriterionPass StandardFailure SignalTest Method

Schema Compliance

[OUTPUT_JSON] parses without errors and all required fields are present

JSON parse failure or missing [verification_status] field

Validate output against [OUTPUT_SCHEMA] using a JSON schema validator for every golden case

Verification Status Accuracy

[verification_status] matches the ground-truth label (confirmed, refuted, unverified) for at least 95% of cases

Status mismatch rate exceeds 5% on golden dataset

Compare [verification_status] to ground-truth label; compute confusion matrix for confirmed vs refuted vs unverified

Source Provenance Completeness

[source_provenance] contains a non-null URL or document identifier when [verification_status] is confirmed or refuted

Confirmed or refuted status with null or empty [source_provenance]

Assert [source_provenance] is not null and not empty string for all non-unverified outputs

Confidence Calibration

[confidence_score] is between 0.0 and 1.0 and correlates with ground-truth correctness

[confidence_score] is 0.9 or higher on incorrect outputs or below 0.5 on correct outputs

Bin [confidence_score] into deciles; compute expected calibration error against ground-truth accuracy per bin

Contradictory Evidence Flagging

[contradictory_evidence] is non-empty when ground truth indicates known contradictory sources exist

Known contradictory source omitted from [contradictory_evidence] array

Check recall of contradictory sources against a pre-annotated contradiction set for each golden case

Abstention on Insufficient Evidence

[verification_status] is unverified when [CONTEXT] contains no source matching the attributed statement

Confirmed or refuted status returned when [CONTEXT] lacks any relevant source

Feed cases with empty or irrelevant [CONTEXT]; assert [verification_status] equals unverified

Quote-Context Alignment

[excerpted_evidence] text matches the original source within a 5% edit-distance tolerance

[excerpted_evidence] contains hallucinated words not present in the source document

Compute Levenshtein edit distance between [excerpted_evidence] and the ground-truth source span; flag if distance exceeds 5% of span length

Latency Budget Compliance

End-to-end verification completes within [LATENCY_BUDGET_MS] milliseconds for 99th percentile of cases

p99 latency exceeds [LATENCY_BUDGET_MS] by more than 20%

Measure wall-clock time from prompt submission to parsed output; compute p50, p95, p99 across golden dataset runs

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Start with the base prompt and a single search tool. Remove strict schema enforcement and confidence calibration. Use a simple output format like { status, evidence_found, notes }. Run against 10-20 known statements to feel out failure modes before adding complexity.

Prompt snippet

code
You are a statement verifier. Given [STATEMENT] attributed to [PERSON], search for evidence confirming or refuting it. Return status (confirmed/refuted/unverified), a brief explanation, and any source URLs found.

Watch for

  • Model hallucinating sources when search returns nothing
  • Over-confident 'confirmed' labels on weak evidence
  • No distinction between 'person said it' and 'person wrote it'
  • Missing date context making old statements appear current
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.