Module 3
Cleaning contract data
By the end of this module you can spot the six families of problem that quietly spoil a contract register, fix each without destroying the original, and write a short checklist to run before any analysis.
Part 1. The lecture
Why clean first
An error in the data does not stay where it is. A single payment term of 450 days instead of 45 moves a median. A duplicate row doubles a contract in a total. A euro amount in a dollar column adds the wrong number to a sum. Each error then travels into every chart and every report built on the data. Cleaning is the cheapest place to stop them.
Six families of problem
- Dates. 03/04/2025 may be 3 April or 4 March. Use one format that cannot be misread, such as 2025-04-03. Check that an end date is not before its start date.
- Units and currencies. Dollars and euros, days and weeks, thousands and ones. A column must hold one unit, stated in its definition. If currencies are mixed, record the currency and convert at a stated rate on a stated date.
- Names. “Fenmoor Packaging Ltd”, “FENMOOR PACKAGING” and “Fenmoor Packaging Limited” are one party. Add a standard name column and keep the original.
- Duplicates. The same contract entered twice, often from two sources. Remove one, and log it.
- Blanks and zeros. Decide what a blank means (not recorded) and what a zero means (a real zero), and write it down.
- Impossible or implausible values. A term of minus two years, a payment term of 450 days. Check them against the source. Do not guess.
How to clean safely
- Never overwrite the original. Keep the raw value, add a cleaned value, and log what changed and why.
- Go back to the contract when a fix is a judgement. Swapping two dates might be right, or might not.
- Mark what you cannot fix as unknown, with a reason. An honest blank beats an invented number.
- Count what you changed. “We corrected 14 of 600 records” tells the reader how much to trust the rest.
A pre-analysis checklist
Before you count or chart anything, run through: Are the dates in one format and in order? Is there one unit and one currency per column? Are names standardised? Are there duplicates? What do blanks and zeros mean? Are there any extreme values, and have they been checked? Five minutes on this saves a correction later.
Part 2. Lab: Data Cleaner
Twelve rows have been pulled from a contract register. Before anyone counts or adds anything, find the rows with a problem. Tick every row that would give a wrong answer if it were counted or totalled as it stands. There are eight problem rows, and four clean ones.
| # | Counterparty | Start | End | Annual value | Cap | Payment | Problem? |
|---|---|---|---|---|---|---|---|
| 1 | Fenmoor Packaging Ltd | 2024-03-01 | 2027-02-28 | $180,000 | 1x fees | 45 days | |
| 2 | FENMOOR PACKAGING | 2025-06-01 | 2028-05-31 | $60,000 | 1x fees | 45 days | |
| 3 | Larkhill Trading Ltd | 03/04/2025 | 02/04/2028 | $85,000 | 2x fees | 30 days | |
| 4 | Stanmoor Systems Ltd | 2024-06-01 | 2023-05-31 | $120,000 | 1x fees | 60 days | |
| 5 | Oakridge Software Ltd | 2025-01-01 | 2027-12-31 | €95,000 | 2x fees | 30 days | |
| 6 | Heathcote Estates Ltd | 2023-09-01 | 2028-08-31 | 120 | 1x fees | 30 days | |
| 7 | Ravenscar Works Ltd | 2024-11-01 | 2027-10-31 | $40,000 | uncapped | 60 days | |
| 8 | Ravenscar Works Ltd | 2024-11-01 | 2027-10-31 | $40,000 | uncapped | 60 days | |
| 9 | Wetherby Foods Ltd | 2025-02-01 | 2028-01-31 | $25,000 | 0 | 45 days | |
| 10 | Thornby Haulage Ltd | 2024-04-01 | 2027-03-31 | $250,000 | 1x fees | 45 days | |
| 11 | Marlow Supplies Ltd | 2025-05-01 | 2027-04-30 | $18,000 | 0.5x fees | 6 weeks | |
| 12 | Pennard Labs Ltd | 2025-08-01 | 2028-07-31 | $400,000 | 2x fees | 30 days |
Part 3. Check your understanding
Ten questions drawn from a larger pool. In this pilot your score is shown but not saved.
This course teaches how to turn contracts into reliable data, using invented contracts, fictional parties and made-up figures. No real contracts or tools are used, and nothing here is legal advice. Never paste a real client’s confidential contracts into a public tool.
