← All articles

GTM Engineering

Your AI-Readiness Score Is a Data-Readiness Score in Disguise

Everyone runs the AI pilot. Almost nobody scales it, and the reason is not strategy. Here is the 6-component readiness ladder and the 12-check scored gate to run before you buy the agent, with the completeness and dedup thresholds that turn it into a gate.

· 13 min read

A vendor ran us through an “AI readiness assessment” and it was 15 questions about strategy, executive buy-in, and change management. We scored well. Then I ran a completeness query against the exact accounts the AI would touch and found 38% of them missing the firmographic fields the model needed to do its job. We passed the vibe check and failed the only test that predicts the outcome. AI on data like that does not produce insight. It produces confident nonsense at machine speed, which is worse than the manual process it replaced, because now the error has authority and volume behind it.

That gap is the whole story of enterprise AI right now. Almost every team runs the pilot. Far fewer get it into production and keep it there. SaaStr’s Jason Lemkin, reporting on AI SDR deployments across 2025, put hard numbers on the same pattern: 83% of teams got nothing usable from their AI SDR, and only 3% got real revenue. The strategy decks were fine in all of them. The data underneath was not. So the readiness score that matters is not the one the vendor sells you. It is a data-readiness score, and it climbs one component at a time.

Read the ladder before the argument. Each rung is a data-readiness component the agent stands on, and the agent is only as tall as the lowest rung you have not built. Skip a rung and the AI does not wait for you. It runs anyway, on the gap.

The 6-component data-readiness ladderThe agent is only as tall as your lowest unbuilt rung
  1. C6Process and proof30 days

    The downstream process works by hand today, a human-in-the-loop gate sits on any irreversible or customer-facing action, and one metric tells you within 30 days whether the AI helped. This is the top rung, not the first.

  2. C5Structurepicklist

    The fields the AI reasons over are structured. A picklist counts, a free-text notes field does not, and orphaned contacts or stranded leads break every traversal the agent makes across your object graph.

  3. C4Resolution90%+

    Lead-to-account matching resolves at least 90% of leads to the right account. Without it, 15% to 25% of records misroute, and the AI routes them wrong faster than a human ever could.

  4. C3Uniquenessunder 5%

    Account duplicate rate is under 5% and every contact carries a working dedup key. Above 5% the agent acts on the same entity several times with different conclusions and writes all of them back.

  5. C2Freshness12 mo

    Key firmographics are under 12 months old. Stale enrichment reads as clean and behaves as wrong: the field is full, the value describes a company that no longer exists in that shape. B2B contact data decays about 22% a year (ZoomInfo), so a two-year-old field is a coin flip.

  6. C1Completeness90%+

    The fields the model reads are populated on at least 90% of in-scope records, and no single required field sits below 80%. Below this line the agent guesses on one record in ten, minimum, and never tells you which ones.

$12.9M
Average annual cost of poor data quality per org (Gartner)
76%
Of orgs say less than half their CRM data is accurate (Validity)
38%
Of in-scope accounts missing required fields in the story above

The ladder is the diagnosis. The 12-check gate later in this piece is how you score each rung pass or fail before you sign anything. Same six components, two checks each, one honest number at the end.

Why this is a data question, not a strategy question

Picture an AI SDR agent writing personalized outbound off your account data. If 40% of accounts are missing industry and headcount, the agent does not refuse. It hallucinates or defaults, sends 40% of your outbound with wrong personalization, and burns domain reputation at a rate no human team could match. The strategy was fine. The rung labeled Completeness was not built, so the agent stood on air.

Or put an AI lead-routing agent on top of a routing model that already misfires. It does not fix the misfires. It executes them faster and at higher volume, so the leads that used to fall through slowly now fall through instantly and in bulk. Poor data quality already costs the average org $12.9M a year (Gartner), and 76% of orgs say under half their CRM data is accurate (Validity). Pour AI on that and you have automated the leak.

The amplifier AI is a multiplier, not a filter
Clean inputs90%+ completeDirty inputs40% missingAI agentmultiplierToward revenueat scaleToward failureat scale
The same agent on clean inputs accelerates toward revenue. On dirty inputs it accelerates toward failure, at the same speed, with a machine's authority behind the error.

The point is narrower than “clean your data someday.” The specific fields and flows the AI depends on have to clear a bar before the AI runs, or the AI makes your existing problem worse on a schedule. That is why the ladder is scored per component and not as a single overall grade. An org can be strong on structure and process and still fail on completeness in the one segment the agent touches, and that single failed rung sinks the whole deployment.

The 12-check scored gate

Score each item pass (1) or fail (0), against the exact data the AI will use, on the exact segment it will run against. Not your whole CRM. The slice the agent touches. A global “data quality is decent” average hides the 38% hole in the accounts that matter. The twelve checks are the six ladder components with two checks each, and every check has a threshold that turns it into a gate instead of an opinion.

#ComponentCheckThreshold that gates it
1CompletenessFields the model depends on are populated90%+ of in-scope records
2CompletenessNo single required-for-AI field is weaknone below 80% populated
3FreshnessKey firmographics are recentunder 12 months old
4UniquenessAccount duplicate rateunder 5%
5UniquenessContacts carry a working dedup keyemail or matched identity present
6ResolutionLead-to-account matching resolves90%+ of leads to the right account
7StructureFields the AI reads are typedpicklist yes, free-text no
8StructurePicklist values are cleanno “budget” / “no budget” / “Budget ” triplets
9StructureObject relationships are intactno orphaned contacts or stranded leads
10ProcessDownstream process works manually todayrouting works by hand first
11ProcessHuman-in-the-loop gate existson any irreversible or customer-facing action
12ProcessOutcome is measurablea metric tells you within 30 days if AI helped

Read the thresholds as the load-bearing part. “Populated” is not a gate; “90%+ of in-scope records” is. “Fresh” is not a gate; “under 12 months” is. Without the number, every one of these becomes a conversation you lose to whoever wants to buy the tool this quarter.

Scoring it

Item 1 is the one most people get wrong, because they measure completeness across the whole CRM instead of the slice the agent touches. Here is the query that gates it correctly.

-- Completeness on the exact fields the AI reads,
-- on the exact segment it runs against. This is check 1.
SELECT
  COUNT(*) AS in_scope,
  ROUND(AVG(CASE WHEN industry IS NOT NULL
                  AND employee_count IS NOT NULL
                  AND annual_revenue IS NOT NULL
             THEN 1 ELSE 0 END) * 100, 1) AS pct_complete
FROM accounts
WHERE segment = :ai_target_segment      -- the slice, not the whole CRM
  AND record_type = 'Customer';

And the duplicate-rate check for item 4, keyed on normalized domain so casing and trailing whitespace do not hide dupes:

-- Account duplicate rate on the in-scope slice (check 4)
SELECT
  ROUND(100.0 * (COUNT(*) - COUNT(DISTINCT LOWER(TRIM(domain))))
        / COUNT(*), 1) AS dup_rate_pct
FROM accounts
WHERE segment = :ai_target_segment;

Add up your 12. The bands are not arbitrary; they map to what the AI does to you once it runs.

What each readiness band does to you
The score is not a grade. It predicts what the agent does once it runs against your data. Below 7, buying is buying a bigger version of your current problem.
View as table
ItemValue
Below 7: dangerous6 pts
7-9: not yet8 pts
10-12: ready11 pts
  • 10 to 12: ready. Buy the agent. Its errors will be rare enough that your human-in-the-loop gate catches them.
  • 7 to 9: not yet. You will spend the pilot debugging data, blame the model, and churn the tool. Fix the failed checks first; most are a week of work each.
  • Below 7: dangerous. The AI will scale your existing errors faster than you can catch them. Buying now is buying a bigger version of the problem you already have.

A worked example that reconciles to the ladder

Here is a real-shaped score on a mid-market customer segment the team wanted an AI SDR to work. Six components, twelve checks, scored against that slice and nothing else. This is the number that decides the purchase.

ComponentCheck resultPoints
Completeness38% populated on the slice, and revenue field at 61%0 of 2
Freshnessfirmographics refreshed 9 months ago1 of 1
Uniqueness11% duplicate rate, dedup key missing on 20% of contacts0 of 2
ResolutionL2A matches 78% of leads0 of 1
Structuretyped picklists, but “Industry” has 4 casing variants and 300 orphaned contacts1 of 3
Processrouting works by hand, no human gate defined, no 30-day metric1 of 3

That is 4 out of 12. The team felt ready because the top-line dashboard read “80% complete” and the strategy workshop scored an A. The ladder tells the true story: three of the six foundational rungs are not built. A 4 lands deep in the dangerous band, and the two failures doing the most damage are the two the dashboard hid, completeness at 38% and duplicates at 11%. Buy the agent on a 4 and you get the SaaStr outcome: it joins the 83% that returned nothing, and the postmortem blames the model.

The fix is not a better model. It is completeness enrichment on the slice (moves 0 of 2 to 2 of 2), a dedup pass keyed on normalized domain (0 of 2 to 2 of 2), an L2A backfill (0 of 1 to 1 of 1), and a picklist cleanup plus a human gate (Structure to 3 of 3, Process to 2 of 3). That reconciles to 10 of 12, which clears the ready band. Roughly three weeks of data work turns a guaranteed churned pilot into a scaled use case.

The re-score loop, not a one-time grade

The honest move when you score a 4 is not to buy a better AI. It is to fix the failed components, which are your data problems wearing an AI costume, and re-score in a month. Treat readiness as a loop, not a certificate.

The data-readiness gate, run as a loop
  1. 1

    Scope the slice

    Define the exact segment and the exact fields the agent will read. This is the denominator for every check. Not the whole CRM.

  2. 2

    Run the 12 checks

    Score each pass or fail against that slice using the queries above. Completeness and dedup first; they gate the most.

  3. 3

    Total and band it

    Sum the 12 against the ladder. Below 10 you have a project list, not a purchase. The failed rungs are the project.

  4. 4

    Fix the failed rungs

    Most are a week each: enrichment for completeness, a dedup pass for uniqueness, an L2A backfill for resolution, a picklist cleanup for structure. Fix the lowest unbuilt rung first.

  5. 5

    Re-score in a month

    Run the exact same checks on the exact same slice. Only when you clear 10 do you sign. Then the agent accelerates you toward the outcome, not away from it.

The two projects, compared

Buy the AI now (score 4) Fix the data first, then buy
What you are buying A faster version of your data problem A multiplier on clean inputs
Pilot experience Debugging data, blaming the model Measuring lift on a real metric
Outbound personalization 38% wrong, domain reputation burns Grounded in complete firmographics
Where it lands The 83% that got nothing (SaaStr) The 3% that got real revenue (SaaStr)
Cost Tool spend plus $12.9M-class data cost, scaled A few weeks of data work, then tool spend
Outcome in 90 days Churned tool, "AI does not work here" Scaled use case, evidence for the next one
Same tool, same vendor. The order of operations decides whether the pilot survives.

Completeness fails quietly, duplicates fail late

Completeness fails in a way that fools people. A team looks at a dashboard showing “82% of accounts have an industry” and feels ready. But the agent does not run against all accounts. It runs against the target segment, and in that segment the number is often far worse, because the accounts a rep bothered to enrich are the ones already in play, not the long-tail ones the agent is meant to work. That is the 38% hole from the opening. The global average is the number that lies; the in-scope query is the number that gates.

Duplicate rate fails loudly but late. Below 5% the agent’s occasional double-action gets caught by the human-in-the-loop gate. Above it, the volume of contradictory actions overwhelms the reviewer, they start rubber-stamping, and the gate that was supposed to catch errors becomes a rubber stamp on the errors. Every other rung on the ladder degrades gracefully. Completeness and uniqueness degrade catastrophically, which is why they sit at the bottom and hold up everything above them.

What to do next

Before your next AI purchase, run check 1’s query against the segment the tool will touch, then score the other 11 against the six-rung ladder. If you land below 10, you have your project list, and it is a data project, not an AI project. Fix completeness and dedup on the in-scope slice first, because those two rungs gate the most and every rung above them assumes they hold. Then buy the agent, and it will accelerate you toward the outcome instead of away from it. If the tool writes back to the CRM, pair this with the control layer for CRM agents before you grant write access, and if the failure you are guarding against is commodity outbound, the same root cause runs through why AI SDRs fail.

ai data-quality readiness

Keep reading

One email. Every week.

One email a week: a system I built or broke, with the config, the numbers, and what I would change. No roundups, no theory, unsubscribe whenever it stops being useful.

The newsletter opens soon.

Connect a provider in src/config.ts