This prompt is designed for contract management and legal operations teams that need to systematically verify whether contractual obligations have been fulfilled. The core job-to-be-done is taking a contract document and a set of fulfillment evidence records—such as deliverables, payment receipts, and correspondence—and producing a structured compliance report. The ideal user is a contract analyst, paralegal, or legal operations professional who understands the contract's context but needs an AI harness to accelerate the tedious, error-prone work of cross-referencing obligations against evidence. The prompt extracts obligations, conditions, and deadlines, then checks each against the provided evidence to flag gaps, track dependencies, and surface breach risk before a human reviewer makes the final call.
Prompt
Contractual Obligation Verification Prompt Template

When to Use This Prompt
Defines the job-to-be-done, ideal user, required context, and boundaries for the Contractual Obligation Verification Prompt Template.
You should use this prompt when you have a defined contract and a discrete set of evidence records to verify against it. It works best for contracts with explicit, verifiable obligations such as delivery milestones, payment schedules, reporting requirements, and regulatory commitments. The prompt requires structured inputs: the full contract text, a list of evidence items with descriptions and dates, and optionally a risk threshold that determines which gaps get flagged. It is not suitable for implied obligations, good-faith clauses, or subjective performance assessments where the contract language is intentionally vague. Do not use this prompt for contract drafting, negotiation strategy, or as a replacement for legal counsel—it is a verification harness, not a legal advisor.
Before using this prompt, ensure your evidence records are complete and accurately dated. The prompt's breach risk flags depend on deadline comparisons, so missing or incorrectly dated evidence will produce false positives. You should also define your output schema expectations upfront: whether you need a simple pass/fail per obligation, a detailed gap analysis with evidence citations, or a full compliance report with dependency chains. The prompt template includes placeholders for these constraints. After running the prompt, always route the output to a human reviewer for final sign-off, especially for high-risk obligations where breach consequences are severe. The next section provides the copy-ready prompt template you can adapt to your contract types and evidence formats.
Use Case Fit
Where this prompt works and where it does not. Understand the operational boundaries before integrating this template into a contract review pipeline.
Good Fit: Structured Obligation Extraction
Use when: You need to extract specific obligations, conditions, deadlines, and parties from executed contracts and verify their fulfillment status against a provided evidence set. Guardrail: The prompt requires a clear [CONTRACT_TEXT] and [EVIDENCE_LOG] input schema. Do not use it without structured evidence.
Bad Fit: Legal Advice or Interpretation
Avoid when: The task requires determining legal liability, interpreting ambiguous clauses, or providing a single definitive legal opinion. Guardrail: The output must be framed as a 'verification status' and 'breach risk flag,' not legal counsel. Always route final determinations to a qualified human reviewer.
Required Inputs: Text and Evidence
What to watch: The model hallucinates fulfillment status if it only receives the contract text without a corresponding evidence log. Guardrail: The prompt template requires both [CONTRACT_TEXT] and [EVIDENCE_LOG] as mandatory inputs. If evidence is missing for an obligation, the output must default to 'Unverified' rather than 'Fulfilled'.
Operational Risk: Obligation Dependency Blindness
What to watch: The model may verify individual obligations in isolation, missing cross-references where Obligation A must be completed before Obligation B can start. Guardrail: The prompt includes a specific instruction to track 'dependency chains' and flag a breach risk if a prerequisite obligation is unfulfilled or overdue.
Operational Risk: Date Ambiguity
What to watch: Contracts often use relative dates ('within 30 days of execution') or business-day logic that the model miscalculates. Guardrail: The prompt instructs the model to extract the raw text of the deadline. Date normalization and business-day calculation should be handled by deterministic application logic in the harness, not the LLM.
Bad Fit: Unstructured Evidence Dumps
What to watch: Dumping thousands of raw emails or invoices as the [EVIDENCE_LOG] without pre-processing causes the model to miss critical fulfillment signals due to context distraction. Guardrail: Evidence must be pre-sorted and linked to specific contract sections or obligation IDs before being passed to the prompt. Use a retrieval step first.
Copy-Ready Prompt Template
A reusable prompt for extracting obligations from a contract and verifying their fulfillment status against provided evidence.
This prompt template is designed to be pasted directly into your AI harness. It instructs the model to act as a contract analyst, extracting obligations, conditions, and deadlines from a source contract and then cross-referencing them against a set of provided evidence documents. The template uses square-bracket placeholders for all variable inputs, allowing you to swap in different contracts, evidence sets, and output schemas without rewriting the core instructions. The prompt is structured to enforce a strict verification workflow: first extract, then match to evidence, and finally flag any gaps or breach risks.
codeYou are a contract obligation verification analyst. Your task is to extract all obligations, conditions, and deadlines from the provided contract and verify their fulfillment status against the provided evidence. # CONTRACT [CONTRACT_TEXT] # EVIDENCE [EVIDENCE_DOCUMENTS] # INSTRUCTIONS 1. **Extract Obligations:** Identify every clause that imposes a duty, condition, deadline, payment, deliverable, or restriction on any party. For each obligation, extract: - `obligation_id`: A unique identifier (e.g., OB-001). - `party`: The party responsible for fulfilling the obligation. - `description`: A clear, atomic description of what must be done. - `deadline`: The specific date or condition for fulfillment, if stated. - `dependencies`: List of `obligation_id`s that must be completed first. 2. **Verify Against Evidence:** For each extracted obligation, search the provided evidence to determine its status. - `status`: Must be one of `FULFILLED`, `PARTIALLY_FULFILLED`, `NOT_FULFILLED`, or `INSUFFICIENT_EVIDENCE`. - `evidence_citation`: A verbatim quote from the evidence that supports the status determination. If `INSUFFICIENT_EVIDENCE`, state what specific evidence is missing. - `breach_risk`: A `HIGH`, `MEDIUM`, or `LOW` assessment of the risk that the obligation is in breach, based on the evidence and the deadline. 3. **Output Format:** Return your findings as a single JSON object conforming to the schema below. Do not include any text outside the JSON object. # OUTPUT_SCHEMA { "contract_title": "string", "verification_date": "YYYY-MM-DD", "obligations": [ { "obligation_id": "string", "party": "string", "description": "string", "deadline": "string | null", "dependencies": ["string"], "status": "FULFILLED | PARTIALLY_FULFILLED | NOT_FULFILLED | INSUFFICIENT_EVIDENCE", "evidence_citation": "string", "breach_risk": "HIGH | MEDIUM | LOW" } ], "unverifiable_obligations_count": "number", "high_breach_risk_count": "number" } # CONSTRAINTS - Do not invent obligations not present in the contract text. - If the evidence is a scanned document or image, state that text extraction may be unreliable. - For any `INSUFFICIENT_EVIDENCE` status, you must not guess the fulfillment state. - If the contract references external documents not provided in the evidence, flag this as a limitation in your analysis.
To adapt this template, replace the [CONTRACT_TEXT] and [EVIDENCE_DOCUMENTS] placeholders with your actual content. For production use, you should modify the OUTPUT_SCHEMA to match your application's data model. The constraints section is critical for high-stakes legal workflows; it prevents the model from hallucinating obligations or guessing fulfillment status when evidence is missing. Before deploying, run this prompt against a golden dataset of contracts with known obligations and evidence to measure extraction recall and verification precision. Always route outputs with a breach_risk of HIGH or a status of INSUFFICIENT_EVIDENCE for human review before taking any automated action.
Prompt Variables
Required inputs for the Contractual Obligation Verification prompt. Each variable must be populated before execution to ensure reliable extraction and verification of obligations against provided evidence.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[CONTRACT_TEXT] | The full body of the contract or the specific clause section to analyze for obligations. | Master Services Agreement dated 2024-01-15, Section 4.2: Delivery Obligations. | Must be non-empty string. If clause-level analysis is intended, ensure section boundaries are clearly delimited to avoid cross-contamination of obligations. |
[OBLIGATION_PARTY] | The named party whose obligations should be extracted and verified. This focuses the extraction on one side of the contract. | Vendor | Must match a party name explicitly defined in [CONTRACT_TEXT]. Null not allowed. Case-insensitive matching is acceptable, but exact string match is preferred for audit trails. |
[EVIDENCE_DOCUMENTS] | A structured list of documents, records, or logs provided to verify fulfillment status. Each entry should include a source label and content. | ["source": "Delivery Log Q3", "content": "..."], ["source": "Payment Receipt #452", "content": "..."] | Must be a valid JSON array. Each object requires 'source' (string) and 'content' (string) keys. An empty array is allowed if no evidence is available, which should trigger 'UNVERIFIED' statuses. |
[VERIFICATION_DATE] | The effective date for the verification check. Obligations with deadlines after this date are marked as 'PENDING' rather than 'BREACH'. | 2024-09-30 | Must be a valid ISO 8601 date string (YYYY-MM-DD). If null or missing, the system should default to the current system date but log a warning about implicit date assumptions. |
[JURISDICTION] | The governing law or regulatory framework used to interpret obligation terms and materiality thresholds. | Delaware General Corporation Law | Must be a non-empty string. This variable directly impacts breach risk flags and materiality assessments. If unknown, use 'General Contract Principles' but flag the output with lower confidence. |
[OUTPUT_SCHEMA] | The strict JSON schema definition the model must conform to for the final output, including obligation objects, status enums, and evidence links. | See output-contract table for full schema definition. | Must be a valid JSON Schema object. The schema must define an enum for 'status' with values: FULFILLED, PARTIALLY_FULFILLED, BREACH, PENDING, UNVERIFIED. Validation should reject any output that does not parse against this schema. |
[MATERIALITY_THRESHOLD] | A qualitative or quantitative rule defining what constitutes a material breach versus a minor deviation for the specific contract. | Any delay exceeding 10 business days or financial impact over $5,000. | Must be a non-empty string. If the contract text specifies a threshold, this variable should mirror that language exactly. If not specified, use 'Reasonable commercial standards' but flag the output for human review. |
Implementation Harness Notes
How to wire the contractual obligation verification prompt into a production application with validation, retries, and human review gates.
This prompt is designed to sit inside a contract review pipeline, not as a standalone chat interface. The typical integration flow is: (1) ingest the contract text and any supporting evidence documents, (2) run this prompt to extract obligations and verify their fulfillment status, (3) validate the structured output against a schema, (4) route high-risk or low-confidence findings to human review, and (5) store the verified obligation records in a contract management system. The prompt expects two primary inputs: the full contract text in [CONTRACT_TEXT] and any available evidence of fulfillment in [EVIDENCE_DOCUMENTS]. If evidence is missing or incomplete, the prompt is instructed to flag obligations as UNVERIFIED rather than guessing, which is critical for audit defensibility.
Model choice and latency considerations: This prompt works best with models that have strong reasoning capabilities and large context windows, such as GPT-4o, Claude 3.5 Sonnet, or Gemini 1.5 Pro. Contracts often exceed 50 pages, so plan for context packing. If the contract plus evidence exceeds the model's context limit, implement a chunking strategy: split the contract by article or section, run the prompt per chunk, and deduplicate obligations that span section boundaries. For batch processing of multiple contracts, use asynchronous API calls with a concurrency limit appropriate for your rate tier. Expect 15-45 seconds per contract depending on length and model choice. Validation layer: The output schema includes obligation ID, description, source clause reference, party responsible, deadline, conditions precedent, fulfillment status, evidence references, and breach risk flags. Before storing results, validate that every obligation has a non-empty source_clause_reference (to prevent hallucinated obligations), that fulfillment_status is one of the enum values (FULFILLED, PARTIALLY_FULFILLED, UNFULFILLED, UNVERIFIED, NOT_YET_DUE), and that any obligation marked FULFILLED has at least one evidence_reference with a document identifier and excerpt. Reject records that fail validation and retry with a repair prompt that includes the specific validation errors.
Retry and self-correction strategy: If the model returns malformed JSON, use a repair prompt that feeds the raw output and validation errors back to the model with instructions to fix only the structural issues while preserving the obligation content. Limit repairs to two attempts before escalating to human review. For low-confidence outputs (where the model's internal confidence or the breach_risk flag is HIGH), route directly to a review queue. Human review integration: Package each flagged obligation with the source clause text, the evidence excerpts the model cited, and the model's reasoning for the risk flag. This gives reviewers enough context to make a decision without re-reading the entire contract. Store reviewer decisions (confirmed, overridden, escalated) as feedback for prompt iteration. Logging and observability: Log every prompt run with a trace ID, contract identifier, model version, prompt version, token usage, latency, validation pass/fail, and human review outcome. This audit trail is essential for legal operations teams who need to demonstrate review diligence. What to avoid: Do not use this prompt for real-time contract negotiation or as a substitute for legal advice. The prompt identifies obligations and flags risks but does not interpret legal consequences or recommend actions. Always require human review for obligations with breach_risk: HIGH or fulfillment_status: UNVERIFIED before taking any business action.
Expected Output Contract
Defines the structure, types, and validation rules for the JSON object returned by the Contractual Obligation Verification Prompt. Use this contract to parse the model response, validate correctness, and route failures.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
obligation_id | string | Must match the pattern OBL-[YYYYMMDD]-[4-digit index]. Parse check for date validity and uniqueness within the output array. | |
obligation_text | string | Must be a direct quote or a close, bracketed paraphrase from [CONTRACT_TEXT]. Non-empty string check. If paraphrased, must contain a [SOURCE_SECTION] reference. | |
source_section | string | Must reference a valid section heading or clause number present in [CONTRACT_TEXT]. Citation check against the provided document structure. | |
obligation_type | enum | Must be one of: 'payment', 'delivery', 'notice', 'restriction', 'reporting', 'indemnification', 'termination_condition'. Enum membership check. | |
deadline | string or null | Must be in ISO 8601 format (YYYY-MM-DD) or null if no deadline is specified. Format check. If a date is present, it must be logically consistent with the [EFFECTIVE_DATE]. | |
fulfillment_status | enum | Must be one of: 'fulfilled', 'unfulfilled', 'partially_fulfilled', 'not_applicable', 'unable_to_verify'. Enum membership check. | |
supporting_evidence | array of strings | Each string must be a direct quote from [EVIDENCE_DOCUMENTS] or the literal string 'NO_EVIDENCE_PROVIDED'. If 'fulfilled', at least one non-'NO_EVIDENCE_PROVIDED' entry is required. Citation check against provided evidence. | |
breach_risk | enum | Must be one of: 'none', 'low', 'medium', 'high', 'critical'. If 'unfulfilled' and deadline is in the past, breach_risk must be 'high' or 'critical'. Cross-field validation rule. | |
dependent_obligation_ids | array of strings or null | If provided, each string must match an obligation_id present elsewhere in the output. Referential integrity check. If no dependencies, value must be an empty array or null. | |
review_required | boolean | Must be true if fulfillment_status is 'unable_to_verify' or breach_risk is 'critical'. Otherwise, can be false. Conditional validation rule. Used for human-in-the-loop routing. |
Common Failure Modes
Contractual obligation verification fails in predictable ways. These cards cover the most common failure modes, why they happen, and how to guard against them before they reach production.
Obligation Scope Creep
What to watch: The model extracts aspirational language, recitals, or background context as binding obligations instead of limiting extraction to operative clauses with clear mandatory language. Guardrail: Constrain the prompt with explicit obligation criteria—require deontic markers (shall, must, will) and clause-type filtering. Add a pre-extraction classification step that separates operative from non-operative sections.
Temporal Logic Collapse
What to watch: Deadlines, renewal windows, and condition precedents get flattened into a single status without preserving the temporal dependency chain. An obligation due only after a prior condition is met gets marked as overdue. Guardrail: Require the model to output a dependency graph or ordered condition list before assigning status. Validate that no obligation is marked breached unless all its preconditions are satisfied.
Evidence-Status Mismatch
What to watch: The model marks an obligation as fulfilled based on weak or irrelevant evidence, or marks it as unverified when sufficient evidence exists but is formatted differently than expected. Guardrail: Implement a two-pass verification: first match evidence to obligation, then score sufficiency independently. Require explicit evidence-to-obligation linking with a confidence threshold before accepting a fulfilled status.
Cross-Reference Blindness
What to watch: Obligations defined across multiple contract sections, amendments, or incorporated documents are treated as separate, incomplete obligations rather than a single composite requirement. Guardrail: Add a pre-processing step that resolves cross-references and consolidates related clauses before extraction. Flag obligations with external document references for human review if the referenced document is not provided.
Party Attribution Confusion
What to watch: The model assigns obligations to the wrong party, especially in multi-party agreements, assignments, or when passive voice obscures the obligated entity. Guardrail: Require explicit party identification for every extracted obligation. Use a structured output schema that makes the obligated party a required field. Add a validation check that the identified party exists in the contract's defined terms.
Breach Severity Overstatement
What to watch: The model flags minor administrative delays or formatting issues as material breaches without considering materiality thresholds, cure periods, or de minimis exceptions defined in the contract. Guardrail: Instruct the model to extract materiality qualifiers, cure periods, and remedy limitations before classifying breach severity. Default to requiring human review for any breach classification above a defined risk threshold.
Evaluation Rubric
Use this rubric to test the Contractual Obligation Verification Prompt before shipping. Each criterion targets a specific failure mode in obligation extraction, evidence matching, or risk flagging. Run these checks against a golden set of 10-15 contract-evidence pairs with known outcomes.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Obligation Extraction Completeness | All obligations in the golden set are extracted with correct clause references | Missing obligation; obligation extracted without clause citation; phantom obligation invented | Compare extracted obligation count and clause references against golden set annotations |
Obligation Atomicity | Each extracted obligation contains exactly one action, one party, and one deadline or condition | Multiple actions or parties bundled into one obligation; deadline separated from its action | Parse each obligation record and count distinct verbs, parties, and temporal constraints |
Deadline Normalization | All dates converted to ISO 8601 format with original text preserved in a separate field | Date left in raw text only; ambiguous date not flagged; relative date not resolved against contract effective date | Validate date fields against JSON Schema with format: date-time; check for presence of original_text field |
Condition Precedent Identification | All conditions precedent are extracted and linked to the obligation they gate | Condition extracted as standalone obligation; condition not linked to dependent obligation; condition missed entirely | Check dependency graph: every condition must have a depends_on field pointing to the obligation it gates |
Evidence Match Accuracy | Each obligation status is supported by at least one evidence record with a direct reference | Status marked as fulfilled with no evidence; evidence cited but irrelevant to the obligation; evidence contradicts the status | For each obligation with status fulfilled or breached, verify evidence record exists and manually check relevance on 20% sample |
Breach Risk Flag Precision | Breach risk flags appear only when deadline is past, condition is unmet, or evidence shows non-performance | Risk flag on obligation with future deadline and no issues; no risk flag on clearly breached obligation; risk severity mismatched to evidence | Compare risk flags against golden set labels; measure precision and recall on breach detection |
Uncertainty Handling | Missing evidence or ambiguous contract language produces confidence score below 0.8 and triggers human_review flag | High confidence assigned when evidence is missing; human_review flag absent when contract language is ambiguous; confidence score not provided | Check confidence field is present and numeric; verify human_review is true when evidence_count is 0 or contract text contains ambiguity markers |
Output Schema Compliance | Every field in the output contract is present, correctly typed, and non-null where required | Required field missing; field has wrong type; null in non-nullable field; extra fields not in schema | Validate full output against JSON Schema; reject any output that fails structural validation |
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 single contract and a small evidence set. Remove strict schema enforcement and accept free-text obligation summaries. Focus on extracting obligations correctly before adding verification logic.
codeExtract all obligations from [CONTRACT_TEXT]. For each obligation, identify: - The obligated party - The action required - Any deadline or condition - The clause reference Do not verify fulfillment yet.
Watch for
- Obligations merged together when they should be separate
- Missing conditional triggers (e.g., "if X happens, then Y")
- Clause references that point to wrong sections
- Over-extraction of aspirational language as binding obligations

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