Claude Code Looked Right but Missed $800K - Natalia Connolly & Kevin Madura, AlixPartners
Loading slides…
Read the talk
Claude Code Looked Right but Missed $800K
Claude Code got annual spend right and missed roughly $800,000 in contract value. In a post-merger procurement analysis, those two numbers depended on different evidence. So did the deadline for doing anything about them.
From a talk by Kevin Madura and Natalia Connolly
At a glance
Ideas worth remembering
A usable contract value depends on the parent link and the amendment language. A missing link hid roughly $800,000 in one example. Adding restated totals turned $7 million into about $17 million in another.
Give a fresh agent access to the rules that make a query meaningful. A renewal question calls for a deadline calculated from the renewal clause. A denied invoice lookup calls for explicit feedback so the unknown amount stays out of the arithmetic.
A savings proposal has two further tests. Does another finding already claim those dollars? Has management already started the work? Reconciliation answers the first. Current information from the business answers the second.
What can the buyer take into a negotiation?
A large healthcare company had acquired a smaller specialist. Its procurement team now had hundreds of vendors across the two companies, more than 40,000 distinct contract documents, and several databases with no links between them. Even for a vendor that both companies used, the buyer had to piece together what each company bought and on what terms. Natalia Connolly and Kevin Madura of AlixPartners used Claude Code on the real engagement and illustrated it with a synthetic replica.
In that replica, Harbor Health had acquired Summit Health Plan. Both bought services from Acme Health Services. Could Harbor negotiate better terms on their combined business? How much would that save, and how soon did Harbor have to act? The procurement lead would be sitting across the table from Acme. If Acme challenged a rate or disputed how much Harbor had paid, the lead needed to be able to turn to a particular contract page or invoice line.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
The warehouse check caught two different errors
Claude Code’s first answers looked complete enough to use. Which ones could the buyer rely on? Connolly and Madura went back to the warehouse and checked each answer. Total annual spend was correct. So were the split between the two companies and the contract counts. Total contract value, a separate figure, was off by approximately $800,000.
The second error changed the buyer’s options. For the contract due to expire first, Claude gave December 1 as the deadline to prevent automatic renewal. The actual deadline was November 1. A buyer who waited until the reported date would already have let the contract renew.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A missing document, a missing link, and a misleading sum
Two failures can make a contract search look complete while leaving money out of the answer.
- A document never arrives. A long contract can hang during preprocessing. If the job catches the timeout and moves on, later queries run against a database that never received the contract.
- A document arrives without its parent link. An amendment can exist in the portfolio and still be unreachable by following the parent contract’s records. This was the cause of the roughly $800,000 miss. Claude could find the contract and still miss the amendment that changed its value.
Finding every amendment creates a different question. Which of its dollars should enter the total? In another example, a master service agreement and two amendments each supplied a contract value. Extract the three dollar amounts and add them, and the result is about $17 million. Read the language around the amounts and the operation changes. Each amendment restated the total value of the agreement. The latest amendment put that value at $7 million. Summing the records counted earlier versions of the same commitment.
Even a single document can separate a number from its meaning. A service rate table runs onto a second page. The rows continue, but the column headers stay on page one. An extractor can transcribe every digit on page two and still have to guess what each value represents. The extraction needs to carry the first page’s column meanings into the continuation.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Four stages of preparation before Claude analyzes spend
The two engineers spent about two weeks building a five-stage pipeline to handle problems like these. Once it was ready, it processed more than 40,000 contract documents overnight.
- Preprocess the documents. Document processing and optical character recognition (OCR) made page contents available for extraction.
- Classify each document. Identify a master service agreement, amendment, or nondisclosure agreement so the next stage knows what kind of document it is reading.
- Extract terms, rates, and spend. Handle layout problems here, including rate tables that break across page boundaries.
- Map services to spend categories. Give the services in the contracts a common set of categories for analysis.
- Analyze the extracted data. Claude Code can now work across structured tables. Those same tables give the engineers a way to check its answers programmatically.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
What OCR leaves behind in a chart
What would a reader know about a chart if all they had were its axis labels? Basic OCR can recover the text on the axes while losing the relationship drawn between them. The team supplied contract pages as images and extracted structured output from the visual contents. That gave the analysis a database of relevant elements even where the page conveyed information graphically.
The choice to define fields up front came from the procurement questions. The team already knew it would need rate tiers and rebates. It could tell the extractor what to look for, then give Claude the resulting records to explore. Starting directly from unstructured pages would have left the agent to discover those categories as part of each analysis.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Put the deal’s business rules in the tools
With contract records, spend data, and invoices normalized together, Claude Code could list tables, execute SQL, and build more specialized tools for itself. Two operations useful on this deal were retrieving a rate-card page and looking up spend for a specific vendor. A fresh agent could ask for the business object it needed. The tool’s query could apply what the team had already learned about how to retrieve it.
Exploration still mattered. Much as it could navigate an unfamiliar codebase, Claude Code could move through the tables and pull together the elements a question required. Once a retrieval method worked, the team could record it in a prompt. They generally preferred a custom tool or database view for a rule they needed to enforce. Each caller would then get the rule as part of the query, without having to interpret an instruction afresh.
Custom MCP servers and configurations offered a way to carry those operations forward through the engagement. They also gave the team a place to govern access. It could define the set of operations an agent was allowed to perform against the underlying data and block calls outside that set.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Find the governing clause and the agreement it changes
December 1 had a source. Claude had pulled a date from the termination clause. Harbor’s question was about preventing auto-renewal, which required calculating the notice deadline from the renewal clause. That calculation gave November 1. A citation to the termination clause could have proved that Claude read a real date while doing nothing to help the buyer act on time. The reusable rule here was which clause to consult and what to calculate when a buyer asks about renewal.
The missing amendment called for a different repair. A contract lifecycle management system (CLM) might already hold vendor names and termination dates. In Madura’s experience, its records could still be poorly maintained. The team used the available data and also had Claude read the documents from the bottom up to recover relationships the CLM had missed.
The parent of an amendment might itself sit below the master agreement. A master service agreement can cover several statements of work, each with amendments of its own. Reconstructing that hierarchy gives a loose amendment a specific place to attach. An analyst can then follow one statement of work through its revisions, determine which terms still apply, and include its current value once in the vendor relationship.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
When a failed lookup looks like a zero-dollar invoice
The two merging companies had different arrangements for accessing their data. Some tool calls encountered permission problems or returned a malformed value or a zero. Without feedback that explained the failure, Claude could carry on with the apparent value. A lookup problem had become an assertion about the business: the invoice was worth zero.
An explicit access-denied result changes what the agent can reasonably do next. It can flag the missing information for a human, or consult another authoritative database if the same information is available there. Either route preserves the distinction a savings calculation depends on. A zero is an amount the calculation can use. A denied lookup leaves the amount unknown.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Parallel searches can claim the same savings
Experienced procurement colleagues had a library of ways to look for savings. One analysis asks where the two companies share a vendor, as Harbor and Summit did with Acme. Another asks where different vendors supply the same service. The team dispatched agents to pursue analyses like these in parallel. Each could turn up a plausible opportunity on its own. The dollar amounts could only be combined after someone checked whether multiple findings claimed the same underlying savings.
Where should the analyses meet? The team added a reconciliation step after the agents returned their findings. Claude had latitude to explore within each analysis. At reconciliation the workflow prescribed which data points to compare, how to resolve overlap, and which next steps were acceptable. A common source or vendor gave the workflow a reason to examine two findings together. The question was whether realizing the first saving would already realize some or all of the second.
Where do independent savings searches meet?
Read the diagram as text
- Procurement analyses. Assign agents to investigate different ways the merger could reduce spend.
- Shared vendor. Parallel searches — Look for a supplier used by both companies.
- Shared service. Parallel searches — Look for different suppliers providing the same service.
- Reconcile findings. Compare the underlying opportunities under specified rules so the same savings enter the estimate once.
- Procurement analyses → Shared vendor: Assign search.
- Procurement analyses → Shared service: Assign search.
- Shared vendor → Reconcile findings: Return candidate findings.
- Shared service → Reconcile findings: Return candidate findings.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Management had started three months ago
Even a correctly calculated, unique opportunity could be useless as a recommendation. The merger was already under way. Claude could identify a promising action and management could dismiss it immediately because work had started three months earlier. The contracts could support the savings estimate. Knowing whether anyone still needed to act required information from the business.
Timing that context was tricky. Constrain the search too early and an agent may skip productive analysis. Wait until the recommendations reach management and the team may spend the meeting rediscovering work in progress. Madura described tagging relevant project information as the analysis proceeded and making it available on later passes. A memory system or a tool could carry that knowledge forward so the next agent could spend its time on an open question.
For this engagement, Connolly and Madura judged the up-front cost in engineering time, money, and tokens worthwhile because later agents could use the prepared data without repeatedly discovering how it fit together. Business context had a different cost. More room for contract text would still leave Claude unable to tell the procurement lead what management had started three months ago. Someone had to supply that fact while it could still change the recommendation.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Full transcript
Loading transcript…