# Extract Contract Terms From Scan Into a Key Dates List

- Author: Schema Law (https://www.schemalaw.com/)
- Published: 2026-07-23T14:37:56Z
- Updated: 2026-10-11T19:22:20Z
- Category: Contracts and agreements
- Canonical: https://www.schemalaw.com/blog/extract-contract-terms-from-scan

> How to extract contract terms from a scan when the terms are dates: find the term, renewal and notice clauses, work out each deadline, and list them.

To extract contract terms from a scan so that nothing renews or lapses unnoticed, run OCR on the whole agreement, find the term, renewal and notice clauses in the text, turn each period into a calendar date, and enter every date in a key dates list with its clause, its page and the assumptions behind it.

This post is about dates only. Parties, amounts, governing law and the rest of a contract summary are covered in the list of [contract terms worth extracting](https://www.schemalaw.com/blog/contract-data-extraction#which-contract-terms-are-worth-extracting). Dates get their own treatment because a missed notice window is silent: it may go unnoticed until the invoice for another year arrives.

## Which date terms in a scanned contract drive a deadline?

The date terms that drive a deadline are the ones that require someone to act, or stop being able to act, on a particular day: the end of the term, the last day to prevent a renewal, the window to exercise an option, and any notice period attached to a right to terminate.

It helps to sort every date-like term in the contract into three kinds before you record anything, because each kind is handled differently.

| Kind | What the contract gives you | Examples | What goes in the list |
| --- | --- | --- | --- |
| A stated date | A day, month and year printed on the page | Commencement date, a fixed expiry date, a price review on 1 July each year | The date as printed |
| A computed date | A starting point and a period | "Three years from the Commencement Date"; "at least 90 days before the end of the then-current term" | The date you worked out, plus the working |
| A triggered period | A period that starts when something happens | 30 days to cure after notice of breach; 10 days to dispute an invoice; confidentiality surviving 5 years after termination | The period and its trigger, with no date until the trigger occurs |

Computed dates are the easy ones to miss. A contract may never print the deadline anywhere. It prints a start, a length and a notice period in three different clauses, and the deadline exists only once somebody does the sum.

When the term clause gives an option contract, copy the first date of the window, the last date, and the notice period from the page. A condition subsequent that ends a right needs the trigger and the number of days in the same note. Leave the calendar math in a column the lawyer can review.

The terms to look for:

- **Non-renewal notice.** The last day to stop an automatic renewal.
- **Expiry of a fixed term** with no renewal, after which services or rights simply stop.
- **Option windows.** A right to extend, to buy, or to take more space or volume, usable only between two dates.
- **Termination for convenience.** May be available only after a minimum period, and only on a stated length of notice.
- **Price changes.** An annual uplift date, or a deadline to object to a proposed increase.
- **Dates tied to a milestone.** Delivery, acceptance and longstop dates.

Triggered periods belong in the list too, in a separate block. You cannot calendar them today, but when a breach notice lands, the person handling it should find "cure period: 30 days from receipt, clause 12.2, page 9" without rereading the agreement.

## Finding term, renewal and notice language in the OCR text

Term, renewal and notice language can sit in several places in the OCR text: the term clause, the definitions, the front page or order form, the notices clause, and sometimes a schedule. Read all of them. A date taken from one place alone may be half the answer.

| Where | What it contributes | What goes wrong if you skip it |
| --- | --- | --- |
| Cover page or order form | The commencement date, the length of the initial term | You use the signing date as the start |
| Definitions | What "Effective Date", "Initial Term", "Renewal Term" and "Business Day" mean | You count calendar days where the contract counts business days |
| Term clause | Length, renewal mechanism, non-renewal notice | You miss the renewal sentence that follows the term sentence |
| Termination clause | Notice lengths for each termination right | You record one notice period where there are three |
| Notices clause | How notice must be given and when it counts as received | Your notice is sent on time and received late |
| Schedules and statements of work | Their own terms and end dates | The master agreement is tracked and the order under it lapses |

Converted text makes this faster, since you can search an exported Word or plain text file instead of paging through images. Search for the defined terms once you know them, and for digits in brackets such as "(90)" and "(30)", which contracts use to restate a number written in words. The post on [how to search scanned contracts for a clause](https://www.schemalaw.com/blog/how-to-search-scanned-contracts-for-a-clause) gives fuller term lists and explains why a search can miss a clause in recognized text.

Two cautions specific to a scan. First, convert every page, including schedules and anything stapled to the back, because a later order form can restate the term. Second, a search of recognized text only finds what was read correctly. If "renew" came through as "rencw" on a faint page, the search passes over it. For the term clause, do not rely on search alone: find the clause in the table of contents or by its number and read it on the page image.

When you find the language, copy the whole sentence along with the number. "Ninety (90) days" means little without "prior to the expiration of the then-current term".

## How do you turn a contract notice period into a calendar date?

Turn a notice period into a calendar date in three moves: fix the day the term ends, count back the notice period using the contract's own way of counting, then allow for how long notice takes to be treated as received. Write down each assumption as you make it.

### A worked example

Marlow Dental Supply Co. and Tessaly Cloud Systems, Inc. are fictional. Their scanned subscription agreement says:

- Order form, page 1: "Commencement Date: March 1, 2022."
- Clause 9.1, page 6: the agreement "shall continue for an initial term of three (3) years from the Commencement Date."
- Clause 9.2, page 6: it "shall renew automatically for successive one (1) year terms unless either party gives written notice of non-renewal at least ninety (90) days prior to the expiration of the then-current term."
- Clause 15.3, page 11: notice sent by courier is "deemed received three (3) Business Days after dispatch."

**Step 1: the end of the term.** Three years from 1 March 2022. Read as ending the day before the third anniversary, the initial term's last day is 28 February 2025. Record that as an assumption, because someone could read the clause as running through 1 March 2025.

**Step 2: count back the notice period.** Ninety calendar days before 28 February 2025 is 30 November 2024. That day is a Saturday.

**Step 3: allow for receipt.** Take the cautious reading, that notice must be received, not merely sent, at least 90 days before expiry, and record it as an assumption for the lawyer to confirm. Under clause 15.3 a couriered notice counts as received three Business Days after dispatch. If the contract defines Business Day to exclude weekends and public holidays, and you want receipt no later than Friday 29 November 2024, count back three business days. Suppose the parties' holiday calendar treats Thursday 28 November 2024 as a public holiday. The count then runs Wednesday, Tuesday, Monday: dispatch by Monday 25 November 2024. Without that holiday the answer would be Tuesday 26 November, which is why the holiday list matters.

The contract never prints 25 November 2024, yet that is the date that belongs in the calendar.

### The questions that move the date

Each of these can shift a deadline by days or weeks. Answer them from the contract's own words, and where the words do not answer them, flag the row for the lawyer responsible. This post explains how to record the dates and does not give legal advice on how a court would count them.

- **Calendar days or business days?** Look for a definition. If there is none, record the assumption you used.
- **Days or months?** "Three months" before 28 February and "90 days" before 28 February are different dates.
- **"At least", "not less than", "no later than".** Each sets an outer limit. Treat the computed day as the last possible day and plan to act before it.
- **Sent or received?** Read the notices clause for whether time runs from dispatch or from delivery.
- **How must notice be given?** If the clause requires a courier to a named address, an email on the deadline may not count.
- **What if the day falls on a weekend?** Look for a clause that rolls the date forward or back. If the contract is silent, flag the row.

### Doing the sum in a spreadsheet

Excel has functions for both kinds of counting. Microsoft documents [the EDATE function](https://support.microsoft.com/en-us/office/edate-function-3c920eb2-6e66-44e7-a1f5-753ae47ee4f5) as returning the date that is the indicated number of months before or after a start date, with a negative value giving a past date. It documents [the WORKDAY function](https://support.microsoft.com/en-us/office/workday-function-f764a5b7-05fc-4494-9486-60d494efbf33) as returning the date a number of working days before or after a date, excluding weekends and any dates you list as holidays.

With the commencement date in cell B2:

```
Term end:            =EDATE(B2, 36) - 1
Notice deadline:     =C2 - 90
```

Subtracting 90 from a date cell counts calendar days. Use WORKDAY with a negative number and your own holiday list where the contract counts business days. The formulas apply your assumptions faithfully, including the wrong ones, so keep the assumptions visible in the row.

## Dates OCR misreads in a contract and how to catch them

OCR misreads dates in a few predictable ways: one digit taken for another, a month abbreviation garbled, an ordinal suffix mangled, or a handwritten date in a blank left out altogether. A wrong date looks as tidy as a right one, so check every date against the page image.

Schema Law's homepage says as much about its own output: nothing marks a passage as uncertain, so names, dates and amounts should be checked against the original. The same holds for any conversion you did not proofread. The [questions section of the homepage](https://www.schemalaw.com/#questions) has the full wording.

The usual damage:

| On the page | In the text | Why it matters |
| --- | --- | --- |
| 1 March 2022 | 7 March 2022 | Every computed date moves by six days |
| 2023 | 2028 | A plausible year, five years out |
| June 30 | June 3O | A letter O; the cell will not sort or calculate as a date |
| 31st | 3lst or 3 1st | A search for "31" misses it |
| Jan. | Jan, or Jun. | A different month entirely |
| thirty (30) days | thirty (80) days | The words and the figure now disagree |
| A date written by hand in a blank | Nothing, or a few stray characters | The start date is missing from the text altogether |

Four checks help catch these without reading the whole contract twice.

1. **Words against figures.** Where the contract says "ninety (90)", both must agree in the text. If they do not, look at the image. If they disagree on the image too, that is a problem in the contract, and it goes to the lawyer.
2. **Start plus length against stated end.** If the order form prints both a start date and an end date, the term clause's length should connect them.
3. **The weekday.** If the page says "Tuesday, March 1, 2022", confirm that the date was a Tuesday. A misread digit usually breaks the match.
4. **Order of events.** The signing date should not fall after a renewal date. An amendment should not predate the agreement it amends.

Separately from recognition, decide what a numeric date means. 03/04/2022 is 4 March to an American drafter and 3 April to a British one. Look for a date elsewhere in the same contract with a day above 12, which settles the convention, and write dates in your list with the month as a word.

[Handwritten dates](https://www.schemalaw.com/blog/handwritten-changes-to-a-contract) deserve their own pass. A commencement date may be left blank in the typed text and filled in with a pen at signing. Open the first page, the term clause and the signature page on the image and look for ink.

## What belongs in each row of a contract key dates list?

Each row of a key dates list holds one date, the action it calls for, and enough sourcing for a stranger to confirm it in a minute: the contract, the clause, the page of the scan, the quoted words and the assumptions used. One contract can produce several rows.

That is the difference from a contract summary, which has one row per contract and a column per term. A dates list is sorted by date, so the next thing due is always at the top whichever contract it belongs to.

| Column | What to put in it |
| --- | --- |
| Contract | A short name and the file name of the scan |
| Counterparty | The legal name from the signature block |
| Date type | Term end, non-renewal notice, option opens, option closes, price review |
| Date | Written with the month as a word |
| Basis | "Stated" or "Computed" |
| Working | For a computed date, the sum: "28 Feb 2025 less 90 calendar days" |
| Clause and page | Every clause relied on, with the page of the scan |
| Quoted language | The operative sentence, typed from the image |
| Assumptions | Anything the contract did not settle |
| Action and owner | What must happen and who decides |
| Act-by date | Your internal date, ahead of the contractual one |
| Verified by | Name and date of the person who checked the image |
| Documents read | The agreement and each amendment reviewed, by date |

The Marlow and Tessaly agreement produces these rows, shown with fewer columns to fit the page:

| Date type | Date | Basis | Working | Clause, page | Act-by |
| --- | --- | --- | --- | --- | --- |
| Dispatch non-renewal notice | 25 November 2024 | Computed | Receipt by 29 Nov less 3 Business Days, holiday on 28 Nov excluded | 9.2 p6; 15.3 p11 | 1 November 2024 |
| Last day for notice to be received | 30 November 2024 (Saturday) | Computed | 28 Feb 2025 less 90 calendar days | 9.2 p6 | See row above |
| Initial term ends | 28 February 2025 | Computed | 1 Mar 2022 plus 3 years, less 1 day | 9.1 p6; order form p1 | Not applicable |

Keep the contractual date and the act-by date in separate columns. If only the internal date survives, nobody can tell later how much room is really left.

A spreadsheet is enough to hold the list. Schema Law supplies the text you read the clauses from, exported as Word, plain text or another of the [export formats shown on the homepage](https://www.schemalaw.com/#formats). It does not build the list or pick out the dates; that part is yours.

## Who rechecks a key date when the contract is amended?

Give every contract in the list a named owner, and make that person responsible for rechecking its rows whenever a new document touches the contract. A key dates list goes stale the moment an amendment is signed and filed without anyone opening the spreadsheet.

Events that should send the owner back to the rows:

- **An amendment or extension is signed.** It may change the term, the notice period or the notices address.
- **A renewal happens.** Once the non-renewal deadline passes unused, the contract has a new term end and a new notice deadline, set by the renewal clause. Add the new rows and mark the old ones as passed.
- **Notice is given or received.** Record the date sent, the method and the proof of delivery beside the row it satisfied.
- **A new order or statement of work is signed** under a master agreement, with dates of its own.
- **A party changes its name or the contract is assigned.** The dates may stand, but the notice address may not.

When an amendment arrives as a scan, convert it, read it against the rows, and update the "Documents read" column even if nothing changed. That column tells the next reader whether a date reflects the contract as amended. Where several amendments touch the same clause, which one controls has to be worked out from their terms. The post on [putting contract amendments in the order they took effect](https://www.schemalaw.com/blog/conformed-copy-of-a-contract#putting-contract-amendments-in-the-order-they-took-effect) covers how to work that out.

Two habits keep the list trustworthy. Review the whole list on a fixed schedule, for example quarterly, looking for rows whose owner has left or whose act-by date has passed with no outcome recorded. And never overwrite a row when a date changes. Add a new row and mark the old one superseded, with the document that superseded it, so the history of each deadline stays readable.

## Try it on a real document

Upload a scanned PDF and export it as Word, a searchable PDF or plain text on the free plan. Your documents are never used to train an AI model. [Start free](https://www.schemalaw.com/api/auth/google)
