Turn a messy CRM into a ranked cleanup list.
“Why is our reporting off, and what do I clean up first?”
Finds the hygiene problems that break reporting first: missing fields, stale records, duplicates, and bad stages, before the cosmetic ones.
What this skill does
Reads your CRM records and returns a straight verdict on the data that reporting depends on. It finds the records with missing required fields, the ones that have gone stale, the likely duplicates, the deals sitting in impossible stages, and the accounts and opportunities with no owner. Then it ranks the problems by how much they distort the numbers, so you fix the leaks that matter before the cosmetic ones.
Inputs
- Works today with: a CSV or paste of your accounts, contacts, and open deals, with owner, stage, close date, created date, last activity date, and the fields your reports rely on.
- More powerful connected to a CRM: it reads every object automatically, across the whole database, not just the rows you exported.
- Sharper with a data warehouse: it can compare CRM values against a source of truth and catch fields that silently drifted.
- Sharper with an activity or email tool: tightens the stale-record check with real last-touch dates.
How it works
- 1Missing-field scan
For every record, check the REQUIRED fields and report the fill rate field by field, named. A report that groups by segment is a lie if a third of accounts have no segment. Show the percentage empty and the raw count, not "some records are incomplete."
- 2Stale-record check
Flag any record whose last meaningful update is older than STALE_DAYS. Use last activity date where you have it, created or modified date where you do not, and say which one you used. An open deal with no touch in 30 days and a close date next week is the loudest kind of stale.
- 3Duplicate detection
Group records that match on the DEDUPE keys and surface the clusters, not just a count. Show which record looks like the survivor (most complete, most recent activity) so the merge decision is already half made.
- 4Bad-stage and orphan check
Flag deals in a stage that does not exist in your model, deals past their close date still marked open, and any account or opportunity with no owner. No-owner records are invisible to every rep-level report, so they distort every roll-up silently.
- 5Priority ranking
Rank findings by blast radius: a missing field on the grain your reports group by outranks a typo in a record no dashboard reads. The output is a cleanup list ordered by how much each fix straightens the numbers.
Output format
DATA-HYGIENE AUDIT · 4,120 accounts · 8,660 contacts · 310 open deals
Finding Scope Severity Detail
Segment field empty 38% of accts HIGH 1,566 accts drop out of segment reports
No-owner accounts 212 accts HIGH Invisible to every rep roll-up
Likely duplicate accounts 96 clusters MED Matched on domain, survivors flagged
Open deals past close date 41 deals MED Still open, close date in the past
Stale open deals 57 deals MED No activity in 30+ days
Cleanup order:
1. Backfill segment on the 1,566 accounts. It breaks every segment report.
2. Assign owners to the 212 orphan accounts before the next roll-up.
3. Work the 96 duplicate clusters. Survivors already suggested.
Illustrative figures. Your run reports your real counts.
Tips
- No "incomplete" without the named field and the exact fill rate.
- No duplicate flag without showing the cluster and the suggested survivor.
- Stale always states which date drove the flag, so nobody argues the definition.
- Counts are counts. The audit never estimates a number it can read directly.
Build funnel metrics the meeting will actually trust.
Conversion by stage, velocity, and win rate with every definition pinned, and the leak named.
Forecast a defensible range, not a hero number.
Category definitions, coverage math, historical conversion, and a low / likely / high range vs quota.