Skip to content
docfidePublic

About

Open schema for structured contract intelligence data.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Condicio Schema

Condicio Banner

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

npm PyPI License JSON Schema GitHub 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.

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

  • Layered schemas — condicio.schema.json is the abstract base (document model, open root). Documents are validated against a closed conformance schema: condicio-core.schema.json or a registered profile. Every nested object rejects undeclared properties; organisation-specific data goes in metadata.custom.
  • Registry — schema/registry.json maps a document's condicio value to its conformance schema, with version and status.
  • Extraction annotations — every extracted item can carry confidence, per-property fieldConfidence, and sources (page, character offsets, verbatim quote). metadata.confidenceCalibration declares 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, affectedPartyId resolve; span offsets are valid). Both validators check both levels.
  • Clause-type vocabulary — schema/vocabularies/clause-types.json: 52 typeCode values, one per CUAD category plus common types, each mapped to the fields that hold its values.

Vertical Profiles

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

Validate against a profile

# Python (auto-detects profile from the document's condicio field)
condicio validate document.json
from 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.json

Creating a custom profile

Any 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
}

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:

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.json
from 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 schema

Examples

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
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 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

  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