Legal & procurement operations
A renewal calendar that builds itself from the contracts you already have
Clause-level extraction with citations back to the exact page, amendments resolved against their base contract, and a renewal calendar built from dates nobody had to type in twice.
- Renewal deadlines missed
- occasional → zero
- Time to answer a portfolio-wide clause question
- weeks → minutes
- Contracts with citation-verified extracted terms
- zero → the full active portfolio
- Sector
- Legal & procurement operations
- Scope
- ~850 active contracts, 12 template generations
- Engagement
- Discovery sprint, then delivery pod
Stack
- Claude
- Unstructured.io
- pgvector
Practices involved
Discuss a similar problemThe situation
Hundreds of vendor and customer contracts sat in a shared drive, drafted across twelve years of template revisions by several different law firms. Nobody could quickly answer which contracts renew in the next ninety days, which carry a liability cap below a given threshold, or which still use an indemnification clause the legal team had since decided to retire, without opening and reading each one.
The constraint
This is a domain where a plausible-sounding wrong answer is a real liability, not an inconvenience, so extraction had to be verifiable rather than merely confident-sounding. Contracts are long, inconsistently formatted, and frequently modified by side letters and amendments that have to be read together with the base contract to know the actual current terms — the base document alone is often wrong on its own. And the legal team, correctly, would not accept a tool that auto-approved anything; this had to speed up their review, not replace their judgement.
What we built
Extraction that shows its work
Key commercial terms — parties, effective and renewal dates, termination notice period, liability cap, indemnification type, governing law — are extracted with a citation back to the exact clause and page. A lawyer verifies a field in seconds by clicking through to the source, rather than re-reading the contract to check the system's homework.
Amendments resolved, not merged silently
Side letters and amendments are matched to their base contract, and the current value of a term is shown alongside the original, with the amendment that changed it. The lawyer sees what changed and why, rather than trusting a single merged number that hides its own history.
A renewal calendar built from the extraction, not a spreadsheet
Renewal dates and notice periods generate a standing calendar view, so "what needs a decision in the next quarter" is something the system already knows, not something someone has to go looking for.
Clause-variance clustering
Similar clauses — every indemnification clause across the portfolio, for instance — are grouped so the legal team can see the actual spread of language in use at a glance, and flag the outliers worth standardising, instead of reviewing contract by contract to notice the same thing.
What changed
The renewal deadline that triggered the project stopped being a risk — the calendar catches it automatically now. More broadly, portfolio-wide questions that used to mean a multi-week manual review became something the legal team could answer themselves in minutes.
What we would do differently
We built the citation model assuming one commercial term lives in one clause. Real contracts routinely split a single term across a clause and a schedule, or a clause and an amendment, and the first version of the extraction missed that split. We rebuilt it to support multi-span citations mid-project; for a legal document, that should have been the starting assumption, not an edge case discovered after the fact.
Outcomes
- Renewal deadlines missed
- occasional → zero
- Time to answer a portfolio-wide clause question
- weeks → minutes
- Contracts with citation-verified extracted terms
- zero → the full active portfolio
Client identity withheld under a mutual NDA. Figures are illustrative — rounded and directional, meant to show the shape of the change rather than an audited result. We will walk through the real numbers, how they were measured, and put you in touch with a reference, under NDA on a call.
More work
Other engagements.
Case studiesCutting stockouts across 240 stores with a forecast the buyers trust
A hierarchical demand forecast, a promo-aware feature store and a replenishment workflow the category team can override — because a model nobody overrides is a model nobody uses.
Read the case studyEnergy analytics across 14 buildings and four BMS vendors
One data plane over BACnet, Modbus and a proprietary head-end, with fault detection that tells a facilities manager which asset to look at before the complaint arrives.
Read the case studyTurning 40,000 support calls a month into a product backlog
Diarised transcription, an LLM extraction pipeline with a graded evaluation set, and a review console where quality leads correct the model in place.
Read the case studyNext step
Tell us what you're trying to ship.
Send the brief, the RFP, or three messy sentences about the problem. You get a written point of view from an architect within two working days — not a sales deck.