Contract data extraction
Tavnit reads executed contracts and returns the terms that carry obligations — parties, effective and renewal dates, notice periods, payment terms, liability caps — as structured fields. The portfolio becomes a table you can query instead of a folder you have to read.
Why this is painful
Most organisations cannot answer basic questions about their own contracts. Which agreements auto-renew next quarter? What is our aggregate liability exposure? Which suppliers have 90-day notice periods? The answers exist, spread across hundreds of PDFs nobody has time to open.
The cost is not the reading — it is the renewals that pass unnoticed, and the terms that get discovered during a dispute rather than before one.
What to extract
| Field | Why it needs care |
|---|---|
| Parties and signing entities | The legal entity is often not the trading name, and both are worth capturing. |
| Effective and expiry dates | The pair that drives every renewal question you will want to ask later. |
| Auto-renewal and notice period | The two fields that decide whether a renewal is a choice or a surprise. |
| Payment terms and amounts | Net-30, milestones, escalators. Frequently in prose rather than a table. |
| Liability cap and indemnities | Usually a clause, not a number. Worth extracting as text plus a parsed value where one exists. |
| Governing law and jurisdiction | Short, easy to extract, and tedious to find manually across a portfolio. |
| Termination rights | For convenience, for cause, and the notice each requires. |
What makes contract analysis hard
The answer is in prose, not a field
An invoice puts the total in a box. A contract buries the notice period in the middle of a clause, sometimes in words rather than digits. Extraction hints let you tell the flow what the term means and where it tends to appear, rather than hoping a label matches.
Amendments change the answer
The operative terms are frequently in an amendment, not the original. Treat each document as its own run and keep the executed date as a field, so the current position is a query rather than an assumption about which file is newest.
Getting this wrong is expensive, so review is not optional
A misread renewal date is a contract you did not exit in time. This is a use case where review on every run is proportionate, and where the append-only audit trail matters as much as the extraction — you can show who confirmed a term and when.
How the pipeline handles it
- Flows — Extraction hints tell the AI what a term means, which matters far more here than on documents with labelled fields.
- Human in the Loop — Review on every run, with a permanent record of who confirmed each term.
- Buckets — Turns the portfolio into a queryable table — which agreements renew next quarter, sorted by notice period.
- Cleaners — Normalises date formats and can compute a notice deadline from an expiry date and notice period.
Common questions
- Can it handle contracts with no consistent structure?
- Yes — that is the normal case. There is no template to configure. You describe the terms you want and the flow locates them wherever they appear, which is why extraction hints matter more here than on structured documents.
- What about amendments and side letters?
- Process each as its own run with the executed date captured as a field. The current position then comes from querying your Bucket rather than from guessing which PDF is most recent.
- Is the extracted data queryable?
- Yes. Results land in a Bucket as typed columns, so you can filter, sort and chart across the whole portfolio without exporting anything.
Other document types
Try it on one document
Build a flow, send a real contract analysi through it, and see what comes back. Free credits to start.
Start free