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.
Ingest record → extract facts → build timeline → cite & summarise
- ✓ Matter & deposition summaries
- ✓ Chronology / timeline building
- ✓ Key-fact extraction
- ✓ Pin-cite to page & line
- ✓ Party & issue tracking
- ✓ Inconsistency spotting
- ✓ Claude over long records
- ✓ Transcript & PDF parsing
- ✓ Source-span linking
- ✓ DMS / matter integration
- ✓ Reviewer verification view
- ✓ Every fact carries a cite
- ✓ No fact without a source
- ✓ Human verification view
- ✓ Confidence surfaced
- ✓ Full generation audit
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.
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
Know the record in hours, not days
Turns eDiscovery output and intake into a narrative your team can trust.