Review Independent solution

Contract Review & Risk

Reads inbound contracts, extracts the clauses that matter, compares them to your playbook, and flags deviations and risks with suggested redlines — giving the reviewing lawyer a head start, never the final word.

The problem

First-pass contract review is slow and easy to rush

Reviewing third-party paper means reading every page to find the clauses that matter, checking them against standards held in someone's head, and hoping nothing was missed under deadline pressure.

This solution does the first pass in minutes: it extracts key terms, checks them against your playbook, and hands the lawyer a prioritised list of risks and suggested redlines to accept or reject.

Primary objective
Speed up first-pass contract review and make sure no material clause is missed — with a lawyer deciding.
How it works

Ingest → extract clauses → check playbook → flag & redline

Ingest
Inbound contract (PDF/Word)
Extract
Key clauses & obligations
Check
Compare to your playbook
Flag
Risks + suggested redlines
What it does
  • ✓ Clause extraction
  • ✓ Playbook deviation checks
  • ✓ Risk scoring & ranking
  • ✓ Suggested redlines
  • ✓ Missing-clause detection
  • ✓ Obligation & date extraction
Built with
  • ✓ Claude over contract text
  • ✓ Your playbook as knowledge base
  • ✓ DMS / CLM integration
  • ✓ Redline generation
  • ✓ Reviewer approval workflow
Guardrails
  • ✓ Not legal advice — assistive
  • ✓ Every flag cites the clause
  • ✓ Lawyer accepts/rejects each
  • ✓ Confidence surfaced, not hidden
  • ✓ Full review audit trail
Under the hood

Playbook-grounded risk flagging

Each extracted clause is compared to your playbook position; the model must cite the exact contract text for any risk it raises.

review/flag.py PYTHON
from anthropic import Anthropic
from playbook import position_for
client = Anthropic()

def assess(clause: dict) -> dict:
    want = position_for(clause["type"])     # your standard position
    prompt = f"""Compare clause to our position.
Clause text: {clause['text']}
Our playbook position: {want}
Return JSON: {{"risk": "low|med|high", "why": str, "cite": str, "redline": str}}.
The "cite" MUST be a verbatim span from the clause."""
    msg = client.messages.create(model="claude-sonnet-4-20250514",
        max_tokens=700, temperature=0,
        messages=[{"role": "user", "content": prompt}])
    out = parse_json(msg.content[0].text)
    assert out["cite"] in clause["text"]   # grounded, not invented
    return out
Outcomes
Minutes
First-pass review
Nothing
Material clause missed
Ranked
Risks by severity
Lawyer
Decides each redline

Give reviewers a running start

Complements Document Drafting and Legal Research in one workflow.

Start a conversation →
More Legal & Professional Services solutions
Contract Review & Risk | Smort