The insurance certificate expired three weeks before anyone noticed
In short
An expiry that escapes is nearly always a data-shape problem: the system holds 1 renewal date per subcontractor, while the real world holds one per policy, per project, per requirement. Build the matrix — sub by policy type by project, earliest expiry first, crews on site flagged — and the holes show in one screen.
Key takeaways
- One expiry date per company cannot represent 4 policies renewing on 4 different dates.
- Most renewals arrive as a certificate alone, so the file quietly reverts to unverified while looking green.
- Requirements differ per project, so a sub can be compliant on one job and not on the next that afternoon.
- Route the alert to whoever can hold a payment or the gate. Everyone else forwards it.
- A compliance state that gates nothing is documentation. The gate is what makes it a control.
The certificate did not expire quietly. Your record of it did. Nearly every escape has one cause: the system stores a single expiry per subcontractor, while that subcontractor carries several policies renewing on different dates, against requirements that differ from project to project. One date cannot represent that, so it represents whichever one somebody happened to key in.
Build the matrix before buying alerting. Rows are subcontractor and policy type, columns are the projects each is engaged on, cells hold the expiry and the verification state, sorted with the earliest expiry at the top and anyone with a crew on site this week flagged. Most contractors find the hole inside 5 minutes, and it is rarely the sub they were worried about. What proves the cover in the first place is the endorsement rather than the certificate; this page is about the dates.
The matrix that shows the hole in one screen
- List active subcontractors per project from executed subcontracts and open commitments, not from the vendor list. The vendor list contains everyone you have ever paid; you need everyone who can walk through a gate this month.
- List the policy types each project actually requires, taken from that project's own insurance exhibit rather than from a company-wide default.
- For every cell, record 4 things: the document on file, the expiry printed on it, whether the endorsement is present, and the date a named person verified it.
- Flag every subcontractor with labour on site in the next 14 days. That flag is what turns the matrix from a report into a morning's work.
- Sort by earliest expiry and count the cells that are empty, the cells that are stale, and the cells where a date exists but no document does.
- Do it manually the first time, on 1 project, before commissioning any system. The pattern of the holes is what tells you which of the causes below you have.
Five ways an expiry gets past you
| Cause | Signature in the matrix | What closes it |
|---|---|---|
| Expiry stored on the company | 1 date on the vendor record; policies with different real dates behind it | Move the date onto the policy, and the policy onto the project engagement |
| Renewal arrives as a certificate only | Current expiry, endorsement field empty or holding last year's file | Two acceptance states: date updated, and evidence verified by a person |
| Project requirements not modelled | Same sub compliant on one job, non-compliant on another with the same file | A requirement set per project, versioned with the contract exhibit |
| Alerts go to somebody with no leverage | Alerts were sent for weeks and nothing changed | Route to the person who can hold a payment or refuse the gate |
| Compliance state gates nothing | Everything documented, work proceeding regardless | Bind the state to site access and to payment release |
One date on the company record is the defect
The shape the problem actually has is 4 objects, and most systems ship with 1. Until they exist separately, every fix downstream is a workaround.
- The entity. The legal entity holding the policy, which is not always the name on your purchase order and is almost never the trading name on the sign.
- The policy. One row each, with its own insurer, number and expiry, because general liability, workers compensation, commercial auto and any excess layer renew on their own clocks.
- The evidence. The documents themselves, each with an issue date and the date a person verified it — 2 dates that answer different questions.
- The requirement. What this project demands, versioned with the contract exhibit, so a change in requirements re-opens the check rather than silently passing against last year's rule.
With those 4 in place, the matrix is a join rather than a spreadsheet somebody maintains. Without them, you are storing a status where a relationship belongs, and every subsequent report inherits the error.
The renewal that arrives without the part that matters
This is the failure that hides best. The broker sends a fresh certificate a week before renewal, somebody updates the expiry, and the row turns green. The endorsement was never reissued, or was reissued and never sent. The file now looks healthier than it did last month while proving strictly less.
A renewal that updates the date and not the evidence makes the file look healthier at exactly the moment it proves less.
The mechanical fix is to make renewal reset 2 states rather than 1. A new expiry sets the date state; only a person who opened the endorsement can set the evidence state, and their name and the date go on the row. Any bulk import that sets both at once should be impossible, because that is precisely how 200 cells end up verified on the same afternoon.
Send the alert to somebody who can stop something
Alerts fail on routing more often than on timing. A project engineer who receives 30 reminders a week and can neither hold a payment nor refuse a gate forwards them, and the forwarded message arrives without the authority that made it worth reading. The subcontractor's broker, meanwhile, owes you nothing at all and will act on their own client's instruction, not yours.
- At 45 days, request the renewal from the subcontractor with the project's requirement attached, so they can hand their broker something specific rather than a reminder.
- At 30 days, chase the named contact and copy the project manager. Ask for the endorsement explicitly, by name, because otherwise a certificate is what comes back.
- At 14 days, escalate to whoever approves their payment application, and record the escalation on the row.
- At 7 days, send the notice that says what happens: the next application does not release and site access is suspended on expiry. Send it to the person who signs, not to the site.
- On the day, apply it. A threat that lapses twice is a threat the pool has learned to ignore, and after that no cadence works.
A state that gates something, or it is just a folder
Two enforcement points actually work: the gate and the money. Both need the subcontract behind them, which means the right to withhold is decided at buyout rather than invented later by whoever maintains the register — the checkpoints for that sit in running buyout from award to executed subcontract. Whether to withhold in a given case is a question for your counsel, not for a workflow rule.
- Site access reads the compliance state directly. If badging, induction or the visitor log runs on a separate system, that system needs the state, not an email about it.
- The payment application workflow blocks with a named override rather than a silent bypass, and the override records who granted it and why.
- Every override expires. An exception with no end date is a permanent hole with a person's name on it.
- Non-compliance is visible on the project dashboard the superintendent already looks at, not only in the compliance module nobody opens.
If 6 years of this currently lives in spreadsheets, resist migrating the sheets as they stand — they encode the 1-date-per-company defect, and importing them reproduces it in a new system. Rebuild the matrix as 4 objects and load the documents against it, which is the same discipline as moving six years of job history off spreadsheets.
There is a bidding-side tail to this too. Requirements are priced at bid time, and a bidder who cannot meet them either absorbs the cost or excludes it, which is one route by which the low bid turns out to be missing scope. Whether that difference is even visible across bidders depends on having somewhere to record it, which is levelling sub bids without a fresh spreadsheet each time.
Built, this is a document store, 4 tables, a nightly job and 2 integrations — payment and the gate. Unglamorous, and the kind of scope we take on as internal tools and operations. This page sits in bidding, prequalification and subcontractor management, part of our construction and contracting work.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
Why do subcontractor insurance certificates expire without anyone noticing?
Because the expiry is usually stored once, on the company record, while the subcontractor carries several policies that renew on different dates against requirements that differ per project. The single date gets updated whenever any document arrives, so the record looks current while a specific policy has lapsed. The second most common cause is a renewal that arrives as a certificate with no endorsement behind it.
When should we start chasing a subcontractor's renewal?
Around 45 days out, and with the project's requirement attached rather than a generic reminder. Brokers need something specific to act on, and the subcontractor is the one who has to instruct them. Escalate at 30 days to the project manager, at 14 days to whoever approves their payment application, and at 7 days send the notice that states what happens on the expiry date.
Can we hold a subcontractor's payment when their insurance lapses?
Only if the subcontract gives you that right, which is why it is a buyout question rather than a compliance-module setting. Whether to exercise it in a given case is a matter for your counsel and your risk manager. What the system can do without any judgement is make the state visible at the moment the payment application is processed, block it with a named override, and record who released it.
Can certificate tracking be automated?
The dates, the chasing and the routing can be. Reading an endorsement and deciding whether it satisfies your contract cannot, and any tool claiming otherwise is doing the part that requires a broker's or a lawyer's judgement. Build the automation around extraction that drafts and a person who confirms: the system proposes the expiry and the document type, and a named human sets the verified state.
- compliance
- subcontractors
- risk
- operations
The work behind this page
Builds from our portfolio that this page draws on.
GroundUp
A construction project-management command centre for general contractors that keeps schedule, RFIs, budget and the field log in one place — and maps the critical-path recovery the moment a job slips.
Real EstateAP Copilot
An AI accounts-payable copilot that reads invoices, matches them to POs, and routes clean approvals
FintechRead next
- The endorsement, not the certificate, is the thing that proves coverA file full of certificates proves you asked. It does not prove your company is an additional insured on anybody's policy, and the two are different claims.definition
- A bid package is a scope boundary before it is a documentScope is rarely lost inside a package. It is lost at the line between two of them, where both bidders read the same detail and each assumed the other one had it.definition
- A bid tab is a normalisation exercise, not a price listThe columns of a bid tab are the easy part. What makes it a tab rather than a list is the rows underneath: the adjustments that put four bidders on one basis.definition
- The scope sheet: what decides whether 2 bids compare at allEvery bidder answers the same numbered questions, before anyone prices anything. That is the whole mechanism, and the timing is the part that cannot be retrofitted.definition
- You invited forty subs and three of them bidCount invited, delivered, opened, declined with a reason, and bid — split by whether the firm has bid to you before. The shape of the drop names the cause.diagnostic
- A takeoff condition is a measurement rule, not a highlighted areaThe coloured region on the sheet is the output of a condition, not the condition itself. The condition is the record that says what was measured, in what unit, with what adjustments, and where the number goes next.definition
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation