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 |
- Layered schemas —
condicio.schema.jsonis the abstract base (document model, open root). Documents are validated against a closed conformance schema:condicio-core.schema.jsonor a registered profile. Every nested object rejects undeclared properties; organisation-specific data goes inmetadata.custom. - Registry —
schema/registry.jsonmaps a document'scondiciovalue to its conformance schema, with version and status. - Extraction annotations — every extracted item can carry
confidence, per-propertyfieldConfidence, andsources(page, character offsets, verbatim quote).metadata.confidenceCalibrationdeclares how to read the scores. - Two conformance levels — level 1 is schema validity; level 2 adds referential integrity (unique ids;
clauseRef,obligationRefs,riskRefs,obligorId,beneficiaryId,affectedPartyIdresolve; span offsets are valid). Both validators check both levels. - Clause-type vocabulary —
schema/vocabularies/clause-types.json: 52typeCodevalues, one per CUAD category plus common types, each mapped to the fields that hold its values.
Condicio can be extended with domain-specific profiles that add fields on top of the base schema. Profiles use allOf to inherit all base fields and unevaluatedProperties: false for strict unknown-field rejection.
| Profile | Schema | Domain |
|---|---|---|
| Financial | financial-profile.schema.json |
ISDA Master Agreements, credit facilities, subscription agreements — tranches, covenants, credit support, events of default, derivative transactions, capital commitments, distribution waterfalls, side letters |
| Life Sciences | life-sciences-profile.schema.json |
Clinical trial agreements, research collaborations, licensing — clinical study data, regulatory obligations, enrollment targets, publication/data rights, milestone payments, royalties, fields of use, patent prosecution, background IP, clinical budgets |
| Real Estate | real-estate-profile.schema.json |
Commercial leases, subleases, property management |
| Technology | technology-profile.schema.json |
SaaS, software licence, cloud and support agreements |
| Energy | energy-profile.schema.json |
Joint operating agreements, production sharing, offtake, transportation |
| Government Contracts | government-contracts-profile.schema.json |
Federal prime contracts and subcontracts — FAR/DFARS clauses, security clearance, data rights, option periods |
| Insurance | insurance-profile.schema.json |
Policies and reinsurance — coverage, premium, exclusions, claims reporting |
| Employment | employment-profile.schema.json |
Employment, contractor, severance and restrictive-covenant agreements |
| Supply Chain | supply-chain-profile.schema.json |
Supply, logistics and warehousing — products, pricing, delivery terms, quality, performance metrics |
| Mergers & Acquisitions | ma-profile.schema.json |
Stock and asset purchase agreements — consideration, earn-outs, reps and warranties, indemnification, closing conditions |
| IP & Technology Licensing | ip-licensing-profile.schema.json |
Patent and technology licences — licensed IP, scope of grant, royalties, prosecution, enforcement |
# Python (auto-detects profile from the document's condicio field)
condicio validate document.jsonfrom condicio.validator import validate_document
errors = validate_document(my_doc) # resolves core or profile schema via the registry, then checks references# npm
npx ajv validate --spec=draft2020 -c ajv-formats -s schema/financial-profile.schema.json -r schema/condicio.schema.json -d document.jsonAny JSON Schema 2020-12 document can become a profile. The pattern:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/my-profile.schema.json",
"type": "object",
"properties": {
"condicio": { "const": "https://example.com/my-profile.schema.json" },
"myField": { "type": "string" }
},
"allOf": [
{ "$ref": "https://raw.githubusercontent.com/docfide/condicio/main/schema/condicio.schema.json" }
],
"unevaluatedProperties": false
}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 |
| ISDA Master Agreement | Financial profile — tranches, covenants, events of default, derivatives |
| Clinical Trial Agreement | Life sciences profile — clinical study, regulatory, enrollment, milestones |
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
