This prompt is designed for verification engineers and AI pipeline builders who need to programmatically check natural language claims against structured tabular evidence. The core job is to take a list of textual assertions and a source table, then produce a structured, cell-level verdict for each claim. This is not a general-purpose question-answering prompt; it is a precision verification tool for workflows where the evidence is already retrieved and formatted as a table, and the output must be machine-readable for downstream routing, scoring, or human review.
Prompt
Text-Claim-to-Table-Evidence Cross-Format Verification Prompt

When to Use This Prompt
Define the verification job, the required inputs, and the operational constraints for checking textual claims against tabular source data.
Use this prompt when you have a pre-extracted set of atomic claims and a single source table that should contain the relevant evidence. The prompt is ideal for audit workflows, financial report reconciliation, scientific claim verification against published datasets, and any scenario where a human-readable statement must be traced to a specific row, column, and cell. It enforces numerical tolerance checks, unit normalization, and aggregation-mismatch detection, making it suitable for quantitative claims. Do not use this prompt for open-ended retrieval, multi-table joins, or claims that require logical inference beyond direct cell lookup. The prompt assumes the evidence is present and the primary task is matching and validation, not search.
Before integrating this prompt into a production harness, you must define clear failure boundaries. The prompt will struggle with implicit claims that require interpreting table headers, complex multi-step calculations, or claims that span multiple rows without explicit aggregation. It is also sensitive to table formatting; malformed CSV, merged cells, or ambiguous column names will degrade accuracy. Plan for a validation layer that checks the output schema, verifies cell references exist in the source table, and flags any verdicts with low confidence or missing citations. For high-stakes domains like financial auditing or clinical data verification, always route claims with aggregation mismatches or unit conflicts to a human reviewer with the full evidence packet.
The ideal user is a technical builder integrating this prompt into a larger verification pipeline. You should already have a claim extraction step and a table normalization step upstream. The output of this prompt is designed to feed into a scoring, triage, or reporting system. If you are a business user looking for a one-off fact-check, this structured playbook is overkill; use a simpler direct-query prompt instead. If you are building a product where verification results must be auditable and explainable, this prompt provides the citation discipline and structured output you need.
Use Case Fit
Where the Text-Claim-to-Table-Evidence Cross-Format Verification Prompt works, where it fails, and the operational prerequisites for production use.
Good Fit: Structured Numerical Claims
Use when: verifying textual claims that assert specific numbers, percentages, or statistical values against a source table. Why: The prompt excels at cell-level citation and numerical tolerance checks when the claim is quantitative and the evidence is tabular.
Bad Fit: Subjective or Qualitative Claims
Avoid when: the textual claim expresses opinion, sentiment, or qualitative judgment without a numerical anchor. Risk: The model may hallucinate a numerical mapping or produce a misleading 'unverifiable' verdict when a simple 'out of scope' classification is correct.
Required Inputs: Claim-Evidence Pairs
Requirement: Each run needs a discrete textual claim and the specific table or spreadsheet range intended as evidence. Guardrail: Do not pass entire documents; pre-chunk tables and claims to avoid the model matching a claim against the wrong table in a multi-table document.
Operational Risk: Unit Normalization Failures
What to watch: The claim says 'revenue grew by $2M' but the table is in thousands of dollars. Guardrail: Implement a pre-processing step to detect and normalize units, or add explicit unit-declaration fields to the prompt's input schema to prevent off-by-factor-of-1000 errors.
Operational Risk: Aggregation Mismatches
What to watch: The claim states a total that requires summing multiple table rows, but the model uses a single cell or an incorrect subset. Guardrail: Require the output to list every cell included in an aggregation and validate the count against the table's structure in post-processing.
Not a Replacement for ETL Validation
Avoid when: you need 100% deterministic reconciliation of a dashboard to a database. Risk: LLM-based verification is probabilistic and can miss errors a SQL query would catch. Guardrail: Use this prompt for triage and flagging, but pair it with deterministic checks for high-stakes financial or compliance reporting.
Copy-Ready Prompt Template
A reusable prompt template for verifying textual claims against tabular source data with cell-level citations and numerical tolerance checks.
This prompt template is designed to be copied directly into your verification harness. It accepts a list of textual claims and a tabular evidence source, then produces a structured verdict for each claim. The template uses square-bracket placeholders that you must replace with your actual inputs, constraints, and output schema before execution. Every placeholder is designed to be filled programmatically by your application layer—never by asking the model to guess missing values.
textYou are a cross-format verification engine. Your task is to check each textual claim in [CLAIMS_LIST] against the tabular evidence provided in [TABLE_DATA]. For each claim, produce a verification record that follows [OUTPUT_SCHEMA] exactly. ## Evidence Table [TABLE_DATA] ## Claims to Verify [CLAIMS_LIST] ## Verification Rules - Match claims to specific cells using [ROW_IDENTIFIER] and [COLUMN_IDENTIFIER] references. - Apply a numerical tolerance of [TOLERANCE] when comparing numeric values. - Normalize units according to [UNIT_NORMALIZATION_RULES] before comparison. - If a claim aggregates multiple cells, verify the aggregation logic using [AGGREGATION_METHOD]. - Flag any claim that cannot be matched to evidence as [UNVERIFIABLE_LABEL]. - Flag any claim where the evidence contradicts the claim as [CONTRADICTED_LABEL]. - Flag any claim where aggregation produces a mismatch beyond tolerance as [AGGREGATION_MISMATCH_LABEL]. ## Constraints [CONSTRAINTS] ## Output Format Return a JSON object with a "verifications" array. Each element must match [OUTPUT_SCHEMA]. Do not include commentary outside the JSON. ## Examples [EXAMPLES]
To adapt this template for production, replace each placeholder with concrete values from your pipeline. [CLAIMS_LIST] should be a pre-extracted array of atomic claims from your claim decomposition step. [TABLE_DATA] should be the raw tabular source, formatted as markdown tables, CSV, or JSON depending on your model's strengths. [OUTPUT_SCHEMA] must be a strict JSON Schema definition that includes fields for claim_id, verdict, matched_cells, tolerance_check_result, aggregation_check_result, and flags. Set [TOLERANCE] to a domain-appropriate value—0.0 for exact matches in financial reconciliation, or a percentage for statistical claims. Define [UNIT_NORMALIZATION_RULES] explicitly, such as "convert all currency values to USD using exchange rates from [DATE]" or "normalize all percentages to decimal form." The [EXAMPLES] placeholder should contain at least two few-shot examples showing correct cell-reference formatting and tolerance application. If your risk level is high, add a human-review routing instruction in [CONSTRAINTS] that triggers when confidence is below a threshold.
Prompt Variables
Required inputs for the Text-Claim-to-Table-Evidence Cross-Format Verification Prompt. Each placeholder must be populated before the prompt is assembled and sent to the model. Validation notes describe how to check that the input is well-formed before execution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[TEXT_CLAIMS] | Array of atomic textual claims to verify against tabular evidence | ["Revenue grew 12% YoY to $4.2B", "Customer churn dropped below 2% in Q3"] | Must be a JSON array of strings. Each claim must be a single verifiable assertion. Reject if claims contain multiple facts or ambiguous pronouns without referents. |
[TABLE_DATA] | Tabular source data in structured format against which claims are checked | {"headers": ["Quarter", "Revenue ($B)", "Churn (%)"], "rows": [["Q2", 3.75, 2.3], ["Q3", 4.2, 1.8]]} | Must include column headers with units where applicable. Rows must be consistent in column count. Reject if headers are missing or ambiguous. Prefer CSV or JSON array-of-arrays format. |
[TABLE_SCHEMA] | Metadata describing column types, units, and aggregation logic | {"columns": [{"name": "Revenue ($B)", "type": "numeric", "unit": "billions USD", "aggregation": "sum"}]} | Each column referenced in claims must have a schema entry. Unit field is required for numeric columns. Set to null for non-numeric columns. Reject if schema-to-header mapping is incomplete. |
[NUMERIC_TOLERANCE] | Acceptable percentage deviation for numerical claim verification | 0.05 | Must be a float between 0.0 and 1.0 representing percentage as decimal. Default to 0.02 if not specified. Reject if negative or greater than 1.0. Tolerance applies after unit normalization. |
[AGGREGATION_RULES] | Rules for how table values should be aggregated when claims reference derived figures | {"YoY_growth": "(current - previous) / previous", "Q3_definition": "calendar quarter ending September 30"} | Must be a JSON object mapping aggregation names to formulas or definitions. Required when claims reference computed values not directly present in table cells. Reject if formula references undefined columns. |
[OUTPUT_SCHEMA] | Expected structure for the verification output per claim | {"claim": "string", "verdict": "supported|contradicted|unverifiable", "cell_citations": [{"row": int, "column": string}], "numerical_match": {"expected": float, "actual": float, "within_tolerance": bool}} | Must be a valid JSON Schema or example structure. Include fields for verdict, citations, and numerical comparison results. Reject if schema lacks citation or verdict fields. |
[CONTEXT_NOTES] | Additional context about data provenance, known limitations, or special handling instructions | "Table data sourced from Q3 earnings report filed 2024-10-15. Revenue figures exclude one-time charges. Churn calculated as monthly average." | Optional string. Use to communicate data caveats that affect verification logic. Null allowed. If provided, must not contradict [TABLE_SCHEMA] or [AGGREGATION_RULES]. |
Implementation Harness Notes
How to wire the Text-Claim-to-Table-Evidence prompt into a production verification pipeline with validation, retries, and human review.
This prompt is designed as a single step within a larger verification pipeline. It expects a pre-extracted textual claim and a pre-parsed, structured table as input. The application layer is responsible for claim decomposition, table parsing, and unit normalization before this prompt is called. Do not send raw documents or unparsed spreadsheets directly to this prompt; the model's ability to reason over raw table formats is inconsistent, and you will lose the cell-level citation precision that makes this workflow auditable. The prompt should be treated as a stateless function: one claim, one table, one verdict per call. Batching multiple claims in a single request is possible but increases the risk of cross-claim confusion and makes per-claim retry logic harder to implement.
Input Preparation: Before calling the prompt, normalize the table into a markdown or JSON structure with explicit row and column headers. Parse the textual claim into an atomic, self-contained statement that does not reference other claims. Normalize units in both the claim and the table to a common representation (e.g., 'million USD' vs 'USD × 10^6'). If the claim contains an aggregation (sum, average, percentage), pre-compute the expected value from the table in your application code and pass it as a separate [EXPECTED_AGGREGATION] field. The model should verify your calculation, not perform it from scratch. For numerical claims, define a tolerance window in the [TOLERANCE] field based on the precision of the source data (e.g., ±0.5 for rounded integers, ±0.1% for financial figures).
Output Validation and Retries: The prompt returns a structured JSON verdict. Your harness must validate this output against a strict schema before accepting it. Check that every cell_reference field contains a valid row and column identifier that exists in the input table. If the model returns a cell reference that does not exist, reject the output and retry with an error message appended to the prompt context. Implement a maximum of two retries for schema violations. For UNVERIFIABLE verdicts, log the specific reason code and route to a human review queue if the claim is high-priority. For CONTRADICTED verdicts, flag the specific cells for downstream remediation. Never silently accept a verdict that lacks cell-level citations when the claim type requires them.
Model Choice and Latency: This prompt requires strong instruction-following and structured output capabilities. Use a model with native JSON mode or function-calling support to enforce the output schema. GPT-4o, Claude 3.5 Sonnet, and Gemini 1.5 Pro are suitable. Avoid smaller or older models that may hallucinate cell references or skip the numerical tolerance check. Set temperature=0 to maximize reproducibility. Expect latency of 2-5 seconds per claim-table pair. For batch verification, parallelize calls rather than sending large multi-claim requests. Implement a circuit breaker that pauses processing if the error rate exceeds 10% within a rolling window, indicating a possible prompt drift or model behavior change.
Human Review Integration: Route all CONTRADICTED verdicts and any UNVERIFIABLE verdicts with reason code AGGREGATION_MISMATCH or UNIT_AMBIGUITY to a human review queue. Package the original claim, the full table, the model's verdict, and the specific cell references into a structured review packet. The reviewer should confirm or overturn the machine verdict within your review UI, and their decision should be logged as ground truth for future eval dataset construction. For SUPPORTED verdicts, sample 5-10% for human spot-checking to detect false positives. This sampling rate can decrease over time as your eval scores demonstrate reliability, but never drop below 1% for high-stakes verification domains.
Logging and Observability: Log every prompt call with the claim ID, table source hash, model version, prompt template version, raw response, parsed verdict, and validation status. This audit trail is essential for debugging false positives and for demonstrating verification rigor to compliance stakeholders. Track the distribution of verdict types over time; a sudden shift toward UNVERIFIABLE may indicate a data quality issue upstream, while a spike in CONTRADICTED may signal a change in the source content. Set up alerts on schema validation failure rate and on the ratio of retries to successful calls. These metrics will catch prompt regressions before they corrupt your verification pipeline.
Expected Output Contract
Define the exact fields, types, and validation rules for the structured verdict object returned by the Text-Claim-to-Table-Evidence verification prompt. Use this contract to build downstream parsers, validators, and audit logs.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
verdict_id | string (UUID v4) | Must be a valid UUID v4 string. Parse check. | |
claim_id | string | Must match the claim_id from the input claims array. Cross-reference check. | |
status | enum: SUPPORTED | REFUTED | UNVERIFIABLE | Must be one of the three allowed enum values. Schema check. | |
evidence_cell_references | array of strings | Each string must match a valid cell address pattern (e.g., 'Sheet1!A1'). Regex validation. Array must not be empty if status is SUPPORTED or REFUTED. | |
numerical_tolerance_applied | object | null | If present, must contain 'value' (number) and 'unit' (string). Null allowed. Schema check. | |
aggregation_mismatch_flag | boolean | Must be true if the claim's aggregation level differs from the evidence's. Defaults to false. Type check. | |
explanation | string | Must be a non-empty string summarizing the reasoning. Length > 0. Null not allowed. | |
confidence | number | Must be a float between 0.0 and 1.0 inclusive. Range check. |
Common Failure Modes
When verifying textual claims against tabular evidence, these failure modes surface first in production. Each card explains what breaks and how to guard against it.
Cell-Reference Hallucination
What to watch: The model cites a specific cell (e.g., 'Row 4, Column C') that does not exist or contains different data. This happens when the model reconstructs table structure from memory rather than reading coordinates precisely. Guardrail: Require the model to quote the exact cell value alongside its coordinates. Post-process citations against the source table schema to validate row and column existence before accepting any verdict.
Unit Normalization Blindness
What to watch: A text claim states a value in millions while the table stores raw units, or vice versa. The model compares the digits without normalizing units, producing false matches or false contradictions. Guardrail: Include an explicit unit-normalization step in the prompt that extracts and converts units before comparison. Add a tolerance window for rounding differences and flag any claim-evidence pair where units cannot be reliably normalized.
Aggregation Scope Mismatch
What to watch: The text claim refers to an annual total, but the table only provides quarterly breakdowns. The model either sums incorrectly, ignores the temporal mismatch, or hallucinates a total row. Guardrail: Instruct the model to explicitly state the aggregation level of both the claim and the available table data. If they differ, require the model to flag the mismatch rather than silently computing a sum or accepting a partial match.
Row-Entity Disambiguation Failure
What to watch: The text claim references 'Acme Corp' but the table contains 'Acme Corporation (US)' and 'Acme Ltd (UK)'. The model picks the wrong entity or merges their data. Guardrail: Require entity resolution before evidence matching. Prompt the model to list all candidate rows that could match the claim's entity, explain which it selected and why, and flag any ambiguity for human review.
Null-Value Misinterpretation
What to watch: The table contains empty cells, 'N/A', or zero values. The model treats a missing value as confirmation that no data exists, or conflates zero with null, producing incorrect verdicts. Guardrail: Add a null-handling policy to the prompt: distinguish between 'value is zero', 'value is missing', and 'value is not applicable'. Require the model to state which case applies before rendering a verdict on any claim involving that cell.
Header-Label Drift
What to watch: The text claim uses a different label for the same metric than the table header (e.g., 'Revenue' vs. 'Net Sales'). The model fails to recognize they refer to the same column and reports a missing-evidence false negative. Guardrail: Include a semantic-column-mapping step that asks the model to identify which table column best corresponds to the claim's metric, explain the mapping rationale, and flag cases where no column is a reasonable match.
Evaluation Rubric
Criteria for testing the Text-Claim-to-Table-Evidence Cross-Format Verification Prompt before production deployment. Each row defines a pass standard, a failure signal, and a concrete test method.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Cell-Level Citation Accuracy | Every verdict references a specific [TABLE_ROW] or [CELL_RANGE] that exists in the source table | Citation points to a non-existent row, column, or cell; citation is vague (e.g., 'the table shows') | Parse output citations against source table schema; assert all [CELL_REF] values resolve to valid coordinates |
Numerical Tolerance Compliance | All numerical comparisons respect the [TOLERANCE] parameter; values within tolerance are marked VERIFIED | A claim matching source data within tolerance is marked FALSE or MISLEADING; tolerance window is ignored | Inject claims with values offset by exactly [TOLERANCE] ± epsilon; assert verdict boundary behavior is correct |
Unit Normalization Correctness | Claims using different units than the source table are normalized before comparison; normalization method is logged | A claim stating '50%' is compared raw against a source value of '0.5' without conversion; unit mismatch is silently ignored | Provide claims in alternate units (percentages, thousands, different currencies); verify normalization step appears in reasoning trace |
Aggregation Mismatch Flagging | Claims summarizing across rows or columns are flagged with AGGREGATION_MISMATCH when the source table does not support that aggregation | A claim stating 'total revenue was X' is marked VERIFIED against a table that only contains quarterly breakdowns without a total row | Supply a table without subtotals and a claim asserting a total; assert output includes AGGREGATION_MISMATCH flag with explanation |
Missing Evidence Handling | Claims about data not present in the table receive verdict INSUFFICIENT_EVIDENCE, not FALSE | A claim about a metric absent from the table is marked FALSE instead of INSUFFICIENT_EVIDENCE; model confuses absence of evidence with evidence of falsehood | Include claims referencing columns or entities not in the source table; assert verdict is INSUFFICIENT_EVIDENCE with null citation |
Multi-Table Disambiguation | When [SOURCE_TABLES] contains multiple tables, the correct source table is identified and cited per claim | Citation references 'Table 1' when the evidence is in 'Table 2'; model conflates similarly-named tables | Provide two tables with overlapping column names but different data; assert each claim cites the correct table identifier |
Output Schema Validity | Every output record conforms to [OUTPUT_SCHEMA] with all required fields present and correctly typed | Missing required field, wrong type (string instead of number), or extra fields not in schema | Validate output with JSON Schema matching [OUTPUT_SCHEMA]; assert no validation errors across a batch of 50+ claims |
Confidence Score Calibration | Confidence scores correlate with evidence strength; high-confidence VERIFIED claims have exact cell matches; low-confidence claims have ambiguity | High confidence assigned to a claim matched against an ambiguous cell; confidence is uniformly high regardless of match quality | Annotate 20 claim-table pairs with expected confidence ranges; assert Spearman correlation > 0.7 between expected and actual scores |
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 claim-table pair. Use a frontier model (GPT-4o, Claude 3.5 Sonnet) with default temperature. Skip formal schema validation—just check that the output contains a verdict, a cell reference, and a tolerance note. Manually review 10–20 outputs to calibrate your tolerance windows and unit-normalization rules before hardening.
Prompt snippet
codeClaim: [CLAIM_TEXT] Table: [TABLE_AS_MARKDOWN_OR_CSV] For the claim above, return: - Verdict: SUPPORTED | CONTRADICTED | UNVERIFIABLE - Cell reference(s): [row, column] that support or contradict - Tolerance check: pass/fail with explanation
Watch for
- Cell references that point to the wrong row or column
- Unit mismatches (e.g., millions vs. thousands) silently ignored
- Aggregation errors where the model sums incorrectly
- Overconfident verdicts on sparse or ambiguous tables

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