This prompt is designed for editorial verification teams and AI pipeline builders who need to extract factual claims from source content and rigorously distinguish between verbatim direct quotations and paraphrased assertions. The core job-to-be-done is to produce a structured inventory of claims where each item is tagged with its quotation type (direct_quote or paraphrase), the exact original text, and the attributed speaker or source. This is not a general-purpose claim extraction prompt; it is specifically for workflows where misattributing a paraphrase as a direct quote, or vice versa, carries high editorial, legal, or reputational risk.
Prompt
Direct Quotation and Paraphrased Claim Extraction Prompt

When to Use This Prompt
Define the job, reader, and constraints for the Direct Quotation and Paraphrased Claim Extraction Prompt.
Use this prompt when you are processing interview transcripts, press releases, reported speech in articles, legal testimony, or any content where the precise wording and attribution of a statement must be preserved for downstream verification. The ideal user is a verification engineer integrating this into a fact-checking pipeline, or an editorial operations lead setting up a human-in-the-loop review queue. Do not use this prompt if you only need atomic claim decomposition without quotation fidelity, or if your source material does not contain attributed speech. In those cases, the Atomic Claim Extraction Prompt Template is a better fit. You must also avoid this prompt when the source text is heavily redacted or anonymized, as the attribution metadata will be unreliable.
Before wiring this into a production harness, you must define clear validation rules. The primary failure mode is misattribution: a paraphrased claim being incorrectly tagged as a direct quote and linked to a speaker who never said those exact words. A secondary failure mode is context-stripping, where a direct quote is extracted but the surrounding hedging or conditional language is dropped, changing its meaning. To mitigate this, your implementation should log the quotation_type and attributed_to fields for every extracted claim and route any claim where the extraction confidence is below a defined threshold for human review. The next section provides the exact prompt template you will need to implement this extraction logic.
Use Case Fit
Where this prompt works and where it does not. Use these cards to decide if the Direct Quotation and Paraphrased Claim Extraction Prompt is the right tool for your verification pipeline.
Good Fit: Editorial Verification Teams
Use when: Your workflow requires distinguishing verbatim quotes from paraphrased assertions for editorial review, fact-checking, or content QA. The prompt excels at tagging quotation type and preserving attribution metadata. Guardrail: Always pair with a human review step for high-stakes editorial decisions.
Bad Fit: Unstructured or Noisy Transcripts
Avoid when: Source content lacks clear speaker attribution, contains overlapping dialogue, or has heavy transcription errors. The prompt relies on identifiable attribution signals and may misattribute paraphrased content to wrong speakers. Guardrail: Pre-process transcripts with speaker diarization and clean attribution markers before extraction.
Required Inputs: Attribution-Rich Source Text
What to watch: The prompt needs source content with explicit or strongly implied speaker attribution. Without clear attribution anchors, quotation type tagging becomes unreliable. Guardrail: Validate that source material includes named speakers, quotation marks, or clear attribution phrases before running extraction.
Operational Risk: Paraphrase Misattribution
Risk: The model may incorrectly assign paraphrased content to a speaker who did not make the statement, especially when multiple speakers discuss similar topics. This is the primary harness concern for this prompt. Guardrail: Implement a verification step that cross-references extracted claims against original speaker context and flags ambiguous attributions for human review.
Operational Risk: Quotation Boundary Errors
Risk: The model may truncate or extend quotation boundaries incorrectly, capturing partial quotes or merging adjacent statements. This distorts the fidelity of verbatim extraction. Guardrail: Add eval checks that compare extracted quote spans against original source punctuation and speaker transitions. Log boundary mismatch cases for prompt refinement.
Pipeline Fit: Upstream of Evidence Matching
Use when: This prompt feeds into downstream evidence matching or fact-checking workflows where quotation type metadata determines evidence retrieval strategy. Verbatim quotes require exact-match source comparison; paraphrased claims require semantic matching. Guardrail: Ensure downstream systems consume the quotation type tag and adjust matching logic accordingly. Do not treat all extracted claims as equivalent.
Copy-Ready Prompt Template
A reusable prompt for extracting direct quotations and paraphrased claims from source content, with quotation type and attribution metadata.
This prompt template separates verbatim quoted claims from paraphrased assertions in source content, producing structured output with quotation type tags and attribution metadata. Use it when downstream verification workflows need to distinguish exact wording from interpretive restatements—a critical distinction for quote accuracy checks, editorial review, and source fidelity scoring. The template expects source content and optional context about speakers and publication metadata. Do not use this prompt for general claim extraction without quotation tracking; use the Atomic Claim Extraction Prompt Template instead.
codeYou are an editorial verification assistant. Your task is to extract claims from the provided source content and classify each as a direct quotation or a paraphrased assertion. For each claim, preserve the original wording, identify the speaker or source, and attach quotation type metadata. ## INPUT Source Content: [SOURCE_CONTENT] Known Speakers and Roles: [SPEAKER_MAP] Publication Context: [PUBLICATION_CONTEXT] ## OUTPUT SCHEMA Return a JSON object with a "claims" array. Each claim object must include: - "claim_id": string, unique identifier for this claim - "claim_text": string, the exact claim text as it appears or is implied in the source - "quotation_type": enum, one of ["direct_quote", "paraphrase", "mixed"] - "original_wording": string or null, the verbatim source text for direct quotes; null for pure paraphrases - "speaker": string or null, the attributed speaker or source entity - "speaker_role": string or null, the speaker's role or affiliation if known - "source_location": string, reference to where the claim appears (paragraph number, line, or section) - "context_window": string, surrounding sentences that provide context for the claim - "attribution_confidence": enum, one of ["explicit", "implied", "ambiguous"] - "attribution_evidence": string, the text that establishes the speaker attribution ## CONSTRAINTS - Do not merge claims from different speakers into a single claim object. - When a direct quote is embedded within a paraphrase, classify as "mixed" and include both the quoted portion and the paraphrased portion. - If speaker attribution is ambiguous or missing, set "attribution_confidence" to "ambiguous" and note the ambiguity in "attribution_evidence". - Do not invent speaker attributions. If the source does not identify the speaker, set "speaker" to null. - Preserve the original wording exactly for direct quotes, including any grammatical errors or stylistic choices. - For paraphrased claims, the "claim_text" should capture the asserted fact without adding interpretation. - Return only the JSON object. No additional commentary. ## EXAMPLES [EXAMPLES] ## RISK LEVEL [RISK_LEVEL]
Adaptation guidance: Replace [SOURCE_CONTENT] with the article, transcript, or document text. Populate [SPEAKER_MAP] with known speaker names and roles to improve attribution accuracy—this is especially important for interview transcripts and multi-speaker content. Use [PUBLICATION_CONTEXT] to provide date, publication name, and document type, which helps the model resolve ambiguous references. The [EXAMPLES] placeholder should contain 2-3 few-shot examples showing correct extraction for direct quotes, paraphrases, and mixed cases. Set [RISK_LEVEL] to "high" when the output feeds into publication or compliance workflows; this signals downstream harnesses to enable human review gates. For production use, add a [CONSTRAINTS] section specifying maximum claims per document and any domain-specific attribution rules. Validate outputs against the schema before ingestion, and route any claim with attribution_confidence: "ambiguous" to human review.
Prompt Variables
Required and optional inputs for the Direct Quotation and Paraphrased Claim Extraction Prompt. Each variable must be populated before the prompt is sent to the model. Validation notes describe how to check the input before execution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SOURCE_TEXT] | The full document, article, transcript, or content block from which claims will be extracted | The CEO stated that revenue grew 30% year-over-year, which analysts described as 'remarkable growth' in a challenging market. | Required. Must be non-empty string. Check for encoding issues, truncated text, or missing paragraph breaks that could break quotation boundaries. |
[EXTRACTION_MODE] | Controls whether the prompt extracts only direct quotations, only paraphrased claims, or both types | both | Required. Must be one of: 'direct_only', 'paraphrased_only', 'both'. Reject any other value before prompt assembly. |
[ATTRIBUTION_REQUIRED] | Specifies whether every extracted claim must include speaker or source attribution metadata | Required. Boolean. When true, the prompt will flag claims with missing attribution as incomplete. When false, unattributed claims are allowed but marked as 'attribution_unknown'. | |
[MAX_CLAIMS] | Upper bound on the number of claims the prompt should extract to control output size and cost | 50 | Optional. Integer. If null or omitted, the prompt extracts all claims. If set, the prompt prioritizes the most salient claims. Validate as positive integer before use. |
[CONTEXT_WINDOW_SIZE] | Number of characters of surrounding context to preserve with each extracted claim for downstream verification | 300 | Optional. Integer. Defaults to 200 if omitted. Controls how much source text is attached to each claim for evidence matching. Validate as positive integer. |
[SPEAKER_MAP] | A mapping of speaker identifiers to full names and roles to improve attribution accuracy in multi-speaker content | {"SPK1": "Jane Doe, CEO", "SPK2": "John Smith, Analyst"} | Optional. JSON object. If provided, the prompt uses this map to normalize speaker references. Validate as valid JSON with string keys and string values. Null allowed for single-speaker content. |
[OUTPUT_SCHEMA_VERSION] | Schema version identifier for the output format to support prompt versioning and downstream parser compatibility | v2.1 | Optional. String. If omitted, the prompt uses the latest schema version. Validate against known schema versions in your pipeline. Mismatched versions should trigger a parser warning. |
Implementation Harness Notes
How to wire the Direct Quotation and Paraphrased Claim Extraction Prompt into a production verification pipeline with validation, retries, and human review gates.
This prompt is designed to sit at the front of a claim extraction pipeline where source content contains both verbatim quotes and paraphrased assertions. The implementation harness must handle three distinct concerns: input preparation (chunking source text with speaker metadata intact), output validation (ensuring quotation type tags and attribution fields are present and consistent), and downstream routing (sending verbatim quotes to quote-accuracy verification while paraphrased claims go to fact-checking). The prompt itself is stateless, so the harness owns all context management—tracking which speaker said what, preserving original text spans for later comparison, and maintaining document-level provenance across multiple extraction calls.
Wire the prompt into your application with a pre-processing layer that segments source content into speaker-attributed chunks. Each chunk should carry a speaker ID, speaker name, and the raw text span. If your source is a transcript, use diarization metadata. If it's a written article, parse attribution cues like 'according to' or 'said.' The prompt template's [SOURCE_TEXT] placeholder receives the chunk, while [SPEAKER_CONTEXT] receives a structured object with available speaker names and IDs. After the model responds, run a validation layer that checks: (1) every extracted claim has a quotation_type field set to either verbatim or paraphrased, (2) verbatim claims include an original_quote field that matches a substring of the source text (use fuzzy string matching with a configurable threshold, typically 0.85 similarity), (3) paraphrased claims do not contain verbatim text spans longer than 5 consecutive words from the source, and (4) the attributed_to field maps to a valid speaker ID from the input context. Claims failing validation should trigger a retry loop—resubmit the same chunk with the validation errors appended as [CORRECTION_NOTES] in a follow-up call, up to 2 retries before routing to human review.
For model choice, prefer models 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 variation in quotation boundary detection. If your pipeline processes high-volume content, consider batching multiple speaker-attributed chunks into a single prompt call with clear delimiters, but cap batch size at 5-8 chunks to avoid attribution confusion. Logging should capture: the input chunk, speaker context, raw model output, validation results, retry count, and final accepted or rejected status. Store the original source text span alongside each extracted claim for downstream quote-accuracy verification. For high-risk editorial workflows (e.g., publishing corrections, legal review of attributed statements), always route claims where quotation_type is verbatim but the fuzzy match score falls below 0.95 to a human reviewer before the claim enters any published verification report. Avoid wiring this prompt directly into a publish action without a review gate when attribution errors could cause public misquotation harm.
Expected Output Contract
Defines the structure, types, and validation rules for each field in the extracted claims output. Use this contract to build downstream parsers, database schemas, and evaluation checks.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
claim_id | string (UUID v4) | Must be a valid UUID v4 string. Uniqueness check across the entire output array. | |
claim_text | string | Must be non-empty. Length must be between 10 and 2000 characters. Must be a single, self-contained assertion. | |
quotation_type | enum: 'direct_quote' | 'paraphrase' | 'partial_quote' | Must be one of the three allowed enum values. If 'direct_quote', the claim_text must match the source text exactly. | |
speaker_label | string | Must be non-empty. Must match a named entity extracted from the source. If the speaker is the author, use 'author'. | |
source_location | object | Must contain 'document_id' (string), 'paragraph_index' (integer >= 0), and 'text_offset' (object with 'start' and 'end' integers). Start must be less than end. | |
confidence_score | number (float) | Must be a float between 0.0 and 1.0 inclusive. Represents the model's self-assessed confidence in the extraction boundary and speaker attribution. | |
original_context | string | Must be non-empty. Must contain the full sentence or paragraph from which the claim was extracted. Used for human review verification. | |
extraction_timestamp | string (ISO 8601) | Must be a valid ISO 8601 UTC timestamp string. Parses correctly with standard date libraries. |
Common Failure Modes
Direct quotation and paraphrased claim extraction breaks in predictable ways. These are the most common production failure modes and how to guard against them before they reach downstream verification.
Paraphrase Drift from Source Meaning
What to watch: The model rephrases a claim and subtly shifts its meaning, turning a hedged statement into a definitive one or altering the scope. This is the most common and dangerous failure because downstream fact-checking operates on the distorted claim. Guardrail: Require the prompt to output both the extracted paraphrase and the original source text side by side. Add an eval step that compares semantic similarity between the original and paraphrase, flagging pairs below a threshold for human review.
Misattribution of Paraphrased Content
What to watch: The model assigns a paraphrased claim to the wrong speaker, especially in multi-party transcripts, interviews, or articles that mix author narration with quoted sources. A claim from the journalist gets attributed to the interviewee. Guardrail: Include explicit attribution fields in the output schema and require the model to cite the sentence or passage that justifies the attribution. Add a validation check that the attributed speaker actually appears in the cited source segment.
Quotation Marks Without Verbatim Text
What to watch: The model wraps text in quotation marks and tags it as a direct quote, but the text is actually a paraphrase or contains altered wording. This creates false confidence in downstream quote-accuracy checks. Guardrail: Add a strict constraint in the prompt that direct quotes must be character-for-character matches with the source. Include a post-extraction diff check against the source text for any claim tagged as a direct quotation, and downgrade to paraphrase if differences are detected.
Context-Stripping That Reverses Meaning
What to watch: The model extracts a claim but drops the surrounding negation, conditional, or limiting clause. 'The company did not confirm the layoffs' becomes 'The company confirmed the layoffs.' Guardrail: Require the output schema to include a context window field with the full surrounding paragraph. Add an eval that checks extracted claims against negation words and conditional phrases in the context window, flagging claims where the context contains a polarity reversal not reflected in the extraction.
Silent Claim Dropping on Ambiguous Text
What to watch: The model encounters a sentence with unclear attribution, nested claims, or ambiguous phrasing and simply omits it from the output without warning. Valid claims disappear from the verification pipeline. Guardrail: Add an instruction to output an explicit 'skipped' category with reasons when claims cannot be cleanly extracted. Include a coverage check in the harness that compares the number of source sentences to the number of extracted or explicitly skipped claims, flagging low coverage ratios.
Compound Claim Merging Across Speakers
What to watch: The model merges partial statements from two different speakers into a single attributed claim, creating a Frankenstein assertion that neither person actually made. Common in interview transcripts and panel discussions. Guardrail: Enforce a one-claim-per-speaker-per-sentence rule in the prompt. Add a validation step that checks whether any extracted claim pulls text from source segments attributed to different speakers, and split or flag those claims.
Evaluation Rubric
Use this rubric to test the quality of extracted claims before integrating the prompt into a production verification pipeline. Each criterion targets a specific failure mode common to quotation and paraphrase extraction.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Quotation Type Tag Accuracy | Every extracted claim is correctly tagged as 'direct_quotation' or 'paraphrase' with no misclassifications | A verbatim quote tagged as 'paraphrase' or a reworded statement tagged as 'direct_quotation' | Spot-check 20 random claims against source text; require 100% tag accuracy on this sample |
Speaker Attribution Correctness | Each claim's [SPEAKER] field matches the actual speaker in the source, including unnamed speakers marked as 'unidentified' | Quote attributed to wrong person or paraphrased claim assigned to a speaker who did not make the underlying statement | Cross-reference [SPEAKER] values against source bylines, interview labels, and pronoun antecedents; zero tolerance for misattribution |
Verbatim Quote Fidelity | Claims tagged 'direct_quotation' reproduce the source text exactly, including punctuation, capitalization, and internal quotation marks | Added words, removed words, altered punctuation, or silently corrected grammar inside a direct quote | Diff each direct quotation against its source span using exact string match; flag any deviation for human review |
Paraphrase Semantic Preservation | Claims tagged 'paraphrase' preserve the original meaning without introducing new claims, removing qualifiers, or shifting certainty | Paraphrase adds a factual assertion absent from the source, drops a hedging term like 'might' or 'allegedly', or reverses the claim polarity | Have a reviewer compare each paraphrase to its source span and confirm meaning equivalence; sample 10 paraphrases per batch |
Claim Atomicity | Each extracted claim contains exactly one verifiable assertion; compound claims are decomposed into separate entries | A single claim entry contains multiple assertions joined by 'and', 'but', or 'while' that could be verified independently | Count assertions per claim entry using a conjunction split test; any entry with more than one verifiable assertion fails |
Context Window Completeness | Each claim includes a [CONTEXT] field with the full surrounding sentence or paragraph needed to understand the claim without distortion | [CONTEXT] is truncated mid-sentence, omits a necessary preceding sentence, or is missing entirely | Check that [CONTEXT] contains at least one complete sentence before and after the claim span; verify no meaning shift when claim is read in isolation |
Null Handling for Missing Attribution | Claims where the speaker cannot be determined have [SPEAKER] set to null with [ATTRIBUTION_CONFIDENCE] below 0.5 | Missing speaker is guessed, filled with a generic label like 'source', or left as an empty string | Search output for empty string or placeholder speaker values; confirm null fields have corresponding low confidence scores |
Schema Compliance | Every output record includes all required fields: [CLAIM_ID], [CLAIM_TEXT], [QUOTE_TYPE], [SPEAKER], [CONTEXT], [SOURCE_LOCATION], [ATTRIBUTION_CONFIDENCE] | Missing fields, extra fields not in schema, or fields with wrong data types | Validate output against JSON schema; reject any record that fails required-field or type 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
Use the base prompt with a frontier model (GPT-4o, Claude 3.5 Sonnet). Remove strict JSON schema requirements and accept markdown-formatted claim lists. Focus on getting the quotation type tagging right before adding pipeline constraints.
codeExtract claims from [INPUT_TEXT]. For each claim, tag it as: - "direct_quote": verbatim from a named speaker - "paraphrase": restated in the author's words - "ambiguous": unclear attribution Include the original text span and speaker name.
Watch for
- Paraphrased claims being misattributed to the wrong speaker when multiple people are mentioned in the same paragraph
- Direct quotes being tagged as paraphrases when quotation marks are missing in the source
- The model silently dropping claims it considers unimportant

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