Snow Compliance DemoBoard review · v1

Phase 1

Data foundation

CUAD supplies real contract language and clause annotations. Faker supplies the fictional business context that turns contracts into matters a law firm would recognize.

Source A

The CUAD dataset

The Contract Understanding Atticus Dataset is a legal AI benchmark: 510 commercial contracts annotated across 41 clause categories (the CUAD v1 distribution ships the contracts and annotations as JSON). Each annotation carries the clause text span plus an expert Yes/No answer for whether the clause type is present.

510
contracts available
41
clause categories
20–30
contracts in demo core
CC BY 4.0
license (attribution)
License obligation CUAD is distributed under CC BY 4.0. We retain the attribution notice, link to the source repository, and never imply the documents are client-confidential.

What we extract per contract

  • contract_name, contract_type (NDA, license, service, etc.), party names.
  • Per clause category: answer (Yes/No/NA), annotated text span, character offsets.

Parsing reference: ingest/load_cuad.py in this repo.

Source B

The synthetic law-firm layer (Faker)

Faker (Python) generates deterministic, obviously-fictional records. We fix a random seed so every rebuild is reproducible and board reviewers see stable data.

EntityRepresentative fieldsPurpose in the demo
clientclient_id, name, industry, region, contactOwns matters; drives PII masking
employeeemployee_id, name, title, practice, roleAttorneys, paralegals, compliance officers
mattermatter_id, client_id, name, confidentiality_level, opened_on, lead_attorneyThe confidentiality boundary
matter_assignmentmatter_id, employee_id, assignment_roleWorking assignments (for reporting)
matter_authorizationmatter_id, employee_id, access_level, valid_from, valid_toSource of truth for row access
contract_attachmentmatter_id, contract_id, executed_onLinks a CUAD contract to a fictional matter
access_approvalmatter_id, employee_id, approved_by, approved_onShows governance workflow
Clearly fictional Names, matters, and approvals are generated. Client and matter names are prefixed to make their synthetic nature unmistakable in screenshots.
Data model

Logical relationships

Contracts and the business layer meet at a bridge, because a contract can serve more than one matter and a matter can hold more than one contract.

client 1---* matter *---* contract (via contract_attachment)
  matter 1---* fact_clause *---1 dim_contract
  matter 1---* matter_authorization *---1 employee
  matter 1---* matter_assignment   *---1 employee
  contract 1---* fact_clause *---1 dim_clause_category
SchemaObjectGrain / notes
RAWraw_cuad_contracts, raw_cuad_clausesVARIANT JSON as landed; no logic
RAWraw_synthetic_*Faker CSV/JSON staging
COREdim_client, dim_employee, dim_matter, dim_contract, dim_clause_categoryConformed dimensions
COREfact_clauseOne row per (contract, clause category)
COREbridge_matter_contractResolves the many-to-many
COREmatter_authorizationRow access mapping table
MARTSmart_matter_risk, mart_high_risk_registerBoard-facing outputs

Full DDL: sql/02_data_model.sql.

Trust

Data-quality checks

Every load ends with referential-integrity and completeness assertions. Failures are surfaced, never silently dropped.

-- Orphaned clauses (no matching contract)
SELECT f.contract_id, COUNT(*)
FROM core.fact_clause f
LEFT JOIN core.dim_contract c USING (contract_id)
WHERE c.contract_id IS NULL
GROUP BY 1;

-- Matters with no authorized attorney (governance gap)
SELECT m.matter_id
FROM core.dim_matter m
LEFT JOIN core.matter_authorization a USING (matter_id)
WHERE a.matter_id IS NULL;

-- Clause coverage vs CUAD's 41 categories
SELECT COUNT(DISTINCT clause_category_id) AS categories_present
FROM core.fact_clause;

-- Contracts attached to more than one matter (expected for the bridge)
SELECT contract_id, COUNT(DISTINCT matter_id) AS matters
FROM core.bridge_matter_contract GROUP BY 1 HAVING matters > 1;
Compliance

Attribution & disclaimers

  • CUAD: The Atticus Project, CC BY 4.0 — linked on every page footer and in the raw tables.
  • Contract-to-matter assignments are fictional and exist only to demonstrate the data model.
  • No personal data of real people is used; all individuals are synthetic.