Open standard for contract intelligence data — parties, clauses, obligations, risks, dates, and financial terms.
Condicio (Latin: agreement, condition, stipulation) defines a universal schema for representing structured contract intelligence data. Every contract extraction tool — CLM platforms, AI engines, obligation trackers — invents its own output format. Condicio is the missing standard.
{
"condicio": "https://raw.githubusercontent.com/docfide/condicio/main/schema/condicio.schema.json",
"contract": {
"title": "Mutual Non-Disclosure Agreement",
"type": "NDA",
"status": "executed",
"jurisdiction": "Delaware"
},
"parties": [
{ "name": "Acme Corporation", "role": "disclosing party" },
{ "name": "Beta Inc", "role": "receiving party" }
],
"obligations": [
{
"description": "Maintain Confidential Information in strict confidence.",
"obligor": "Beta Inc",
"deadlineType": "ongoing"
}
]
}A common schema means interoperability, portability, and an ecosystem of tools that work together out of the box.
- Why Condicio
- Schema Overview
- Quick Start
- Examples
- Use Cases
- Comparison with Related Work
- Roadmap
- Contributing
- License
Every contract intelligence tool produces structured data — but they all use different schemas.
| Problem | Consequence |
|---|---|
| Proprietary output formats | Vendor lock-in, costly migrations |
| No standard for obligations | Each tool tracks them differently |
| Inconsistent date representations | Parsing errors, missed deadlines |
| Non-portable risk flags | Risk intelligence trapped in one platform |
Condicio solves this by providing a vendor-neutral, open schema that any tool can produce and consume.
- Open by default — Apache 2.0 license, community-governed
- Extraction-first — designed for what contract intelligence tools produce, not for drafting
- Composable — use only the sections you need (just parties? just obligations?)
- Language-agnostic — JSON Schema core with first-class YAML support
- Confidence-aware — every extracted field can carry a confidence score from the extraction engine
The schema is defined in schema/condicio.schema.json using JSON Schema 2020-12.
| Section | Type | Description |
|---|---|---|
contract |
object |
Document-level metadata — title, type, jurisdiction, governing law, status, IDs |
parties |
[party] |
Named parties with roles, identifiers, type (corporation, individual, llc), contact info |
dates |
[date] |
Key dates — execution, effective, expiry, renewal windows, notice periods |
clauses |
[clause] |
Extracted clauses with classification, full text, and confidence |
obligations |
[obligation] |
Actionable items — deadlines (fixed, recurring, conditional, ongoing), responsible parties, clause references |
financials |
object |
Monetary terms — total contract value, currency, payment schedule, line items, late payment penalties |
risks |
[risk] |
Risk flags — severity (low/medium/high/critical), category, impact, affected party |
definitions |
[definition] |
Defined terms and their definitions as they appear in the contract |
metadata |
object |
Extraction provenance — engine name/version, confidence score, source document info, timestamps |
- Uses
$defsfor composable reusable types (party,clause,obligation,financialTerm,payment,risk,date,contactInfo,address) additionalProperties: falseat root enforces strict compliance- A top-level
condicioconst URI identifies the schema version - Every extraction field includes optional
confidence(0.0–1.0) for AI-engine uncertainty
Try it now: Live Validator — paste a Condicio document and validate in your browser.
npm install condicio-schema
# Validate your contract data
npx ajv validate -s node_modules/condicio-schema/schema/condicio.schema.json -d your-contract.jsonOr validate programmatically:
import Ajv from 'ajv/dist/2020.js'
import addFormats from 'ajv-formats'
import condicio from 'condicio-schema'
const ajv = new Ajv()
addFormats(ajv)
const validate = ajv.compile(condicio)
if (validate(myContractData)) {
console.log('Valid Condicio document')
} else {
console.error(validate.errors)
}pip install condicio
# Validate a document
condicio validate your-contract.json
# Inspect a document
condicio inspect your-contract.jsonfrom condicio.validator import validate_document
import json
with open('your-contract.json') as f:
data = json.load(f)
errors = validate_document(data)
if not errors:
print('Valid Condicio document')git clone https://github.com/docfide/condicio
cd condicio
npm install
npm test # Validates all examples against the schemaReady-to-use examples in both JSON and YAML format:
| Example | Highlights |
|---|---|
| NDA | Mutual confidentiality, exclusions, survival period, auto-renewal |
| Service Agreement | Milestone-based payments ($150K), IP assignment, liability cap |
| Employment | Salary + bonus + equity, non-compete, severance, at-will |
| License Agreement | Perpetual license, maintenance SLA, audit rights, usage restrictions |
YAML equivalents are available alongside each JSON example.
| Use Case | How Condicio Helps |
|---|---|
| AI contract extraction | Standard output format for any extraction engine |
| CLM data portability | Export contracts from one CLM, import into another |
| Obligation tracking | Structured obligations with deadlines, owners, status |
| Risk assessment | Portable risk flags with severity, category, impact |
| Contract analytics | Aggregate across portfolios with consistent field definitions |
| Regulatory reporting | Standard date, party, and clause representations |
| M&A due diligence | Uniform contract data from disparate sources |
| ISDA/derivatives processing | Extensible for financial contract specifics |
| Standard | Focus | Status | Relationship to Condicio |
|---|---|---|---|
| Accord Project | Smart legal contracts (Cicero, Ergo) | Active | Complementary — Condicio covers extraction output, Accord covers executable contracts |
| SALI | Contract standards alliance (tags, classifications) | Active | Compatible — Condicio can reference SALI classification IDs |
| LEDES | Legal billing/invoicing | Active | Different domain — billing data, not contract intelligence |
| LegalXML | Court filings, legislative documents | Maintained | Different domain — e-filing, not commercial contracts |
| OCDS (Open Contracting) | Public procurement | Active | Different domain — government procurement transparency |
| ODCS (Open Data Charter) | Contract publication | Active | Different domain — contract publication, not extraction |
No existing standard addresses the output of contract intelligence extraction — that is the gap Condicio fills.
Contributions are welcome and encouraged.
- Review existing examples — understand the patterns before proposing changes
- Open an issue — discuss your use case or proposed extension
- Submit a PR — with schema changes, examples, and validation passing (
npm test) - Add examples — new contract types in both JSON and YAML formats
- Preserve backward compatibility where possible
- Add new optional fields before changing required fields
- Every field should include a
description - New
$defsshould follow the existing composable pattern - Every schema change should include updated examples
Apache 2.0. See LICENSE.
Built by Docfide.
Website · Schema Browser · Live Validator
