This prompt is designed for intelligence analysts, researchers, and verification pipeline engineers who need to decompose a complete report or briefing into a structured, machine-readable schema. Its primary job is to tag every passage by its rhetorical type—fact, assessment, forecast, or rhetorical framing—and explicitly link each passage to its stated or implied evidence basis. This is a critical pre-processing step for automated evidence matching, as feeding a model a paragraph that mixes a verifiable statistic with an analyst's forward-looking opinion will produce unreliable verification results. The ideal user is building or operating a system where downstream components require clean separation of checkable claims from interpretive content before any fact-checking logic is applied.
Prompt
Mixed-Content Decomposition Prompt for Analysts

When to Use This Prompt
Understand the specific job this prompt performs, the ideal user, and the boundaries where it should not be applied.
Use this prompt when you have a complete, multi-paragraph document and need a holistic decomposition that preserves the document's structure and evidence chain. It is appropriate for formal reports, threat assessments, market briefings, and other long-form analytical products. Do not use this prompt for real-time chat moderation, single-sentence classification, or social media content where the concept of a 'report' structure does not apply. For sentence-level classification without the evidence-linking requirement, use the Fact-Interpretation Separation System Prompt instead. This prompt also assumes the input is in a final, readable text format; it is not designed to handle raw, unstructured data dumps, highly redacted text, or content where the primary evidence is embedded in non-textual formats like complex charts without descriptions.
Before integrating this prompt into a production pipeline, you must define clear evaluation criteria for boundary precision—specifically how the model should handle sentences that contain both a fact and an interpretation. The included eval harness tests for this exact failure mode. If your workflow involves regulated or high-stakes domains, such as intelligence analysis or legal review, the output of this decomposition must be treated as a draft requiring human review before it becomes the basis for any automated action or verified claim. Proceed by copying the prompt template into your harness, substituting your domain-specific examples, and running the provided test cases to establish a baseline for acceptable decomposition accuracy in your context.
Use Case Fit
Where this prompt works and where it does not. Use these cards to decide if the Mixed-Content Decomposition Prompt is the right tool for your current workflow.
Good Fit: Analyst Report Processing
Use when: You have long-form reports, briefings, or assessments that blend facts, analysis, and forecasts. Guardrail: The prompt expects content with explicit evidence cues. If the source material is purely opinion or purely data, a simpler extraction prompt will be more efficient.
Bad Fit: Real-Time Chat or Streaming Text
Avoid when: The input is a live chat stream, informal conversation, or single-sentence query. Guardrail: This prompt is designed for structured, multi-paragraph documents. Using it on short, unstructured text will produce noisy, low-value classifications and waste tokens.
Required Inputs: Source-Rich Documents
What to watch: The prompt requires content with identifiable evidence anchors, such as citations, named sources, or data references. Guardrail: If the input document lacks any source grounding, the prompt will correctly flag most statements as 'unsupported.' Do not use it to find facts where none are intended to exist.
Operational Risk: Boundary Precision Decay
What to watch: In sentences where a fact and an interpretation are tightly coupled, the model may misclassify the entire sentence or create a false boundary. Guardrail: Implement a confidence threshold. Route any passage with a boundary confidence score below 0.7 to a human review queue for manual separation.
Operational Risk: Downstream Over-Reliance
What to watch: A downstream verification pipeline may treat the 'fact' output channel as ground truth without checking the model's confidence or source links. Guardrail: Never auto-verify facts from this decomposition. Always pass the extracted fact and its source span to a separate evidence-matching and scoring prompt before accepting it as true.
Variant: Domain-Specific Terminology
What to watch: The base prompt uses general labels like 'fact' and 'interpretation.' In legal or medical domains, these map poorly to 'asserted fact vs. legal conclusion' or 'objective finding vs. clinical impression.' Guardrail: Use the domain-adapted variant of this prompt, which swaps the classification taxonomy and few-shot examples for the target domain's specific evidence standards.
Copy-Ready Prompt Template
A production-ready prompt template for decomposing mixed-content reports into structured, type-tagged passages with evidence basis and boundary markers.
This template is designed to be copied directly into your prompt management system, IDE, or orchestration layer. It accepts a raw intelligence report and returns a structured JSON decomposition. Every placeholder is enclosed in square brackets and must be replaced with your specific inputs before use. The prompt enforces strict output typing, requires evidence basis for each passage, and explicitly marks sentences where fact and interpretation are blended—a critical detail for downstream verification accuracy.
textYou are an expert intelligence analyst specializing in content decomposition. Your task is to process a report that blends facts, assessments, and forecasts, and produce a structured decomposition. ## INPUT Report Content: [REPORT_TEXT] ## OUTPUT SCHEMA Return ONLY valid JSON matching this schema: { "passages": [ { "passage_id": "string", "original_text": "string (exact text span from the report)", "content_type": "fact | interpretation | opinion | prediction | rhetorical_framing | blended", "evidence_basis": "string | null (source, data, or reasoning cited; null if none)", "blended_sentences": [ { "sentence_text": "string (the full sentence containing both fact and interpretation)", "factual_part": "string (the verifiable claim within the sentence)", "interpretive_part": "string (the analysis, judgment, or framing within the sentence)" } ], "confidence": "high | medium | low (your confidence in the content_type classification)" } ] } ## CONSTRAINTS - Preserve the original text exactly in `original_text`. Do not paraphrase. - If a sentence contains both a verifiable fact and an interpretation, mark the entire passage as `blended` and populate the `blended_sentences` array. - For `blended` passages, the `content_type` must be `blended`, and you must still provide an `evidence_basis` for the factual part if one is detectable. - If no evidence basis is provided in the text, set `evidence_basis` to null. Do not invent sources. - Classify each passage independently. Do not assume the type of one passage based on surrounding passages. - If confidence is `low`, briefly explain why in a `classification_rationale` field added to the passage object. ## EXAMPLES Input: "The GDP grew by 2.1% last quarter, which signals a strong recovery." Output passage: { "passage_id": "p1", "original_text": "The GDP grew by 2.1% last quarter, which signals a strong recovery.", "content_type": "blended", "evidence_basis": "Implied economic data; no explicit source cited in text.", "blended_sentences": [ { "sentence_text": "The GDP grew by 2.1% last quarter, which signals a strong recovery.", "factual_part": "The GDP grew by 2.1% last quarter.", "interpretive_part": "which signals a strong recovery." } ], "confidence": "high" } Input: "In my view, the policy will fail within six months." Output passage: { "passage_id": "p2", "original_text": "In my view, the policy will fail within six months.", "content_type": "prediction", "evidence_basis": null, "blended_sentences": [], "confidence": "high" } ## RISK LEVEL [HIGH_RISK_DOMAINS: legal, medical, financial, intelligence] If the report content falls into a high-risk domain, flag any passage where classification confidence is `medium` or `low` with a `requires_human_review: true` field.
After copying the template, replace [REPORT_TEXT] with your source content and adjust [HIGH_RISK_DOMAINS] to match your operational context. The output schema is designed to be parsed by a downstream verification pipeline, so do not relax the JSON structure. If your model struggles with strict JSON adherence, add a post-generation validation step that checks for the presence of all required fields and retries with a stronger format instruction. For high-risk domains, always route blended passages and low-confidence classifications to a human review queue before any automated fact-checking begins.
Prompt Variables
Required inputs for the Mixed-Content Decomposition Prompt. Each placeholder must be populated before the prompt is sent to the model. Validation notes describe how to check input quality before execution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SOURCE_CONTENT] | The full text to be decomposed into fact, interpretation, opinion, prediction, and rhetorical framing segments | The Q3 earnings report showed revenue of $12.4B, which we believe reflects strong execution in a challenging market. Looking ahead, we expect continued growth. | Check that content length is within model context window. Reject empty or whitespace-only input. For documents over 8K tokens, split into overlapping chunks with 200-token overlap to preserve sentence boundaries. |
[CLASSIFICATION_TAXONOMY] | The set of content types the model must assign to each passage, with definitions and distinguishing criteria | fact: verifiable statement with external evidence basis; interpretation: analytical judgment drawing on facts; opinion: personal view not requiring evidence; prediction: forward-looking statement about future state; rhetorical_framing: persuasive language structuring argument | Validate that taxonomy is non-empty and each type has a clear definition. Test taxonomy against 5 known ambiguous passages to confirm types are mutually exclusive enough for reliable classification. If types overlap in >20% of test cases, refine definitions. |
[EVIDENCE_BASIS_SCHEMA] | The structure for linking each factual claim to its evidence source, including source type, citation format, and confidence indicators | {"source_type": "document|external_knowledge|attributed_statement|unsupported", "citation_span": "char offset range", "confidence": "high|medium|low", "corroboration_count": integer} | Validate schema is valid JSON with required fields. Test that citation_span format matches [SOURCE_CONTENT] indexing method. Reject schemas missing confidence field for fact-type passages. Ensure source_type enum covers all expected evidence origins. |
[BOUNDARY_RULES] | Explicit rules for handling sentences containing both fact and interpretation, including tie-breaking logic and split-point guidance | When a sentence contains both a verifiable fact and an interpretive clause, split at the clause boundary. If splitting is impossible, classify the entire sentence as interpretation with a note flagging the embedded fact. | Test boundary rules against 10 mixed sentences with known fact-interpretation splits. Measure boundary precision: correct split points should exceed 90%. If rules produce inconsistent splits on same sentence across runs, add explicit tie-breaking criteria. Document edge cases where human review is required. |
[OUTPUT_FORMAT] | The expected structure for decomposed output, including field specifications, required metadata, and ordering constraints | JSON array of passage objects with fields: passage_id, original_text, start_char, end_char, classification, evidence_basis, boundary_notes, confidence_score | Validate format is parseable JSON schema. Confirm required fields match downstream consumer expectations. Test that start_char and end_char align with [SOURCE_CONTENT] indexing. Reject formats missing passage_id for traceability. Ensure classification field accepts only values from [CLASSIFICATION_TAXONOMY]. |
[DOMAIN_CONTEXT] | Optional domain-specific terminology, entity lists, and known fact patterns that help the model distinguish domain facts from general interpretation | Domain: financial_reporting. Key entities: revenue, EBITDA, GAAP, non-GAAP, guidance. Fact patterns: reported figures with dates, comparative periods, segment breakdowns. Interpretation patterns: management commentary, market narrative, adjusted measures. | If provided, validate domain context is non-empty and relevant to [SOURCE_CONTENT]. Test that domain-specific fact patterns improve classification precision by comparing runs with and without context on 5 domain samples. If domain context degrades performance on general content, make this placeholder optional with a null default. |
[CONFIDENCE_THRESHOLD] | The minimum confidence score below which passages are flagged for human review rather than accepted as automatically classified | 0.7 | Validate value is a float between 0.0 and 1.0. Test that threshold produces appropriate human-review volume: if >30% of passages fall below threshold, investigate classification taxonomy clarity or boundary rules. If <2% fall below, threshold may be too permissive for high-risk domains. Document threshold rationale for audit. |
[HUMAN_REVIEW_FLAG_CONDITIONS] | Specific conditions that trigger human review routing beyond low confidence, such as contradictory classifications, regulatory content, or high-stakes claim types | Flag for human review if: passage contains forward-looking financial statements, classification confidence < 0.7, boundary split confidence < 0.8, or passage references material adverse events. | Validate conditions are specific and testable. Ensure conditions align with organizational risk tolerance. Test that flag conditions trigger on known high-risk examples and do not trigger on low-risk examples. Document false positive and false negative rates for each condition. Require approval from domain expert before deploying conditions to production. |
Implementation Harness Notes
How to wire the Mixed-Content Decomposition prompt into a reliable verification pipeline with validation, retries, and human review routing.
This prompt is designed as a pre-processing step in a larger verification pipeline. It should sit immediately after content ingestion and before any evidence-matching or fact-checking stages. The primary integration point is a structured API call where the raw document text is passed as the [INPUT] and the model returns a JSON array of decomposed passages. The application layer must validate the output schema before allowing downstream consumers to act on the classification results.
Validation and Retry Logic: Implement a strict JSON schema validator that checks for required fields (passage_id, original_text, classification, evidence_basis, confidence) and enum compliance on the classification field (fact, interpretation, opinion, prediction, rhetorical_framing). If validation fails, retry up to two times with an error-specific repair prompt that includes the original input, the malformed output, and the exact validation error message. After two failed retries, route the entire document to a human review queue with the partial output and error context attached. Logging and Observability: Log every decomposition request with a trace_id, the model version used, token counts, validation status, and the count of passages by classification type. This data is critical for detecting drift in classification behavior over time or across document types.
Human Review Routing: Passages where the model assigns a confidence score below 0.7, or where the classification is prediction with an evidence_basis of none, should be automatically flagged for human review. Package these into a structured handoff that includes the ambiguous passage, the model's classification and rationale, and a specific question for the reviewer (e.g., 'Does this passage contain a verifiable factual claim about a past event, or is it a forward-looking assessment?'). Model Selection: Use a model with strong instruction-following and JSON mode capabilities. For high-throughput pipelines, consider a smaller, fine-tuned model that has been trained on your domain-specific fact-interpretation boundary examples to reduce latency and cost. Avoid using this prompt with models that have weak JSON output reliability without a repair loop in place.
Downstream Integration: The validated output should be split into two streams: the fact passages are routed to the evidence-matching and claim verification subsystem, while interpretation, opinion, and prediction passages are routed to a separate analysis or summarization pipeline. Never send passages classified as rhetorical_framing to a fact-checking module, as they will produce false positives and erode trust in the verification output. Before deploying, run a golden dataset of 50 manually labeled documents through the harness and measure boundary precision, classification recall, and the false positive rate for facts misclassified as interpretation. Gate deployment on these metrics meeting your agreed thresholds.
Expected Output Contract
Validation rules for each field in the decomposed output. Use this contract to build a post-processing validator that rejects malformed or incomplete decompositions before they enter downstream verification pipelines.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
passage_id | string | Matches pattern | |
original_text | string | Non-empty. Must be a verbatim substring of [SOURCE_CONTENT]. Fail if span cannot be located. | |
classification | enum: fact | interpretation | opinion | prediction | rhetorical | mixed | Must be one of the allowed enum values. If | |
atomic_claims | array of strings | Required when classification is | |
evidence_basis | array of objects | Required when classification is | |
confidence_score | number between 0.0 and 1.0 | Must be a float. Score represents classification confidence, not claim truth. Values below [CONFIDENCE_THRESHOLD] should route to human review. | |
boundary_note | string | Required when classification is | |
speaker_attribution | string | null | If [CONTENT_TYPE] is |
Common Failure Modes
Mixed-content decomposition fails in predictable ways. These are the most common production failure modes when separating facts from interpretation, and the specific guardrails that prevent them.
Interpretation Disguised as Fact
What to watch: The model classifies analyst judgments, characterizations, and inferred implications as factual statements because they are written in declarative, confident language without hedging. This is the most common false-positive failure and directly undermines downstream verification accuracy. Guardrail: Add explicit few-shot examples showing confident-sounding interpretation labeled correctly. Require the model to identify the evidence basis for every fact classification, and flag any statement without a direct observable source as interpretation regardless of phrasing confidence.
Boundary Collapse in Compound Sentences
What to watch: Single sentences containing both a verifiable fact and an interpretive clause get classified entirely as one type, losing the embedded fact or masking the interpretation. Example: 'Revenue grew 12% due to our successful market strategy' gets labeled entirely as fact, swallowing the causal interpretation. Guardrail: Require clause-level decomposition for compound sentences. Add eval tests specifically targeting sentences with causal connectors, 'reflecting' phrases, and 'as a result of' constructions. Score boundary precision at the sub-sentence level.
Domain Vocabulary Blindness
What to watch: Domain-specific terms that signal interpretation in context get treated as factual language because the model lacks field awareness. Terms like 'adjusted EBITDA,' 'clinically significant,' or 'national security threat' carry interpretive weight that general-purpose prompts miss. Guardrail: Provide a domain-specific glossary of interpretation-signaling terms in the prompt context. Include examples of how the same word can be factual in one context and interpretive in another. Test against domain expert-labeled samples before deployment.
Hedged Facts Misclassified as Interpretation
What to watch: Statements containing uncertainty language like 'approximately,' 'estimated,' or 'preliminary data suggests' get classified as interpretation when they are actually factual claims with quantified uncertainty. This false-negative rate causes verifiable claims to bypass evidence matching. Guardrail: Distinguish between epistemic hedging on factual claims and genuine interpretive language. Train the model to recognize that 'an estimated 10,000 attendees' is a factual claim with stated uncertainty, while 'the event was successful' is interpretation. Include explicit hedging-vs-interpretation examples in few-shot prompts.
Temporal Context Drift
What to watch: Statements that were factual when written become interpretation over time, or forward-looking statements get classified as current facts. Projections, forecasts, and past assessments of future events create classification errors when temporal context is ignored. Guardrail: Require the model to anchor every classification to the statement's temporal frame. Flag forward-looking statements, projections, and time-bound assessments separately from current factual claims. Include eval tests with dated content to measure temporal classification accuracy.
Source Attribution Confusion
What to watch: The model treats the fact that someone said something as equivalent to the claim itself being factual. 'The CEO stated that churn decreased' is a factual claim about what was said, but the embedded claim about churn requires separate verification. Conflating these levels creates false verification confidence. Guardrail: Implement two-level decomposition: first extract the fact of the statement being made, then separately classify the embedded claim. Require distinct evidence chains for each level. Add eval checks that verify both levels are independently classified.
Evaluation Rubric
Use this rubric to test the quality of the Mixed-Content Decomposition output before shipping to production. Each criterion targets a specific failure mode common when separating facts from interpretation in analyst reports.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Type Classification Accuracy | Every passage tagged with exactly one type from the taxonomy; no passage left unclassified | Passages tagged as 'fact' contain interpretive language like 'likely,' 'suggests,' or 'we assess' | Run 50 labeled analyst passages through the prompt; measure exact-match accuracy against human labels; require ≥90% |
Boundary Precision in Mixed Sentences | When fact and interpretation appear in the same sentence, the output splits them into separate passages with distinct type tags | A sentence containing both a verifiable number and an analyst's forecast is tagged as a single type | Select 20 sentences known to blend fact and interpretation; verify each produces at least two output passages with different type tags |
Evidence Basis Linkage | Every factual passage includes a non-null [EVIDENCE_BASIS] field; interpretive passages may have null but must include [RATIONALE] | A factual passage ships with null evidence basis; an interpretive passage ships with no rationale for the assessment | Parse output JSON; assert [EVIDENCE_BASIS] is non-null for all type='fact' passages; assert [RATIONALE] is non-null for all type='interpretation' or type='forecast' passages |
Source Span Preservation | Every passage retains the exact source text span in [SOURCE_TEXT]; no paraphrasing or truncation that alters meaning | Source span is truncated mid-sentence, losing context needed to verify the classification decision | Compare [SOURCE_TEXT] fields against input document; require character-level match; flag any span that ends mid-clause without a complete assertion |
Confidence Score Calibration | Confidence scores for type classification are ≥0.8 for clear cases and ≤0.6 for genuinely ambiguous passages | All passages receive confidence 0.95 regardless of ambiguity; or ambiguous hedging language receives high confidence | Bin confidence scores across a 100-passage test set; verify distribution is not flat at extremes; spot-check 10 low-confidence passages for genuine ambiguity |
No Fact-Interpretation Merging | No output passage contains both a verifiable factual claim and an interpretive assessment within the same [PASSAGE_TEXT] | Output reads: 'Revenue was $2.3B, which represents strong execution' as a single passage tagged 'fact' | Scan all [PASSAGE_TEXT] fields for conjunction patterns like 'which indicates,' 'reflecting,' 'demonstrating'; flag any that mix a measurable claim with an assessment |
Forecast vs Fact Distinction | Forward-looking statements, projections, and conditional predictions are tagged as 'forecast' or 'prediction,' never as 'fact' | A statement like 'We expect Q3 revenue to grow 12%' is tagged as 'fact' | Build a test set of 15 forward-looking statements from earnings calls; verify zero are tagged as 'fact'; measure recall ≥95% for 'forecast' or 'prediction' tags |
Rhetorical Framing Detection | Passages that use persuasive language, emphasis, or narrative framing without adding verifiable content are tagged as 'rhetorical' | Marketing language like 'industry-leading platform' or 'unprecedented growth' is tagged as 'fact' or 'interpretation' | Curate 10 passages with clear rhetorical framing but no checkable claim; verify all are tagged 'rhetorical'; check that [EVIDENCE_BASIS] is null for these passages |
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 simple JSON output schema. Focus on getting the four-way classification (fact, interpretation, opinion, prediction) working before adding evidence linking. Start with a single document type you know well.
codeFor each passage in [INPUT_TEXT], classify as: - fact: verifiable against external evidence - interpretation: analysis or assessment of facts - opinion: subjective judgment or preference - prediction: forward-looking statement Return JSON array with "passage", "type", "rationale" fields.
Watch for
- Overly broad "fact" classification that includes interpretive framing
- Missing boundary cases where a single sentence contains both fact and interpretation
- No validation of output schema shape

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