This prompt is designed for verification pipelines where a single claim must be checked against evidence that exists in multiple formats. A claim like 'revenue grew 14% in Q3' might need to be verified against a narrative paragraph in an earnings call transcript, a row in a financial table, and a structured data point from an API. Standard evidence-matching prompts fail here because they treat all evidence as unstructured text, losing the structural semantics of tables and the precision of typed data. This prompt instructs the model to perform format-aware comparison: it parses table structures, normalizes numerical values across representations, and maps chart-derived assertions back to their source data. Use it when your evidence corpus contains a mix of plain text, markdown tables, CSV snippets, JSON blobs, or structured data records, and you need a unified verification output.
Prompt
Evidence Matching Across Modalities Prompt

When to Use This Prompt
Defines the job-to-be-done, ideal user profile, required context, and explicit boundaries for the Evidence Matching Across Modalities Prompt.
The ideal user is a verification engineer or RAG pipeline builder who already has a claim extraction step upstream and an evidence retrieval system that returns heterogeneous results. You must provide the claim, the evidence set with format annotations, and a verification schema. The prompt expects evidence to be tagged by format type (e.g., text/plain, text/markdown-table, application/json, text/csv) so the model can apply the correct parsing strategy. Without format tags, the model will default to unstructured text comparison and lose the cross-modal precision this prompt is designed to deliver. You should also supply a tolerance window for numerical comparisons and a unit normalization map if evidence sources use different units or scales.
Do not use this prompt when all evidence is plain text, when claims are purely qualitative with no numerical or structural component, or when you cannot provide format metadata for each evidence chunk. In those cases, a standard claim-to-evidence pairing prompt with inline citation will be simpler and more cost-effective. Also avoid this prompt for real-time streaming verification where latency constraints prevent the multi-step parsing and comparison logic it requires. For high-stakes domains like financial reporting or clinical data, always route outputs through human review and log the full evidence-to-claim mapping for audit. If your evidence set exceeds 8-10 heterogeneous chunks, split the verification into batches to prevent the model from conflating evidence formats or missing cross-modal correlations.
Use Case Fit
Where the Evidence Matching Across Modalities Prompt delivers value and where it introduces risk. This prompt is designed for verification systems that must correlate claims with evidence spanning text, tables, and structured data. It is not a general-purpose extraction or summarization tool.
Good Fit: Multi-Format Evidence Sources
Use when: Your verification pipeline ingests documents where critical evidence lives in tables, charts, or structured data alongside prose. Why: Standard text-only matching misses tabular or chart-derived facts. This prompt applies format-aware comparison logic to map a text claim to a table cell or a chart trend.
Bad Fit: Single-Modality Text-Only Workflows
Avoid when: All claims and evidence are plain text from a single document type. Risk: The cross-modal reasoning overhead adds latency and token cost without benefit. Guardrail: Use a simpler claim-to-evidence pairing prompt and reserve this for mixed-format source sets.
Required Inputs: Structured Source Blocks
What to watch: The prompt cannot reason over a raw PDF or screenshot. Guardrail: Pre-process documents into typed blocks (text, table, chart_description, structured_data) with stable identifiers. The prompt requires a [SOURCE_BLOCKS] array with block_type and block_id fields to anchor citations.
Operational Risk: Table-to-Text Hallucination
What to watch: The model may fabricate a table value that supports the claim when the actual table is ambiguous or the value is missing. Guardrail: Implement a post-processing validator that extracts the cited cell value from the original parsed table and performs an exact or tolerance-based match before accepting the output.
Operational Risk: Chart Description Drift
What to watch: If charts are ingested as model-generated descriptions, the evidence is already an interpretation. Matching a claim to a chart description compounds approximation errors. Guardrail: Where possible, provide extracted data series or chart axes as structured data blocks. Flag all chart-description-based matches as lower confidence.
Variant: Numerical Tolerance Configuration
What to watch: A claim stating 'revenue grew 12%' may match a table showing '11.8%' depending on your tolerance window. Guardrail: Expose a [TOLERANCE_CONFIG] variable defining acceptable percentage-point or absolute-value deviation per claim type. Route matches outside tolerance to human review.
Copy-Ready Prompt Template
A copy-paste system prompt for matching claims to evidence across text, tables, and structured data with format-aware comparison logic.
This prompt template is designed for verification systems that must handle claims where evidence spans multiple modalities—text passages, tables, charts, and structured data records. Unlike text-only evidence matching, this prompt instructs the model to apply format-aware comparison logic: it must normalize table rows into claim-equivalent statements, interpret chart descriptions as data points, and reconcile structured fields with natural language assertions. The template is structured to produce a consistent JSON output that downstream systems can validate, log, and route for human review when confidence is low or evidence is missing.
textYou are an evidence matching system that verifies claims against sources spanning text, tables, and structured data. Your task is to determine whether each claim is supported, contradicted, or unverifiable by the provided evidence, applying format-aware comparison logic. ## INPUT Claims to verify: [CLAIMS] Evidence sources (may include text passages, table representations, and structured data records): [EVIDENCE_SOURCES] ## FORMAT-AWARE COMPARISON RULES 1. **Text-to-Text Matching**: Compare claim assertions directly against textual evidence. Flag semantic equivalence, partial support, and direct contradiction. 2. **Table-to-Text Matching**: For tabular evidence, extract the relevant row and column values as a natural language statement before comparing to the claim. Example: a table row `| Q3 Revenue | $4.2M |` becomes "Q3 revenue was $4.2 million." Then compare this normalized statement to the claim. 3. **Structured Data-to-Text Matching**: For JSON, key-value pairs, or database records, convert the relevant fields into a declarative sentence before comparison. Example: `{"product": "WidgetX", "launch_date": "2024-03-15"}` becomes "WidgetX launched on March 15, 2024." 4. **Chart-to-Text Matching**: For chart descriptions or extracted chart data, identify the data series, axis values, and trend direction. Convert to a claim-equivalent statement before comparison. If only a chart description is provided (not raw data), note the interpretation layer in your confidence assessment. 5. **Numerical Comparisons**: When claims and evidence both contain numbers, apply a tolerance window of [NUMERICAL_TOLERANCE] for approximate matches. Flag exact matches, within-tolerance matches, and out-of-tolerance contradictions separately. 6. **Unit Normalization**: Before comparing numerical values, normalize units to a common standard. If units cannot be normalized (e.g., incompatible dimensions), flag as "incomparable" rather than supported or contradicted. 7. **Multi-Modality Corroboration**: When evidence from multiple formats supports the same claim, note the corroboration but do not double-count. When formats conflict (e.g., text says "increased" but table shows decrease), flag the contradiction with both sources cited. ## OUTPUT SCHEMA Return a JSON object with the following structure: ```json { "verification_results": [ { "claim_id": "string - identifier from input claims", "claim_text": "string - the original claim text", "verdict": "supported | contradicted | partially_supported | unverifiable | incomparable", "evidence_matches": [ { "source_id": "string - identifier from evidence sources", "source_type": "text | table | structured_data | chart_description", "relevant_excerpt": "string - the specific evidence text or normalized representation", "match_type": "direct_support | partial_support | contradiction | no_match", "normalization_applied": "string or null - describe any format normalization performed", "confidence": "high | medium | low", "explanation": "string - brief explanation of the match reasoning" } ], "overall_confidence": "high | medium | low", "missing_evidence_gap": "string or null - if unverifiable, describe what evidence would be needed", "cross_format_conflicts": [ { "source_a_id": "string", "source_b_id": "string", "conflict_description": "string" } ] } ], "unmatched_claims": ["claim_ids with zero evidence matches"], "normalization_notes": ["string - any global notes about format normalization challenges"] }
CONSTRAINTS
- Do not fabricate evidence. If no evidence addresses a claim, set verdict to "unverifiable" and populate
missing_evidence_gap. - For partial matches, explicitly identify which claim components are supported and which are not.
- When evidence sources conflict, report the conflict in
cross_format_conflictsrather than silently selecting one source. - If a table or structured data record is ambiguous, note the ambiguity in
normalization_appliedand reduce confidence. - Do not treat chart descriptions as equivalent to raw chart data. Flag the interpretation gap.
- For numerical claims, always document the tolerance window used in the explanation.
- If [RISK_LEVEL] is "high", mark any medium or low confidence results for human review.
EXAMPLES
[FEW_SHOT_EXAMPLES]
RISK LEVEL
[RISK_LEVEL]
To adapt this template for your system, start by defining your [CLAIMS] input format. Claims should be pre-extracted and assigned unique identifiers before reaching this prompt—this template assumes clean claim objects, not raw text. For [EVIDENCE_SOURCES], structure each source with an id, type field (one of text, table, structured_data, chart_description), and the content itself. If your retrieval system returns tables as markdown or HTML, preserve that formatting; the model's format-aware rules depend on recognizing table structure. The [NUMERICAL_TOLERANCE] placeholder should be replaced with a domain-appropriate value—for financial claims, ±1% may be appropriate; for scientific claims, you may need tighter windows. The [FEW_SHOT_EXAMPLES] placeholder is critical for cross-modal matching: include at least one example each of table-to-claim matching, structured-data-to-claim matching, and a cross-format conflict case. Set [RISK_LEVEL] to "high" for regulated domains where human review is mandatory for anything below high confidence. After pasting this prompt, validate the JSON output against the schema before allowing it to flow into downstream systems—malformed JSON in verification pipelines can silently drop claims from audit trails.
Prompt Variables
Required and optional inputs for the Evidence Matching Across Modalities Prompt. Each placeholder must be populated before the prompt is assembled and sent to the model. Validation notes describe how to programmatically check that the input is well-formed before incurring inference cost.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[CLAIM] | The discrete factual assertion to verify, extracted from upstream content | Q3 revenue grew 22% YoY to $4.1B as shown in the earnings chart | Must be a single atomic claim. Reject if length > 500 chars or contains multiple independent assertions. Use claim splitter upstream. |
[EVIDENCE_TEXT] | Unstructured text evidence passages retrieved from documents, transcripts, or knowledge bases | Management stated revenue reached $4.1 billion, representing 22% year-over-year growth. | Must be non-null string. If retrieval returns zero text results, set to empty string and expect [EVIDENCE_TABLE] or [EVIDENCE_STRUCTURED] to carry the load. |
[EVIDENCE_TABLE] | Tabular evidence such as CSV rows, spreadsheet extracts, or markdown tables | | Quarter | Revenue | YoY Growth | | Q3 2024 | $4.1B | 22% | | Must parse as valid CSV or markdown table with headers. Reject if unparseable. Null allowed when no tabular evidence exists. |
[EVIDENCE_STRUCTURED] | Structured data evidence as JSON key-value pairs, API responses, or database records | {"quarter": "Q3 2024", "revenue_billions": 4.1, "yoy_growth_pct": 22} | Must be valid JSON. Schema-free but must be parseable. Null allowed when no structured evidence exists. |
[EVIDENCE_IMAGE_DESCRIPTION] | Textual description of chart, graph, or image evidence generated by a vision model upstream | Bar chart titled Quarterly Revenue shows Q3 2024 bar at $4.1B with 22% YoY label | Must be non-empty string if image evidence was provided. If no image evidence, set to null. Reject if contains only 'no description available' without upstream retry. |
[OUTPUT_SCHEMA] | The exact JSON schema or format specification the model must conform to | {"claim": string, "matches": [{source_type, source_id, match_type, evidence_quote, confidence, explanation}]} | Must be valid JSON Schema or TypeScript interface. Validate with schema parser before prompt assembly. Reject if schema contains unresolvable $ref pointers. |
[DOMAIN] | The knowledge domain for calibrating evidence standards and terminology | financial_reporting | Must match one of the allowed domain enum values. Reject unknown domains. Controls tolerance windows, unit normalization rules, and authority weighting. |
[EVIDENCE_SOURCE_METADATA] | Provenance metadata for each evidence item including source ID, date, authority level, and format type | [{"source_id": "doc-42", "date": "2024-10-15", "authority": "primary", "format": "text"}] | Must be valid JSON array with at least one entry per evidence item. Each entry requires source_id and format fields. Date and authority optional but recommended. Reject if source_id is missing or duplicated. |
Implementation Harness Notes
How to wire the Evidence Matching Across Modalities prompt into a production verification pipeline with format-aware validation, retries, and human review gates.
The Evidence Matching Across Modalities prompt is not a standalone tool—it is a component inside a larger verification pipeline. The harness must handle format detection, evidence normalization, and output validation before the prompt result reaches a downstream consumer or a human reviewer. Because claims and evidence can arrive as plain text, markdown tables, JSON blobs, or chart descriptions, the application layer should pre-process inputs into a canonical representation before calling the model. This means extracting table rows into structured arrays, converting chart descriptions into labeled data points, and normalizing text claims into atomic, self-contained assertions. The prompt template expects [CLAIM] and [EVIDENCE] placeholders; the harness is responsible for populating them with format-annotated content so the model knows whether it is comparing text-to-table, table-to-text, or text-to-text.
Validation and retry logic. The model output must conform to a strict JSON schema that includes match_type (support/contradict/insufficient/partial), evidence_location (with format-specific pointers like row indices, column headers, or paragraph offsets), and comparison_logic (a human-readable explanation of how the cross-format comparison was performed). After each model call, run a schema validator. If the output fails validation, retry once with the validation error appended to the prompt as a [PREVIOUS_ERROR] block. If the second attempt also fails, route the claim-evidence pair to a human review queue with the raw model output and validation trace attached. Do not silently accept malformed outputs—cross-format evidence matching errors compound downstream when verification reports are generated.
Model selection and latency budgeting. Cross-modal reasoning benefits from models with strong structured data understanding. Prefer models that have demonstrated table-reading and chart-interpretation capabilities in your internal evals. For high-throughput pipelines, consider a two-tier architecture: a fast, cheaper model for clear text-to-text matches and a more capable model for table-to-text or chart-to-claim comparisons. The harness should inspect the evidence format at ingestion time and route accordingly. Log every routing decision, model choice, and latency measurement so you can tune thresholds over time.
Human review integration. When the model returns match_type: partial or match_type: insufficient, the harness should package the claim, evidence, model output, and source metadata into a structured review task. Include the comparison_logic field so reviewers can quickly assess whether the model's reasoning was sound. For regulated or high-stakes domains, require human sign-off on all contradict matches before they appear in verification reports. The harness should expose a review endpoint that accepts approve/override/reject decisions and logs them for audit.
Observability and eval hooks. Instrument the harness to log every prompt call with input hashes, output schemas, validation pass/fail status, retry count, and final disposition (auto-verified, escalated, errored). Run periodic eval sweeps using a golden dataset of cross-format claim-evidence pairs with known match types. Watch for format-specific failure modes: the model may correctly match text-to-text claims but hallucinate column mappings in table-to-text comparisons, or it may treat chart descriptions as literal text rather than visual data summaries. Your eval set should include equal representation of text, table, and chart-derived evidence to catch these skews before they reach production.
Expected Output Contract
Defines the structured JSON output for cross-modal evidence matching. Use this contract to validate model responses, parse fields into downstream verification pipelines, and detect malformed or incomplete matches before they propagate.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
match_id | string (UUID v4) | Must be a valid UUID v4 string. Reject if missing or not parseable as UUID. | |
claim_id | string | Must match the [CLAIM_ID] from the input claims array. Reject if claim_id not found in input set. | |
evidence_source | object | Must contain source_id (string), source_type (enum: text, table, chart, structured_data), and source_location (string). Reject if source_type is not a recognized modality. | |
match_type | enum | Must be one of: supports, contradicts, partially_supports, insufficient_evidence. Reject on unknown values. | |
matched_content | object | Must contain content_type (enum matching evidence_source.source_type), raw_excerpt (string), and normalized_representation (string). For tables, normalized_representation must be parseable as CSV or JSON array. For charts, must include extracted_data_points (array of objects with x and y values). | |
comparison_logic | string | Must be a non-empty string explaining how the evidence was compared to the claim, including format translation steps (e.g., 'Extracted table row 3 column 2 as numeric value 47.3, compared against claim value 47.3 within tolerance 0.1'). Reject if empty or fewer than 20 characters. | |
confidence_score | number (0.0-1.0) | Must be a float between 0.0 and 1.0 inclusive. Reject if out of range, null, or non-numeric. Values below 0.5 should trigger human review routing. | |
uncertainty_factors | array of strings | Must be a non-empty array of strings describing specific uncertainty sources (e.g., 'chart axis labels ambiguous', 'table cell merged across columns'). Reject if empty array or contains only generic strings like 'uncertain'. |
Common Failure Modes
What breaks first when matching claims to evidence across text, tables, and structured data, and how to guard against it.
Format Translation Errors
What to watch: The model misinterprets table structures, chart data, or numerical values when converting them to text for comparison. A claim about 'Q3 revenue' may be matched against Q2 data because the model misreads column headers or row labels. Guardrail: Pre-process structured data into explicit key-value text descriptions before evidence matching. Validate extracted values against source schema definitions.
Cross-Modal False Matches
What to watch: The model pairs a textual claim with a superficially similar but semantically different piece of evidence from another modality—matching 'revenue grew 12%' against a chart showing 12% market share. Guardrail: Require explicit modality tagging on all evidence chunks. Add a verification step that confirms the semantic category matches before accepting a cross-modal pair.
Numerical Precision Mismatch
What to watch: A claim states 'approximately 15%' while source data contains '15.3%' and the model flags it as a contradiction due to strict equality comparison. Guardrail: Define explicit tolerance windows per claim type. For percentage claims, default to ±1 percentage point unless the claim specifies tighter precision. Log all near-miss comparisons for human review.
Chart-to-Claim Axis Confusion
What to watch: The model misidentifies which axis, series, or data point a claim refers to in a chart—confusing 'customer count' with 'revenue' when both appear on dual-axis visualizations. Guardrail: Extract chart metadata (axis labels, legend entries, data series names) as structured fields before matching. Require the model to cite which specific chart element supports the match.
Temporal Misalignment Across Formats
What to watch: A claim references '2024 annual results' but the evidence table covers fiscal year 2024 ending in March, while the claim author meant calendar year 2024. The model treats them as the same period. Guardrail: Extract and normalize all date ranges with explicit period types (calendar, fiscal, trailing twelve months). Flag temporal mismatches even when year labels appear to match.
Missing Null Evidence Across Modalities
What to watch: The model fails to report 'no evidence found' when a claim's expected evidence format differs from what's available—searching for a textual statement when the answer only exists in a table, or vice versa. Guardrail: Run parallel evidence searches across all available modalities. Require explicit 'searched text sources, searched tables, searched structured data' reporting with per-modality null results documented.
Evaluation Rubric
Criteria for testing the quality of cross-modal evidence matches before shipping the prompt to production. Each criterion targets a specific failure mode in format-aware comparison logic.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Format-Aware Comparison | Evidence from tables, charts, and text is compared using format-appropriate logic (e.g., numerical tolerance for tables, semantic similarity for text). | Textual evidence is compared to a numerical claim using exact string matching, or a chart trend is described without referencing the underlying data. | Run 5 claims where evidence is in a different format than the claim. Check if the comparison logic adapts to the evidence format. |
Cross-Modal Source Attribution | Every piece of evidence includes a source identifier and format type (e.g., 'Source: doc_12, Table 3, Row 5'). | A claim is marked as 'supported' with a citation that points to a text paragraph when the actual evidence is in a chart, or the source format is omitted. | Audit 10 evidence matches. Verify that the [SOURCE_FORMAT] field is populated and matches the actual evidence location. |
Numerical Claim Tolerance Handling | Numerical comparisons between claims and tabular/chart data respect a defined tolerance window (e.g., ±2% or ±0.1). | A claim of 'revenue grew by 15%' is flagged as a contradiction because a table shows '14.8% growth'. | Test with 5 numerical claims where the true value is within a defined [TOLERANCE] of the claim. Check for false contradiction flags. |
Chart-to-Claim Trend Mapping | A claim about a trend (e.g., 'increased', 'declined', 'peaked') is correctly verified against the visual trend in a chart description or underlying data. | A claim that 'sales peaked in Q3' is marked as 'insufficient evidence' when a chart description clearly states 'Q3 had the highest sales'. | Provide 5 chart descriptions and corresponding trend claims. Verify that the match type is 'support' or 'contradict', not 'insufficient evidence'. |
Table-to-Text Evidence Extraction | Relevant cells from a table are correctly extracted and quoted as evidence for a claim, with row and column headers preserved. | Evidence for a claim about '2023 Q4 revenue' quotes a cell value without specifying the row context, making it ambiguous. | Test with 5 claims requiring evidence from multi-row tables. Check that quoted evidence includes [ROW_HEADER] and [COLUMN_HEADER]. |
Cross-Modal Conflict Detection | A contradiction is correctly flagged when textual evidence and tabular evidence from the same source disagree on the same fact. | A claim is marked as 'supported' by text but the table in the same source shows a conflicting number, and no conflict is raised. | Provide 3 source pairs with embedded text-table conflicts. Verify that the output includes a [CONTRADICTION_FLAG] and quotes both conflicting pieces of evidence. |
Missing Cross-Modal Evidence Flagging | When a claim requires chart or table evidence but only text is available, the output explicitly notes the missing format. | A claim about a specific data point is marked as 'insufficient evidence' without noting that a referenced chart could not be parsed. | Test with 5 claims where the required evidence format is absent. Check for an [EVIDENCE_GAP] note specifying the missing format. |
Structured Data Normalization | Units, currencies, and scales from tables and charts are normalized before comparison with claims (e.g., 'millions' vs 'billions'). | A claim stating '$1.2B' is flagged as contradicting a table cell showing '1,200' because the unit label ('in millions') was ignored. | Test with 5 claims where the evidence has different units or scales. Verify that the [NORMALIZED_VALUE] in the output matches the claim's scale. |
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
Start with the base prompt and a single modality pair (e.g., text claim → table evidence). Remove strict schema enforcement and use loose JSON or markdown output. Focus on getting the format-aware comparison logic right before adding validation.
Simplify the [EVIDENCE_MODALITIES] field to one or two types. Replace [OUTPUT_SCHEMA] with a plain-language description of the expected fields. Skip confidence scoring and just flag matches as 'match', 'partial', or 'no match'.
Watch for
- Table-to-text comparisons that hallucinate cell values
- Chart descriptions that invent data points not present in the image
- Missing format-awareness: the model treats a table as unstructured text
- Overly broad match claims when evidence format differs from claim format

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