Government contract expiry alerts · UK
Know who holds the contract, and when it ends, months before the rebid.
Planned rebid alerts for UK suppliers to public bodies in facilities management, plant and equipment, IT, security and grounds maintenance. Each alert names the incumbent, the award value and the contract end date, with a link to the public source, wherever the buyer published them.
Not live yet: waitlist for a planned pilot. No alerts are being delivered today.
Coverage: window, seed and thresholds locked. Script not yet run. No figures shown.
Rebids are usually found late
Public contracts are renewed on a cycle. By the time a new tender is advertised, the incumbent has often had months to build the relationship and shape the requirement.
Late discovery
If the first time you see a contract is the tender notice, you have weeks to find partners, price the work and write a response, not months.
The incumbent's head start
The current supplier knows the site, the staff, the buyer and the pain points. Early sight of an expiry date gives you time to start closing that gap.
Manual searching
Trawling Contracts Finder and Find a Tender by keyword, buyer and date range is slow, easy to forget and hard to repeat consistently across sectors and regions.
Award notices often carry the supplier, value and contract period, but how often they do, and how reliably, is exactly what we are measuring below.
How it will work in 3 steps
Choose your sector and region
Tell us which sector you supply and which UK nation or region you cover.
We monitor public OCDS data
We watch published award and contract end-date data for contracts approaching expiry in your sector.
You get an alert
Each alert shows the incumbent, value, end date and a source link, for contracts expiring in the next 3–12 months.
Example alert format
- Sector
- [Sector, e.g. Facilities management]
- Buyer
- [Public body name]
- Contract
- [Contract title as published]
- Incumbent
- [Supplier name]
- Award value
- [£ value as published]
- Contract end date
- [DD Month YYYY]
- Extension options
- [Stated in notice / not stated]
- Source
- [Link to the public notice]
Every value above is a placeholder. Real alerts would carry the buyer's published details and should be verified at source.
Who it's for
Business development and bid teams at UK suppliers to public bodies.
Facilities management
Soft and hard FM, cleaning, catering and building services contracts where renewal cycles drive the pipeline.
Plant and equipment
Hire, supply and maintenance of plant and equipment, where end dates shape fleet and capacity planning.
IT
Managed services, support, software and infrastructure contracts where long lead times matter for solution design.
Security
Manned guarding, alarm monitoring and access control contracts with fixed terms and mobilisation needs.
Grounds maintenance
Grounds, landscaping and green-space contracts where seasonal work makes early preparation valuable.
Data coverage: the locked protocol, and what we do not know yet
An alert is only possible when a public release has both a usable end date and a named incumbent. We are measuring how often that is true in real OCDS data, rather than assuming it.
Status: script not yet run. No export from the locked v1 script has been published, so no coverage counts, shares or classifications exist yet.
The window, seed, CPV list, field mapping, scoring definitions and launch thresholds below are fixed before any results are seen, so the numbers cannot be shaped after the fact. Every result cell still reads “Not measured yet”. A cell is replaced only by an n / N count taken directly from a completed run of the script against the live sources, published with the run date and script version. Nothing in these tables is an estimate, and we will not fill a cell by extrapolation, simulation or from memory.
How the cells will be filled and classified
- Run. The locked v1 script is executed once per source (Contracts Finder, Find a Tender) on a networked machine, with window 1 Jan to 31 Dec 2024 and base seed
20240101, drawing up to 100 award-stage releases per sector per source. - Export. The script exports the raw per-cell counts (n of N for each measure), the run date and the script version. These are copied into the tables below unedited.
- Thin flag. Any cell with N under 30 is marked thin and receives no launch classification.
- Classify. Each non-thin cell is classified on its Alertable (both) share against the pre-registered thresholds (60% and 30%, set out under “Planned pilot” below). The thresholds are not altered after the results are seen.
- Re-runs. If a run is repeated, the previous run stays on record and the reason for the re-run is logged here.
What the run export must contain
This is the hand-over format. Each field maps to one cell below, so the page can be filled verbatim without recalculation. If any field is missing from the export, that cell stays “Not measured yet”. If an export contradicts the locked parameters or is internally inconsistent (for example a count larger than its sample size), the page refuses to fill any cell.
| Level | Fields (one value per source, and per sector within source) |
|---|---|
| Run | run_date (ISO date), script_version, window_start, window_end, base_seed, max_per_cell |
| Per source | award_releases_pulled, unclassified, multi_sector |
| Per sector and source | N, n_end_date, n_incumbent, n_value, n_alertable, n_extension_stated, thin (N under 30), classification (full / partial / held back / thin, from n_alertable / N against 60% and 30%) |
Locked sampling protocol (v1)
- Sources. Public OCDS release packages from Contracts Finder and from Find a Tender. Each source is sampled and reported separately, because the two publishing regimes differ in notice structure.
- Stage. Award-stage releases only: releases whose tag includes
awardorcontract. Tender-only and planning-only releases are excluded. - Sample window. Releases published from 1 January 2024 to 31 December 2024 inclusive (publication date), the same for both sources so results are comparable. This is a fixed historical window, chosen so the sample cannot be changed as new notices arrive. It is not a forecast of which contracts expire when.
- Sector assignment. By CPV code, using the list below. A release matches a sector if its main classification, or any item classification, is in that sector's list (a division-level code matches its descendants). A release matching more than one sector is counted once, under its main-classification sector, and the overlap count is reported. Releases that match no sector, or lack a CPV code, are counted separately as unclassified and are not forced into a sector.
- Draw. Per sector and per source, up to 100 releases, after de-duplicating by release identifier (
ocid) and sorting the pool byocid. The draw uses a seeded pseudo-random generator with base seed20240101, combined with the source and sector name for each cell so cells are independent and repeatable. If fewer than 100 releases exist in the window, we take all of them and report the actual number. A cell with fewer than 30 releases is marked thin, and its percentages are shown with that warning. - Scoring. Each release is scored once against the definitions below, using the field mapping below. We report counts out of the sample size, then the share, never the share alone.
- Repeatability. The extraction script version, seed and window are recorded in the run record below so anyone can re-run the same draw. Any change to this protocol after results are seen will be logged on this page with the reason.
Proposed CPV list (locked before the run)
| Sector | CPV codes |
|---|---|
| Facilities management | 79993000 building and facilities management; 79993100 facilities management; 90910000 cleaning services; 90911200 building-cleaning services; 50700000 repair and maintenance of building installations; 55520000 catering services |
| Plant and equipment | 45500000 hire of construction and civil engineering machinery and equipment with operator; 50530000 repair and maintenance of machinery; 42000000 industrial machinery (division); 43000000 mining, quarrying and construction machinery (division) |
| IT | 72000000 IT services; 48000000 software packages and information systems (division); 50320000 repair and maintenance of personal computers |
| Security | 79710000 security services; 79711000 alarm-monitoring services; 79713000 guard services; 35120000 surveillance and security systems and devices |
| Grounds maintenance | 77300000 horticultural services; 77310000 planting and maintenance of green areas; 77313000 parks maintenance services; 77314000 grounds maintenance services |
This is the locked v1 list. Broad codes such as the machinery divisions may pull in contracts that are not plant hire or maintenance, so we will report how many sampled releases were manually judged out of sector, if any.
What counts as “usable”
- Usable end date
- A contract end date is present in a parseable form, or can be derived from a published start date plus a published duration, and is not earlier than the start date. Checked in order:
contracts[].period.endDate,awards[].contractPeriod.endDate, then start date plusdurationInDaysfrom the same blocks. Dates that are missing, malformed or contradictory do not count. We do not usetender.contractPeriodas a substitute, since it describes the planned rather than the awarded contract. - Named incumbent
- A supplier is named on the award (
awards[].suppliers[].name). Releases with no supplier, or only a placeholder, do not count. - Award value
- A value and currency are published for the award or contract (
awards[].valueorcontracts[].value). A value of zero or a missing currency does not count. - Alertable
- Both a usable end date and a named incumbent are present. This is the figure that decides whether an alert can be built for that contract.
- Extension option stated
- The release says whether extensions or renewals exist, either as structured data (such as a maximum extent date or renewal description) or explicit text. It does not mean they will be used. Silence is counted as “not stated”, not as “no extension”.
Run record
| Item | Contracts Finder | Find a Tender |
|---|---|---|
| Sample window (publication dates) | 1 Jan 2024 to 31 Dec 2024 (locked) | 1 Jan 2024 to 31 Dec 2024 (locked) |
| Base random seed | 20240101 (locked) | 20240101 (locked) |
| Maximum releases per sector | 100 (locked) | 100 (locked) |
| Run date | Not measured yet | Not measured yet |
| Script version | Not measured yet | Not measured yet |
| Award-stage releases pulled (before sector filter) | Not measured yet | Not measured yet |
| Unclassified (no matching CPV) | Not measured yet | Not measured yet |
| Matched more than one sector | Not measured yet | Not measured yet |
| Sector | Sample size | Usable end date | Named incumbent | Award value | Alertable (both) | Extension option stated | Thin? | Classification |
|---|---|---|---|---|---|---|---|---|
| Contracts Finder | ||||||||
| Facilities management | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| Plant and equipment | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| IT | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| Security | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| Grounds maintenance | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| Find a Tender | ||||||||
| Facilities management | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| Plant and equipment | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| IT | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| Security | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
| Grounds maintenance | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not measured yet | Not classified yet |
These cells will be filled from the first completed run and dated. Until then, treat this page as a statement of method only.
Known limits we will report whatever the numbers show
- Contract end dates can be extended, varied or ended early after the notice was published.
- Some notices omit end dates, extension options or final values.
- Frameworks, call-offs and dynamic purchasing systems may not follow a simple expiry-then-rebid pattern.
- Coverage depends on what buyers publish. Some devolved-nation buyers publish on separate national portals, so Scotland, Wales and Northern Ireland coverage will be confirmed by the sample before the pilot is scoped for those regions.
- A buyer may re-procure differently, bring the service in-house or not re-tender at all.
- A sample describes the data we drew, not every release ever published. We will state the sample window and size next to every figure.
- The 2024 window reflects the publishing practice of that year. Notice structure may change over time, so we will re-run the sample on a newer window before any launch decision is treated as final.
- CPV codes are chosen by buyers and are sometimes broad or wrong, so sector assignment by CPV will include some misclassified releases and miss others.
Planned pilot and draft scope
Early pilot planned from $500/month for waitlist members. Nothing is charged now.
This price is planned and non-binding. Joining the waitlist is free and creates no obligation. We will contact waitlist members before any pilot starts.
Pre-registered launch thresholds
These thresholds are fixed now, before any result exists, and will be applied unchanged to each sector-and-source cell using its Alertable (both) share:
- Full coverage candidate: sample is not thin (N of 30 or more) and at least 60% of sampled releases are alertable.
- Partial coverage: sample is not thin and 30% to under 60% are alertable. Alerts would be offered only for the releases that qualify, and described as partial.
- Held back: under 30% alertable. Not offered in the pilot.
- Thin cell (N under 30): no launch decision is made from it. It is re-sampled on a wider window first.
No sector is confirmed for launch until the run is complete and each cell has been classified against these rules.
Draft scope, subject to the coverage results above
- Sectors: facilities management, plant and equipment, IT, security, grounds maintenance. Because no coverage has been measured yet, no sector is confirmed for launch.
- Included in alerts: only contracts with a usable end date and a named incumbent, with a link to the public source notice.
- Not included: contracts with a missing or unusable end date will not be presented as expiring. We may offer them as a separate “end date unknown” list if the data supports it.
- Regions: England and UK-wide buyers first. Scotland, Wales and Northern Ireland depend on measured coverage.
- Not promised: a rebid, a tender, or a win. Alerts are leads to verify.
This scope will be updated with measured counts and the confirmed sector list once the first sample has been run.
Frequently asked questions
Are contract expiry alerts live today?
No. The service is not live yet. This page collects a waitlist for a planned pilot. No alerts are being delivered and nothing is charged now.
Where does the contract expiry data come from?
The planned service is built from public UK Open Contracting Data Standard (OCDS) releases, such as those published for Contracts Finder and Find a Tender. We link each alert back to its public source notice.
How many public contracts actually have a usable end date and incumbent?
We do not know yet and we are not going to guess. The sampling window, seed, CPV list, scoring rules and launch thresholds are fixed and published on this page, but the locked script has not yet been run and no output has been published, so every result cell still reads “Not measured yet”. Measured counts, shares, the run date and the script version will replace those cells once the output exists. See data coverage.
How accurate are the contract end dates?
End dates come from what the buyer published. Contracts can be extended, varied or terminated early, and some notices omit end dates or options. Treat every alert as a lead to verify against the source notice and the buyer, not as a guarantee of a rebid.
Will an alert help me win the rebid?
We cannot promise that. An alert is early information about the incumbent, value and end date. Whether you bid, and whether you win, depends on your own proposal, pricing and the buyer's procurement process.
What will the pilot cost?
An early pilot is planned from $500 per month for waitlist members. This is a planned, non-binding price and the scope depends on measured data coverage. Nothing is charged now, and joining the waitlist does not commit you to anything.
What do you do with my email address?
We use it to contact you about the waitlist and the pilot, such as launch updates and a pilot invitation. We do not sell it. See the privacy policy for details.
Join the waitlist
Tell us your sector, region and the buyers you care about. This helps us choose what to sample and test next. No payment is taken.
Thanks, you're on the waitlist.
We have your details. This is a waitlist only: no alerts are being sent yet and nothing has been charged. We will email you before any pilot begins.
Questions? Email julien@relaycairn.com.