Blog · Data quality and reconciliation
Five checks on the open pipeline that take a minute from a weekly export and remove most of the argument from the forecast call: close dates in the past, deals without a next step or activity in a stated window, deals in the same stage past the team's own median stage duration, values unchanged since creation on late-stage deals, and duplicate opportunities on one account. Each with the count, the value affected and the rep.
A forecast call spends its first twenty minutes discovering that three of the committed deals have close dates last month, two have not been touched since spring, and one is in the pipeline twice. A weekly export and five checks find all of that on Monday morning. This guide sets out the five, the value each finds, and what to do with the lists.
| # | Check | Rule | What it catches |
|---|---|---|---|
| 1 | Past close date | Close date < today and stage open | Deals nobody updated |
| 2 | No activity | No logged activity or next step in the stated window | Deals nobody is working |
| 3 | Stuck in stage | Days in stage > multiple × team's median for that stage | Deals that are not moving |
| 4 | Value never changed | Late stage and value equals value at creation | Deals never scoped |
| 5 | Duplicates | Two or more open on one account and product | Double-counted pipeline |
Opportunity and rep identifiers only.
open pipeline = clean + flagged by at least one check
A deal can fail more than one check; it is counted once in flagged, and the checks it failed are listed on its row.
| Check | Deals | Weighted value | Share of forecast |
|---|---|---|---|
| Past close date | 14 | $410,000 | 9% |
| No activity in 21 days | 31 | $880,000 | 19% |
| Stuck: over 3× median | 22 | $620,000 | 13% |
| Value unchanged, late stage | 9 | $290,000 | 6% |
| Duplicates | 6 pairs | $180,000 | 4% |
| Flagged, any check | 58 | $1.7m | 36% |
More than a third of the weighted forecast is on deals that fail at least one check. The forecast call now starts from the clean 64 percent and the list, rather than discovering the 36 in the room.
| Rep | Open deals | Flagged | Flagged value | Worst check |
|---|---|---|---|---|
| R-04 | 31 | 19 | $740,000 | No activity: 12 |
| R-11 | 22 | 6 | $140,000 | Past date: 3 |
| R-17 | 14 | 2 | $30,000 |
Rep R-04 has twelve deals nobody has touched in three weeks. That is the one-to-one.
Rules from a guess. Thirty days in proposal for a team whose median is forty-five.
Automatic closure. Reps move dates the day before the check runs.
Counts without value. Fourteen stale deals is a number; nine percent of the forecast is a priority.
Run after the call. The lists exist to make the call short.
Mapped once, the weekly pipeline export produces the five checks, the flagged share of the forecast and the per-rep lists before the call. Covirage builds this from the export as it is. The forecast analysis solution describes the setup, and the slip count guide covers what the past-close-date check turns into over time.
Because a rule like 'thirty days in proposal' is a guess. The team's own median duration per stage, from deals that reached an outcome, is a fact, and a deal at three times that median is stuck by the team's own standard.
No. The list goes to the rep with the count and the value, and the rep updates or closes. Automatic closure hides the problem and teaches reps to move dates instead of deals. The list is the pressure; the rep is the decision.
The weighted value of the flagged deals at the CRM's probability. It is what the forecast is carrying on deals that fail a hygiene check, and it is usually a larger share of the forecast than anyone expected.