Eridian

Clause Extraction

Extract, search, and compare clauses across the library.

Clauses are first-class objects. Parse writes them. Search retrieves them. Comparison diffs two spans. Counsel can trust an id in a brief because it hashes to a document SHA.

Extract

Extraction runs during contract parse. You can also extract a single document:

POST /v1/legal/clauses/extract
Authorization: Bearer eridian_sk_...
{
  "project_id": "prj_legal_001",
  "matter_id": "mtr_4821",
  "document_id": "doc_msa_4821",
  "model": "auto",
  "types": [
    "indemnification",
    "limitation_of_liability",
    "data_protection",
    "termination",
    "assignment",
    "audit_rights"
  ]
}
{
  "object": "list",
  "data": [
    {
      "id": "cls_19",
      "object": "eridian.legal.clause",
      "type": "indemnification",
      "cap_usd": 1000000,
      "text": "Each party shall indemnify...",
      "page": 14,
      "sha256": "aa11...",
      "document_id": "doc_msa_4821"
    }
  ]
}
POST /v1/legal/clauses/search
Authorization: Bearer eridian_sk_...
{
  "project_id": "prj_legal_001",
  "query": "indemnification clauses with a cap at or below 1000000 USD",
  "filters": {
    "types": ["indemnification"],
    "matter_ids": ["mtr_4821"],
    "governing_law": ["UAE", "England"]
  },
  "model": "auto",
  "limit": 25
}

Search is hybrid: structured filters plus retrieval. The query string is not executed as SQL. limit max is 100.

Results include score and citations. Empty hits return data: [], not a generated clause.

Compare

POST /v1/legal/clauses/compare
Authorization: Bearer eridian_sk_...
{
  "left": "cls_19",
  "right": "cls_std_indemnity_v4",
  "model": "gpt"
}
{
  "id": "cmp_cls_01",
  "object": "eridian.legal.clause_diff",
  "deviations": [
    {
      "topic": "cap",
      "left": "1000000 USD",
      "right": "5000000 USD",
      "severity": "high"
    }
  ]
}

Use compare before redlines. The playbook clause should be a precedent object, not a prompt.

Library scope

Search can span matters in the same project and region when privilege allows. Cross-matter search on privileged matters requires legal:write plus a desk that is a member of every matter in the filter. Otherwise 403 insufficient_scope.

PII

Clause text is stored according to the matter retention clock. With PII redaction, names and account numbers are masked in the stored span when pii_config.persist_strategy is masked. The original bytes remain on the document object until the clock or ZDR says otherwise.

See Precedent Search when the right-hand side is a prior deal, not a playbook id.

Production API credentials are issued with an institution workspace. Contact sales if you need access.