Skip to content

Repository files navigation

Condicio Schema

Condicio Banner

Open standard for contract intelligence data — parties, clauses, obligations, risks, dates, and financial terms.

npmPyPILicenseJSON SchemaGitHub Pages


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

Every contract intelligence tool produces structured data — but they all use different schemas.

ProblemConsequence
Proprietary output formatsVendor lock-in, costly migrations
No standard for obligationsEach tool tracks them differently
Inconsistent date representationsParsing errors, missed deadlines
Non-portable risk flagsRisk 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.

SectionTypeDescription
contractobjectDocument-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
financialsobjectMonetary 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
metadataobjectExtraction provenance — engine name/version, confidence score, source document info, timestamps

Design approach

  • Uses $defs for composable reusable types (party, clause, obligation, financialTerm, payment, risk, date, contactInfo, address)
  • additionalProperties: false at root enforces strict compliance
  • A top-level condicio const 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.json

Or validate programmatically:

importAjvfrom'ajv/dist/2020.js'importaddFormatsfrom'ajv-formats'importcondiciofrom'condicio-schema'constajv=newAjv()addFormats(ajv)constvalidate=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.json
fromcondicio.validatorimportvalidate_documentimportjsonwithopen('your-contract.json') asf:
data=json.load(f)
errors=validate_document(data)
ifnoterrors:
print('Valid Condicio document')

Local development

git clone https://github.com/docfide/condicio
cd condicio
npm install
npm test# Validates all examples against the schema

Examples

Ready-to-use examples in both JSON and YAML format:

ExampleHighlights
NDAMutual confidentiality, exclusions, survival period, auto-renewal
Service AgreementMilestone-based payments ($150K), IP assignment, liability cap
EmploymentSalary + bonus + equity, non-compete, severance, at-will
License AgreementPerpetual license, maintenance SLA, audit rights, usage restrictions

YAML equivalents are available alongside each JSON example.


Use Cases

Use CaseHow Condicio Helps
AI contract extractionStandard output format for any extraction engine
CLM data portabilityExport contracts from one CLM, import into another
Obligation trackingStructured obligations with deadlines, owners, status
Risk assessmentPortable risk flags with severity, category, impact
Contract analyticsAggregate across portfolios with consistent field definitions
Regulatory reportingStandard date, party, and clause representations
M&A due diligenceUniform contract data from disparate sources
ISDA/derivatives processingExtensible for financial contract specifics

Comparison with Related Work

StandardFocusStatusRelationship to Condicio
Accord ProjectSmart legal contracts (Cicero, Ergo)ActiveComplementary — Condicio covers extraction output, Accord covers executable contracts
SALIContract standards alliance (tags, classifications)ActiveCompatible — Condicio can reference SALI classification IDs
LEDESLegal billing/invoicingActiveDifferent domain — billing data, not contract intelligence
LegalXMLCourt filings, legislative documentsMaintainedDifferent domain — e-filing, not commercial contracts
OCDS (Open Contracting)Public procurementActiveDifferent domain — government procurement transparency
ODCS (Open Data Charter)Contract publicationActiveDifferent 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

  1. Review existing examples — understand the patterns before proposing changes
  2. Open an issue — discuss your use case or proposed extension
  3. Submit a PR — with schema changes, examples, and validation passing (npm test)
  4. 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 $defs should 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

About

Open schema for structured contract intelligence data.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages