Inferensys

Prompt

Inconsistency Audit Prompt for Long-Form Reports

A practical prompt playbook for auditing long-form reports for internal contradictions, numerical disagreements, and logical inconsistencies before publication or regulatory submission.
Developer doing prompt engineering on laptop, prompt variations visible on screen, casual coding session.
PROMPT PLAYBOOK

When to Use This Prompt

Understand the job-to-be-done, the ideal user, and the operational boundaries for the Inconsistency Audit Prompt.

This prompt is designed for a specific, high-stakes job: systematically auditing a single long-form document to find internal contradictions before it reaches a critical audience. The ideal user is a compliance officer preparing a regulatory filing, an editorial team lead finalizing an annual report, or a verification engineer building an automated quality gate for published content. The core assumption is that you have the complete, final draft of a report—such as a financial disclosure, a clinical study, a legal brief, or a technical specification—and you need to ensure it does not contradict itself on facts, figures, dates, or logical conclusions. The prompt performs a structured, section-by-section comparison to produce traceable findings, not a vague summary, making each flagged issue directly actionable for a human reviewer.

You should use this prompt when the cost of an internal inconsistency is high and manual line-by-line comparison is too slow or error-prone. For example, a financial report stating a revenue figure of $4.2M in the executive summary and $3.9M in the detailed financials creates a material error that undermines credibility. Similarly, a clinical document that describes a treatment as 'contraindicated for patients under 18' in one section and 'safe for adolescent use' in another presents a safety risk. The prompt is built to catch these exact classes of errors—numerical disagreements, temporal impossibilities, direct logical conflicts, and definitional drift—and to cite the conflicting sections precisely so a human can resolve the discrepancy with full context.

Do not use this prompt as a general-purpose proofreader or grammar checker; it is not designed to catch spelling mistakes, stylistic inconsistencies, or formatting errors. It is also not a fact-checker against external ground truth—it only compares the document against itself. If you need to verify claims against a knowledge base or external sources, you should pair this prompt with a separate evidence-matching workflow from the Fact Checking pillar. Finally, avoid using this prompt on short documents (under a few pages) where a manual review is trivial, or on documents that are still in early draft stages with known incomplete sections, as the prompt will flag intentional placeholders and unresolved decisions as contradictions, generating noise that wastes reviewer time. For best results, run this audit on a content-complete, near-final draft as a pre-publication or pre-submission gate.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Inconsistency Audit Prompt delivers reliable value and where it introduces unacceptable risk. Use these cards to decide whether this prompt fits your workflow before integrating it into a production pipeline.

01

Good Fit: Structured Long-Form Reports

Use when: auditing finalized reports with clear section headings, numbered paragraphs, or stable document structure. The prompt excels at systematic section-by-section comparison where anchors are explicit. Guardrail: pre-process the document to extract and number sections before invoking the audit prompt to ensure stable references.

02

Bad Fit: Real-Time or Streaming Text

Avoid when: applying this prompt to live chat, streaming transcripts, or incomplete drafts. The pairwise comparison logic assumes a stable, complete text. Partial content produces false positives from unfinished thoughts. Guardrail: gate invocation behind a document-finalization signal and reject inputs below a minimum section count.

03

Required Inputs: Sectioned Source Document

Risk: the prompt silently fails or hallucinates references when given unstructured prose without clear internal boundaries. Guardrail: require a pre-processing step that segments the document into labeled sections. Validate that at least three distinct sections exist before calling the audit prompt, and abort with a clear error message otherwise.

04

Operational Risk: High Token Consumption

Risk: long reports with many sections trigger O(n²) pairwise comparisons, consuming significant context window and inference budget. Costs scale quadratically with section count. Guardrail: implement a section cap (e.g., 20 sections) and split larger documents into batches. Monitor token usage per audit run and set hard budget limits before deployment.

05

Operational Risk: False Positives from Paraphrasing

Risk: the model flags stylistic variation or legitimate restatement as inconsistency, overwhelming reviewers with noise. Guardrail: add explicit instructions distinguishing paraphrasing from contradiction. Implement a confidence threshold filter and route low-confidence flags to a secondary classification prompt before surfacing to humans.

06

Domain Constraint: Regulatory Compliance Workflows

Risk: in regulated domains, an undetected inconsistency can become a compliance finding. The prompt alone cannot guarantee completeness. Guardrail: never use this prompt as the sole verification step for compliance submissions. Always pair with human review, maintain an audit trail of prompt versions and outputs, and document coverage gaps explicitly.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A reusable prompt template for auditing long-form reports for internal inconsistencies, with placeholders for report content, audit scope, and output schema.

This prompt template is designed to be pasted directly into your prompt layer or AI harness. It accepts a long-form report and performs a systematic, section-by-section audit to identify internal contradictions, temporal inconsistencies, numerical disagreements, and logical conflicts. The template uses square-bracket placeholders that you must replace with your specific report content, audit parameters, and output format requirements before execution. The prompt is structured to force pairwise comparison logic and produce structured findings with precise section references, making it suitable for compliance, editorial, and quality assurance workflows where traceability is mandatory.

text
You are an inconsistency audit system. Your task is to perform a systematic, section-by-section audit of the provided long-form report to identify internal contradictions, temporal inconsistencies, numerical disagreements, and logical conflicts.

## REPORT TO AUDIT
[REPORT_CONTENT]

## AUDIT SCOPE
- Sections to include: [SECTION_LIST or "all sections"]
- Comparison depth: [PAIRWISE_ALL | ADJACENT_ONLY | KEY_CLAIMS]
- Inconsistency categories to flag: [CONTRADICTION | TEMPORAL | NUMERICAL | LOGICAL | ALL]
- Minimum severity threshold: [LOW | MEDIUM | HIGH | CRITICAL]

## AUDIT METHOD
1. Extract all verifiable factual claims from each section, preserving original text and section identifiers.
2. Perform pairwise comparison of claims across the specified sections.
3. For each potential inconsistency, classify it into one of the requested categories.
4. Assign a severity rating based on: factual materiality, downstream consequence, and correction urgency.
5. For each finding, provide the conflicting statements with exact section references and quote the original text.

## OUTPUT SCHEMA
Return a JSON object with this exact structure:
{
  "audit_metadata": {
    "report_title": "string",
    "sections_audited": ["string"],
    "total_claims_extracted": number,
    "total_comparisons_performed": number,
    "findings_count": number
  },
  "findings": [
    {
      "finding_id": "string",
      "category": "CONTRADICTION | TEMPORAL | NUMERICAL | LOGICAL",
      "severity": "LOW | MEDIUM | HIGH | CRITICAL",
      "statement_a": {
        "section": "string",
        "paragraph": number or "string",
        "quoted_text": "string"
      },
      "statement_b": {
        "section": "string",
        "paragraph": number or "string",
        "quoted_text": "string"
      },
      "conflict_description": "string explaining the nature of the inconsistency",
      "resolution_recommendation": "string suggesting how to resolve the conflict",
      "requires_human_review": boolean
    }
  ],
  "coverage_summary": {
    "sections_without_findings": ["string"],
    "sections_with_findings": ["string"],
    "comparison_matrix_complete": boolean
  }
}

## CONSTRAINTS
- Only flag genuine inconsistencies. Do not flag rhetorical devices, conditional statements, or legitimate context shifts as contradictions.
- When the same fact is stated differently but not contradictorily, classify as consistent.
- For numerical claims, apply a tolerance window of [TOLERANCE_PERCENT or "5%"] before flagging.
- If a potential inconsistency is ambiguous, set requires_human_review to true and explain the ambiguity.
- Do not fabricate findings. If no inconsistencies exist, return an empty findings array with complete coverage_summary.
- Preserve exact quoting: do not paraphrase or alter the original text in quoted_text fields.

## EXAMPLES
[FEW_SHOT_EXAMPLES or "No examples provided. Proceed with the audit using the method described above."]

## RISK LEVEL
[RISK_LEVEL or "MEDIUM"] - [CUSTOM_RISK_NOTE or "Audit findings should be reviewed by a human before publication or regulatory submission."]

To adapt this template, replace the square-bracket placeholders with your specific values. For [REPORT_CONTENT], paste the full text of the report to be audited. For [SECTION_LIST], provide a comma-separated list of section identifiers if you want to limit the audit scope; otherwise use "all sections". Choose the comparison depth based on your thoroughness requirements: PAIRWISE_ALL compares every section against every other section (most thorough, highest token cost), ADJACENT_ONLY compares neighboring sections, and KEY_CLAIMS extracts only major claims for comparison. Set [TOLERANCE_PERCENT] to control numerical comparison sensitivity—5% is a reasonable default for most business reports. The [FEW_SHOT_EXAMPLES] placeholder can be populated with 2-3 example finding objects to calibrate the model's severity judgments and category classifications. For high-stakes audits in regulated domains, set [RISK_LEVEL] to HIGH and add a custom risk note about mandatory human review before any downstream action.

Before deploying this prompt into a production pipeline, validate the output against the JSON schema using a programmatic validator. Common failure modes include the model returning findings without exact quoted_text (paraphrasing instead), missing the coverage_summary when no findings exist, or misclassifying rhetorical questions as logical conflicts. Build a retry layer that catches schema validation errors and resubmits with explicit formatting reminders. For reports exceeding the model's context window, chunk the report into sections and run multiple audits, then merge findings with a deduplication pass. Always log the full prompt, response, and validation result for audit trail purposes, especially when findings trigger corrections in published documents.

IMPLEMENTATION TABLE

Prompt Variables

Required inputs for the Inconsistency Audit Prompt. Each placeholder must be populated before the prompt is sent. Validation notes describe how to check that the input is well-formed and safe.

PlaceholderPurposeExampleValidation Notes

[REPORT_TEXT]

The full body of the long-form report to audit for internal inconsistencies.

The Q3 2024 Compliance Review Report...

Check: non-empty string, length > 500 chars. Warn if > 100k chars to avoid context truncation. Must be plain text or markdown; strip binary artifacts.

[AUDIT_SCOPE]

Defines which sections, claim types, or domains to include in the audit.

Sections 3-7; numerical claims and dates only

Check: parse as list of section names or claim categories. Reject if empty. Map each scope item to a section heading found in [REPORT_TEXT]; flag unmatched scopes.

[CONTRADICTION_CATEGORIES]

The taxonomy of inconsistency types the model should detect.

Direct Contradiction, Numerical Disagreement, Temporal Inconsistency, Logical Conflict

Check: must be a non-empty list of strings from the approved taxonomy. Reject unknown categories. Default to all categories if omitted.

[OUTPUT_SCHEMA]

The exact JSON schema or field specification the output must conform to.

{"findings": [{"id": "...", "category": "...", "statement_a": {...}, "statement_b": {...}, "severity": "...", "recommendation": "..."}]}

Check: validate as parseable JSON Schema or TypeScript interface. Must include required fields: id, category, statement_a, statement_b, severity, recommendation. Reject schemas missing required fields.

[SEVERITY_RUBRIC]

Defines the criteria for assigning severity levels to findings.

Critical: factual error with regulatory impact. High: logical conflict in core argument. Medium: numerical mismatch within tolerance. Low: stylistic or phrasing inconsistency.

Check: must be a non-empty map of severity levels to definitions. Each level must have a distinct, testable definition. Warn if definitions overlap or are subjective.

[COVERAGE_REQUIREMENT]

Specifies whether the audit must be exhaustive (all section pairs) or sampled.

Exhaustive: compare every section to every other section.

Check: must be 'Exhaustive' or 'Sampled: [N] pairs'. If sampled, N must be an integer > 0. Exhaustive audits on reports > 50k chars should trigger a cost warning.

[FALSE_POSITIVE_FILTERS]

Instructions for excluding known non-contradictions like rhetorical devices or conditional statements.

Ignore statements in 'Forward-Looking Statements' section. Ignore hypotheticals and questions.

Check: must be a list of exclusion rules. Each rule should reference a section name, a linguistic pattern, or a claim type. Validate that referenced sections exist in [REPORT_TEXT].

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the inconsistency audit prompt into a production verification pipeline with validation, retries, and human review.

The Inconsistency Audit Prompt is designed to be a single step in a larger document verification pipeline. It should not be called in isolation without upstream content preparation and downstream validation. Before invoking this prompt, the long-form report must be segmented into clearly labeled sections with stable identifiers. The prompt expects a structured input containing a report_title, a sections array where each object has a section_id and text, and an optional coverage_instructions field to specify which section pairs to compare. If your document is a raw PDF or DOCX, you must first run a layout-aware extraction step to produce this structured input. Do not pass raw binary data or unstructured markdown directly to this prompt.

The prompt returns a JSON object containing an audit_findings array. Each finding must include conflicting_sections (a list of section IDs), inconsistency_category (from a controlled vocabulary like direct_contradiction, numerical_disagreement, temporal_inconsistency, terminology_mismatch, logical_conflict), statement_a and statement_b (the exact conflicting text excerpts), explanation, and severity (e.g., critical, major, minor). A coverage_report object should also be returned, listing which section pairs were compared and which were skipped. To integrate this into an application, wrap the LLM call in a harness that: (1) validates the output JSON against this schema, (2) checks that all referenced section_id values exist in the input, (3) verifies that statement_a and statement_b are verbatim substrings of the source sections (or flags extraction errors if not), and (4) confirms the coverage_report matches the requested comparison scope. If validation fails, retry once with the validation errors appended to the prompt as [PREVIOUS_OUTPUT_ERRORS]. If the retry also fails, route the document to a human review queue with the partial results and error context.

For high-stakes compliance or editorial workflows, never auto-apply corrections based on this prompt's output. The correction_recommendation field in each finding is a suggestion for a human reviewer, not an executable edit. Log every audit run with the input document version, the full prompt payload, the raw model response, the validation results, and the reviewer's final disposition for each finding. This audit trail is essential for governance and for measuring the prompt's precision and recall over time. When choosing a model, prefer those with strong instruction-following and structured output capabilities. For reports exceeding the model's context window, implement a sliding window or hierarchical audit strategy: first audit within each major section, then audit across section clusters, and finally merge findings with deduplication logic. Avoid the temptation to skip the coverage report validation—it is your primary defense against silent failures where the model audits only the first few sections and ignores the rest.

IMPLEMENTATION TABLE

Expected Output Contract

Fields, format, and validation rules for the inconsistency audit response. Use this contract to parse, validate, and integrate the model output into downstream review queues or dashboards.

Field or ElementType or FormatRequiredValidation Rule

audit_id

string (UUID v4)

Must match regex ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

report_title

string

Non-empty, max 200 chars. Must match the [REPORT_TITLE] input if provided.

findings

array of objects

Array length >= 0. If empty, top-level coverage_summary must indicate all sections compared.

findings[].finding_id

string

Unique within the array, format F-XXX where XXX is a zero-padded integer (e.g., F-001).

findings[].section_pair

array of two strings

Exactly two section identifiers from the [SECTION_LIST] input. Must not be identical.

findings[].inconsistency_category

enum string

Must be one of: factual_contradiction, numerical_disagreement, temporal_inconsistency, logical_conflict, terminological_mismatch, definitional_drift, missing_consistency.

findings[].severity

enum string

Must be one of: critical, major, minor, cosmetic. Critical requires human review flag set to true.

findings[].description

string

Non-empty, max 500 chars. Must reference specific content from both sections.

findings[].excerpt_a

string

Verbatim quote from the first section in section_pair. Max 300 chars. Must be substring-matchable in source.

findings[].excerpt_b

string

Verbatim quote from the second section in section_pair. Max 300 chars. Must be substring-matchable in source.

findings[].correction_recommendation

string

Non-empty, max 500 chars. Must propose a specific resolution, not a generic statement.

findings[].requires_human_review

boolean

Must be true if severity is critical, or if inconsistency_category is factual_contradiction and severity is major.

coverage_summary

object

Must contain sections_compared (integer), sections_with_findings (integer), and sections_skipped (array of strings).

coverage_summary.sections_compared

integer

Must equal the total number of pairwise comparisons performed = n*(n-1)/2 where n is the count of sections in [SECTION_LIST].

coverage_summary.sections_with_findings

integer

Must be <= sections_compared. Must match the count of unique sections referenced in findings[].section_pair.

coverage_summary.sections_skipped

array of strings

Must list any sections from [SECTION_LIST] that were not compared, with a reason per entry. Empty array if all sections compared.

generated_at

string (ISO 8601)

Must be a valid UTC timestamp in format YYYY-MM-DDTHH:MM:SSZ. Must be within 5 minutes of system time at parse.

PRACTICAL GUARDRAILS

Common Failure Modes

What breaks first when auditing long-form reports for internal consistency and how to guard against it.

01

Section Coverage Gaps

What to watch: The model audits only adjacent or obviously related sections, skipping non-sequential comparisons (e.g., Section 2 vs. Section 7). This creates a false sense of completeness. Guardrail: Require an explicit coverage matrix in the output. Use a pre-generated list of all section pairs as part of the prompt context and instruct the model to mark each pair as 'checked' or 'not applicable' with a reason.

02

Paraphrase Misclassification

What to watch: The model flags restatements or stylistic variations of the same fact as contradictions, inflating false positives and wasting reviewer time. Guardrail: Add a pre-check instruction: 'Before flagging a contradiction, verify the core factual claim is logically incompatible, not just differently worded.' Include few-shot examples of paraphrases that should not be flagged.

03

Temporal Context Collapse

What to watch: The model treats statements made about different time periods as contradictory (e.g., 'Revenue was $10M in Q1' vs. 'Revenue reached $12M by Q3'). Guardrail: Instruct the model to extract and compare temporal scopes before evaluating logical conflict. Require a 'temporal scope' field in each finding to make mismatches visible.

04

Numerical Precision Mismatch

What to watch: Rounding differences or significant-figure variations are reported as numerical disagreements (e.g., 34.2% vs. 34%). Guardrail: Define a tolerance window in the prompt (e.g., 'Values within 1% relative difference are considered consistent unless precision is explicitly material'). Require the model to state the applied tolerance in each numerical finding.

05

Conditional Statement Misreading

What to watch: The model ignores qualifiers like 'may,' 'under scenario X,' or 'projected' and flags a conditional statement as contradicting an unconditional one. Guardrail: Add a constraint: 'Extract and preserve all hedging language, conditions, and assumptions. Do not flag a contradiction if the conflicting statements operate under different stated conditions.'

06

Output Drift in Long Contexts

What to watch: Audit quality degrades in later sections of a long report as the model loses attention to early instructions or the full document context. Guardrail: Chunk the report and run pairwise comparisons in a map-reduce pattern. Use a separate synthesis step to merge findings, rather than relying on a single pass over the entire document.

IMPLEMENTATION TABLE

Evaluation Rubric

Criteria for testing output quality before shipping the Inconsistency Audit Prompt to production. Use these standards to build automated eval checks or guide human QA review.

CriterionPass StandardFailure SignalTest Method

Section Coverage Completeness

Every section pair defined in [SECTION_LIST] appears in the audit output with a finding or explicit 'no inconsistency found' marker

Missing section pairs in output; audit skips sections without explanation

Parse output JSON, extract all section pair keys, diff against Cartesian product of [SECTION_LIST] entries

Inconsistency Category Accuracy

Each flagged inconsistency uses exactly one category from [INCONSISTENCY_CATEGORIES] and the category matches the described conflict type

Category mismatch between description and label; invented categories not in allowed list

LLM judge compares finding description to category definition; human spot-check 20% of flagged items

Evidence Excerpt Fidelity

Every quoted excerpt in [EVIDENCE_EXCERPT] appears verbatim in the source document at the cited location

Paraphrased or hallucinated excerpts; excerpts that don't match source text at cited section

Substring match each excerpt against source document text; flag any excerpt with edit distance > 0 from nearest match

Correction Recommendation Actionability

Each [CORRECTION_RECOMMENDATION] contains a specific edit, replacement value, or resolution step, not vague advice

Recommendations like 'review this' or 'check for consistency' without concrete next action

LLM judge scores each recommendation on actionability rubric (1-5); pass threshold >= 4

False Positive Rate on Consistent Content

Sections with no genuine inconsistency receive 'no inconsistency found' or equivalent null finding, not a flagged conflict

Audit flags rhetorical restatements, paraphrases, or conditional statements as contradictions

Run prompt on gold dataset with known-consistent document pairs; measure false positive rate; pass threshold < 5%

Severity Rating Calibration

[SEVERITY] assignments follow the defined rubric: critical for factual contradictions, minor for wording differences, moderate for numerical mismatches within tolerance

All findings marked critical regardless of impact; severity inflation or deflation relative to rubric definitions

LLM judge compares severity label to finding description against severity rubric; measure agreement rate; pass threshold >= 90%

Output Schema Compliance

Output is valid JSON matching [OUTPUT_SCHEMA] with all required fields present and correct types

Missing required fields; wrong types; extra fields not in schema; malformed JSON

Schema validator check against [OUTPUT_SCHEMA]; type assertion on each field; required field completeness check

Audit Trail Traceability

Each finding includes [SECTION_REFERENCE], [EVIDENCE_EXCERPT], and [CORRECTION_RECOMMENDATION] so a reviewer can reproduce the finding without re-reading the full document

Findings with missing evidence links; claims that can't be verified from the provided excerpt alone

Human reviewer attempts to verify 10 random findings using only the audit output fields; pass if >= 9 are independently verifiable

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Start with the base prompt and a single report. Use a frontier model (GPT-4o, Claude 3.5 Sonnet) with default temperature 0. Remove the strict JSON output contract initially—ask for markdown-structured findings instead. Limit the audit to 3–5 major sections to keep latency low and iteration fast.

Watch for

  • The model skipping sections without flagging them as uncovered
  • Vague inconsistency categories like 'minor wording difference' instead of actionable types
  • No section reference pairs, making findings hard to verify manually
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.