condicio-schema
v0.1.4
Published
Open schema for structured contract intelligence data: parties, clauses, obligations, risks, dates, financial terms, and more.
Maintainers
Readme
Condicio Schema
Open standard for contract intelligence data — parties, clauses, obligations, risks, dates, and financial terms.
What is Condicio?
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.
Table of Contents
- Why Condicio
- Schema Overview
- Quick Start
- Examples
- Use Cases
- Comparison with Related Work
- Roadmap
- Contributing
- License
Why Condicio
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.
Principles
- 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
Schema Overview
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 |
Design approach
- 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
Quick Start
Try it now: Live Validator — paste a Condicio document and validate in your browser.
npm
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)
}Python
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')Local development
git clone https://github.com/docfide/condicio
cd condicio
npm install
npm test # Validates all examples against the schemaExamples
Ready-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 Cases
| 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 |
Comparison with Related Work
| 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.
Contributing
Contributions are welcome and encouraged.
How to contribute
- 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
Guidelines
- 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
License
Apache 2.0. See LICENSE.
Built by Docfide.
Website · Schema Browser · Live Validator
