Summarisation Independent solution

Matter & Deposition Summaries

Reads case files, transcripts and depositions and produces structured summaries, chronologies and key-fact lists — each fact linked back to the page and line it came from, so a lawyer can verify in one click.

The problem

Getting up to speed on a matter eats days

Case files and deposition transcripts run to thousands of pages. Building a chronology and pulling key facts by hand is slow, and a fact without a pin cite is a fact you can't rely on.

This solution produces the summary, timeline and key-fact list — with every entry linked to its source page and line — so lawyers verify quickly and trust what they read.

Primary objective
Turn long records into verifiable summaries and timelines, with a source behind every fact.
How it works

Ingest record → extract facts → build timeline → cite & summarise

Ingest
Case files & transcripts
Extract
Key facts, parties, dates
Timeline
Ordered chronology
Cite
Pin-cite every fact
What it does
  • ✓ Matter & deposition summaries
  • ✓ Chronology / timeline building
  • ✓ Key-fact extraction
  • ✓ Pin-cite to page & line
  • ✓ Party & issue tracking
  • ✓ Inconsistency spotting
Built with
  • ✓ Claude over long records
  • ✓ Transcript & PDF parsing
  • ✓ Source-span linking
  • ✓ DMS / matter integration
  • ✓ Reviewer verification view
Guardrails
  • ✓ Every fact carries a cite
  • ✓ No fact without a source
  • ✓ Human verification view
  • ✓ Confidence surfaced
  • ✓ Full generation audit
Under the hood

Facts with mandatory pin-cites

Each extracted fact must carry the page and line it came from; entries without a valid source are dropped rather than shown.

summary/facts.py PYTHON
from anthropic import Anthropic
client = Anthropic()

def extract_facts(pages: list) -> list:
    numbered = with_line_numbers(pages)      # page:line prefixes
    prompt = f"""Extract key facts as JSON.
Each: {{"fact": str, "date": str|null, "cite": "p#:l#"}}.
The cite MUST reference a real line below.
Transcript:\n{numbered}"""
    msg = client.messages.create(model="claude-sonnet-4-20250514",
        max_tokens=1500, temperature=0,
        messages=[{"role": "user", "content": prompt}])
    facts = parse_json(msg.content[0].text)
    return [f for f in facts if valid_cite(f["cite"], pages)]  # drop uncited
Outcomes
Days→hours
To learn a matter
Cited
Every fact
Timeline
Built automatically
Verifiable
One-click to source

Know the record in hours, not days

Turns eDiscovery output and intake into a narrative your team can trust.

Start a conversation →
More Legal & Professional Services solutions
Matter & Deposition Summaries | Smort