Your CRM Has 34,000 Contacts and 61% Have No Owner
Your RevOps lead opens Salesforce Monday, 34,000 contact records, 61% with no owner, 4,200 duplicates. CRM hygiene is a function you never staffed.

It is Monday, 9:12 AM. Your RevOps lead opens Salesforce to the Contacts tab. The total record count reads 34,182. She filters by Owner equals null. 20,847 records. She filters by Last Activity older than 180 days. 26,411 records. She runs the duplicate finder. 4,214 clusters, mostly around personal Gmail addresses and lowercase-versus-titlecase name splits. She opens the Accounts view. 4,712 accounts, 1,830 with no Industry set, 940 tagged as Industry equals "Other" from a 2023 import that never got mapped.
She scrolls. Six of the top ten ICP-fit logos in the pipeline have three duplicate Account records, each with a different owner, each with a different open opp. The Enterprise AE working the largest of them has been calling the wrong contact for two weeks because the duplicate with the current title sat under an inactive user. The forecast dashboard rolls Amount up on the account with the highest ARR and ignores the two other opps entirely.
Pull the last four quarters of closed-lost. 214 opps with the reason field left blank. 118 with "no decision" and no note. 47 with a competitor name typed six different ways across the AE bench. The CRO reads a competitive win-loss digest that shows the top competitor is Unknown at 34% of losses.
CRM hygiene is a function. Most Series B and C teams have not staffed it because the first 4,000 records lived under one AE and a spreadsheet reconciled to Salesforce every Friday. The records grew to 34,000 across four sales pods, a partner channel, three webinar imports, two acquired-company migrations, and a marketing team that syncs 800 net-new leads a week from paid social. The function lives in the gap between the RevOps lead who owns the schema, the SDR manager who owns the leads queue, the marketing ops lead who owns the syncs, the CRO who reads the forecast, and the AE bench that types whatever fits in the field the fastest. On the org chart it sits under RevOps. In practice it sits inside a Data Loader tab nobody opens.
The 20,847 records nobody owns
Pull the Contacts and Accounts view. Filter by Owner equals null. Count records with no activity in 90, 180, and 365 days. Count duplicates by normalized email domain. Count Accounts with no Industry, no Employee Count, no ARR band, no ICP tier. Count Contacts where Title is blank, Title is "Contact", or Title is a copy-paste string longer than 80 characters. Most teams past Series B find 40 to 65 percent of contacts unowned, 55 to 75 percent with no activity in six months, 10 to 18 percent duplicated, and 25 to 40 percent of accounts missing at least one of the four fields the forecast dashboard groups by.
Walk one account. The Fortune 1000 logo the Enterprise AE has been chasing. Three Account records. One imported from a 2023 ZoomInfo pull with the legal entity name. One created by an SDR in May from a webinar sign-up with the operating brand name. One created by the marketing ops sync in June from a paid LinkedIn form-fill with the parent company name. Each has one open opp, a different owner, and a different stage. The forecast rolls up on the record with the highest ARR and misses $340K of pipeline the CRO thinks is not there.
The team that should own this knows it is broken. The RevOps lead ships a quarterly cleanup that clears 1,200 records against a monthly inflow of 3,400. The marketing ops lead ships webinar syncs on a schedule and does not merge against existing accounts. The SDR manager pulls a leads view every Monday and takes what shows up first. The CRO reads a forecast dashboard that groups by fields half the accounts do not have.
Hiring a CRM administrator is the slow answer
The textbook fix is a senior Salesforce administrator or a RevOps analyst with a data quality remit. Loaded comp in the US runs $110K to $160K a year. Months one through two go to auditing the schema, mapping every import path, and rewriting the dedupe rules. Months three through six are when the unowned bucket drops from 61% to under 20%, the duplicate finder returns fewer than 200 clusters, and the forecast groups on fields that are populated on 95% of accounts.
The fractional version is faster and stops at the same wall. Five to nine thousand a month buys ten to fourteen hours a week of senior Salesforce work. The first month rewrites the dedupe rules and audits the largest import paths. The 3,400-a-month inflow of new leads keeps drifting because a fractional admin cannot watch every sync, every AE-created record, and every field left blank at save time.
Both versions assume the work is a person running a dedupe job on a cadence. The work itself is normalizing every new contact and account against a canonical name and domain library the second the record saves, matching every net-new record against existing accounts and contacts before the router fires, enriching every account against a firmographic layer inside sixty seconds, scoring against an ICP rubric before an SDR opens the leads view, catching missing fields at save time and drafting a default value from the enrichment feed, merging every duplicate cluster on a live queue instead of a quarterly batch, and tagging every closed-lost reason against a controlled vocabulary the CRO can group by. On 3,400 new records a month plus 34,000 legacy records that is 45 to 60 hours a week of senior data work. No single hire clears that pile and holds the schema at the same time.
What a fractional AI CRM hygiene function does
Hand the Salesforce schema, the Clearbit and ZoomInfo enrichment feeds, the standard picklists, the acquired-company account map, the webinar and paid-social lead syncs, the closed-lost reason vocabulary, and the last four quarters of forecast rollups to a fractional AI agent. The agent does the work a Salesforce administrator, a RevOps analyst, and a marketing ops coordinator would do together. The cadence is per-record on normalization, per-save on the dedupe check, per-sync on the account match, per-week on the merge queue, and per-quarter on the closed-lost audit.
Every net-new record normalized at save time. The webinar sign-up lands with the operating brand name at 6:52 AM. The agent maps it against the canonical legal entity, tags the parent company, sets the industry from the enrichment feed, and lands the record under the existing account inside four seconds.
Every duplicate cluster merged on a live queue. The 4,214 clusters drop to under 200 inside the first sprint. New duplicates fire against the queue the second they save. The RevOps lead reviews the high-confidence merges on a Monday dashboard with the reasons and the source records laid out.
Every missing field drafted from the enrichment feed. The 1,830 Accounts with no Industry get a proposed value with a confidence score and a source link. The RevOps lead accepts the top 80% in one pass. The forecast dashboard groups by fields the schema fills on save.
Every closed-lost reason tagged against a controlled vocabulary. The 118 blank reasons and the 47 competitor-name variants collapse into a fixed picklist. The CRO reads a competitive digest that names the top three competitors by win rate, not Unknown at 34%.
Every AE-created record scored before the SDR opens the queue. The record saves at 10:14 AM with an ICP tier, a fit score, and an owner assignment. The SDR opens the leads view at 10:22 AM and sees the Tier 1 accounts at the top, not the personal Gmail from a Friday event.

The unit economics of a dirty CRM
A Series B company at $22M ARR sitting on 34,000 records and taking 3,400 net-new a month is burning three specific things. The RevOps lead, the marketing ops lead, the SDR manager, and two AEs spend a combined 16 to 24 hours a week on cleanup, merges, and manual field patching against a fully loaded hour of $180 to $310. That is $12K to $30K a month of senior time on work a live queue clears. The RevOps lead gets six to nine hours a week back inside the first sprint.
The pipeline line is the second one. Duplicate accounts that hide 10 to 18 percent of open opps from the forecast dashboard cost $340K to $620K a quarter of pipeline the CRO cannot see. Missing ICP fields that misroute 15 to 25 percent of net-new leads to the wrong pod cost another 20 to 35 SQL a month at the top of the funnel. A clean base with live scoring lifts SDR meeting rates by 20 to 30 percent inside two months.
The forecast line is the third. A forecast rolled up on fields that are populated on 62% of accounts is a forecast with a structural 15 to 25 point miss the CRO explains as "coverage." A schema that fills on save cuts the coverage story to actual pipeline health inside one quarter.
A 14-day sprint to stand up the agent runs in the low to mid five figures. Ongoing cost lands closer to one Salesforce admin seat than a RevOps analyst hire. The normalization and dedupe queue runs in week one. The enrichment and field-draft feed runs in week two. The closed-lost vocabulary and the merge dashboard run off a live feed before the sprint closes.
What changes after the sprint
Picture the same Monday, 9:12 AM moment, thirty days after the sprint ships. Your RevOps lead opens Salesforce. Total contact count reads 29,847 after 4,335 merges. Unowned drops to 4,120 with a queue of proposed assignments waiting on her Monday review. The Fortune 1000 logo shows one Account record, three contacts under a single owner, a rolled-up ARR band, and a $410K pipeline number the CRO now sees on the forecast dashboard.
By Friday the marketing ops lead ships a sync report that matches 94% of net-new leads against existing accounts on save. The SDR manager reads a leads view sorted by ICP tier, not by save timestamp. The CRO reviews a closed-lost digest that names the top three competitors by win rate and a coverage number that moved 22 points quarter over quarter on the same top-of-funnel spend.
If your CRM currently sits at 61% unowned with a duplicate cluster you clean once a quarter, the version where every record normalizes at save time and every merge lands on a live queue is fourteen days away. CRM hygiene is a function. You can hire against it, you can retain a fractional admin for it, or you can scope a sprint and have it running this month. The work is the same. The math is not.
2026-07-11Your Marketing Attribution Says 62% Came From Direct
Your VP Marketing opens the attribution dashboard, $1.4M in pipeline, 62% tagged Direct, nobody knows what Direct means. Attribution is a function you never staffed.
2026-07-08Your SOC 2 Evidence Lives in a Screenshot Folder
Your security lead opens the SOC 2 folder, 214 evidence items requested, 63 are screenshots from September. Compliance is a function you never staffed.
2026-07-07Your Weekly Business Review Is Rebuilt from Scratch Every Monday
Your COO opens the WBR deck Sunday night, 34 slides, four dashboards changed a definition, three tabs broken. Weekly reporting is a function you never staffed.