During a due diligence engagement for a mid-market acquisition, the target company handed over a data room with just under 2,400 contracts: customer agreements, vendor contracts, leases, employment agreements, and a handful of licensing deals nobody on the buy side had known existed until they showed up in the folder structure. The deal team had three weeks before the exclusivity window closed. Reading 2,400 contracts by hand in three weeks isn't reading, it's skimming, and skimming is exactly how change-of-control clauses and unfavorable termination rights get missed.
Contract review in due diligence isn't a general read of every document. It's a targeted search for a specific set of risk categories that could affect deal value or deal structure: change-of-control provisions that let a counterparty terminate or renegotiate if the company is acquired, exclusivity or non-compete clauses that could restrict the combined entity, assignment restrictions that block the contract from transferring to the acquirer without counterparty consent, termination-for-convenience clauses with short notice periods on revenue-critical customer contracts, and indemnification or liability caps that are unusually broad or unusually thin relative to market standard.
The problem with manual review at volume isn't that lawyers can't identify these clauses, it's that fatigue and time pressure make consistency hard to maintain across 2,400 documents reviewed by a team of associates working under deadline. The clause on contract 1,800 doesn't get the same scrutiny as the clause on contract 50, purely because of when in the review cycle it landed.
I approach this as a two-stage pipeline. The first stage is document classification and structuring: taking the raw data room, which is usually a mess of PDFs, scanned images, and Word documents with inconsistent naming conventions, and normalizing it into a structured format the extraction model can work with. This means OCR for scanned documents, document type classification (is this a customer contract, a vendor agreement, a lease, an employment agreement), and splitting each document into individual clauses with their section headers preserved, since clause meaning often depends on context from surrounding sections.
The second stage is the actual extraction and flagging: running each clause against a trained classifier for the risk categories that matter for that document type. A change-of-control clause search on customer contracts matters enormously. On employment agreements, it's usually irrelevant, and a system that flags it there anyway just adds noise the review team has to wade through. Tuning the extraction categories per document type, rather than running one universal set of risk flags across everything, is what keeps the output usable instead of just generating a longer list of false positives than the deal team started with.
Every extracted clause needs a confidence score attached, and low-confidence extractions need to route to human review rather than being presented with the same certainty as high-confidence ones. I've seen extraction tools deployed without this distinction, where the output list treats a clearly-worded change-of-control clause and an ambiguous one with unusual phrasing as equally reliable findings. That's dangerous in a diligence context because the deal team starts trusting the tool's output at face value under time pressure, and the ambiguous extractions are exactly the ones most likely to be either false positives or, worse, missed risks the model wasn't confident enough to flag strongly.
I set the review threshold conservatively, meaning anything below roughly 85% confidence gets a human look, even though this means the associate team still reviews a meaningful chunk of documents directly. The point of the tool isn't to eliminate human review, it's to let the team spend their limited hours on the clauses and documents that actually need judgment, instead of spending equal time on every document regardless of risk.
A list of flagged clauses isn't useful on its own. What deal teams need is a risk register organized by category, with each flagged item linked back to the source document and page, and a severity assessment that reflects deal-specific context, not a generic risk score. A change-of-control clause on the target's five largest customer contracts by revenue is a different level of concern than the same clause on a contract representing 0.1% of revenue. I build the output to pull revenue or contract value data where available and weight the risk presentation accordingly, so the deal team's attention goes to the flags that could actually move the valuation or the deal terms.
For that 2,400-contract data room, the extraction and classification pipeline ran in about two days, which left the legal team roughly two and a half weeks to review the flagged, prioritized subset instead of the full document set under the same three-week window. That's the honest value proposition here: this doesn't replace legal judgment on the clauses that matter, it protects the time available for that judgment by making sure it gets spent where the actual risk is concentrated instead of spread evenly, and thinly, across every page in the data room.