Skip to main content
← Notes from the data layer

AI SDR

AI SDR hallucination

Stuart McLeod6 min

A great rep once knew every account. Now your agents do. But only if the data underneath them is real.

Three months into a pilot with a mid-market SaaS company, a team watched their AI sales agent draft what looked like a flawless cold email — warm tone, personalized opener, congratulated the prospect on "expanding into the APAC market." The prospect hadn't expanded anywhere. The agent had invented the detail, confidently, at send-ready quality.

That's the hallucination problem in AI SDRs. Not a vague concern about LLM reliability — a specific, operational failure mode that burns sender reputation, poisons CRM records, and scales damage at machine speed before a human ever sees it.

Here are the four distinct ways it happens, and a concrete detection test for each.


What exactly is an AI SDR hallucination?

Large language models don't retrieve facts — they predict plausible text. When an AI SDR drafts outreach, it fills gaps in its context window with statistically reasonable completions. In a B2B context, that means fabricated funding rounds, invented job titles, wrong headquarters cities, and nonexistent product launches — all written with the same confident tone as verified claims.

OpenAI’s research paper on why language models hallucinate frames it cleanly: models hallucinate because standard training and evaluation reward confident guessing over admitting uncertainty. The model isn’t broken. It’s doing exactly what it was trained to do. The problem is using it without grounding.


Failure mode one: wrong company data

What it looks like. The agent references the prospect's industry vertical, headcount band, or tech stack — and gets it wrong. It pulls from training data, not a live enrichment source. A two-hundred-person company is addressed as an enterprise. A bootstrapped SaaS is congratulated on its recent raise.

Why it happens. The agent has no verified firmographic layer. It's pattern-matching from pre-training, not calling a source.

Detection test. Take ten outbound drafts. Pull the company headcount, funding status, and HQ city from each. Cross-reference against LinkedIn and Crunchbase manually. If more than one in ten is wrong, you have a data-layer problem, not a prompt problem.

The fix. Route every account through a structured enrichment call before the agent drafts anything. Eighty-nine canonical fields, sourced and cited, not guessed.


Failure mode two: fabricated contact details

What it looks like. The agent produces a contact record — name, title, email, professional-profile URL — that is partially or entirely synthetic. A 2026 Nature paper on hallucination explains why this class of error is so persistent: one-off facts a model never saw in training — a specific prospect’s title, a recent funding round — are exactly the ones it fills in with a plausible guess. The alternative to catching it is a CRM flooded with contacts that do not exist.

Why it happens. When an agent is asked to "find the Head of Revenue at Acme" and no verified contact exists in its context, it generates one. The name sounds real. The email format looks right. The LinkedIn URL 404s.

Detection test. Run a batch of agent-generated contacts through an email verification tool. A bounce rate above five percent on net-new contacts is a signal. A bounce rate above fifteen percent is a crisis.

The fix. Contact data needs provenance — a source, a confidence score, a timestamp. If the enrichment layer can't cite where it found the email, the agent shouldn't send to it.


Failure mode three: invented intent signals

What it looks like. The agent references a trigger event that didn't happen. A job posting that was never live. A conference appearance the prospect didn't make. A product launch that hasn't been announced. The personalization reads as researched. It isn't.

Why it happens. Intent-signal personalization is high-value when real, so agents are prompted to find it. When no verified signal exists in the context window, the model invents a plausible one rather than leaving the field blank.

Detection test. Audit the "trigger" or "reason for reaching out" line in twenty drafts. Verify each claimed event against a primary source — the company's LinkedIn page, their press room, a job board. Flag any that can't be confirmed in under sixty seconds.

The fix. Intent signals must arrive as structured, cited data — not inferred by the model mid-draft. If the enrichment call returns no confirmed trigger, the agent should know that explicitly and choose a different personalization angle. No fabricated facts. No silent fallbacks.


Failure mode four: stale firmographics

What it looks like. The data was accurate — six months ago. The company has since been acquired. The contact changed roles. The funding round closed and the headcount doubled. The agent is personalizing to a ghost of the account.

Why it happens. Most enrichment pipelines run once at list-build time and never refresh. B2B data has a half-life. Titles turn over. Org structures shift. An autonomous agent loop running on stale records compounds the problem because it operates continuously, not in quarterly batch exports.

Detection test. Pull your last enriched account list. Check the enrichment timestamp. For any record older than ninety days, spot-check five fields against current LinkedIn data. Calculate your drift rate. If more than twenty percent of records have at least one stale field, your loop needs a freshness layer.

The fix. Keeping enriched fields fresh in an autonomous outbound loop requires treating data as a perishable — with TTLs per field type, not a single enrichment event per contact.


Why this compounds at agent speed

A human SDR makes one bad call. An AI SDR makes ten thousand. Ooligo's QA framework for AI SDR drafts scores each outbound draft against four rubrics — claim accuracy, personalization grounding, jurisdictional compliance, and deliverability hygiene — and returns a block/edit/send verdict before the message leaves the queue. The architecture exists because the failure modes are real enough to warrant a dedicated pre-send gate.

The underlying principle is correct. You need a verification layer between the model and the send action. But the more durable fix is upstream: agents that never draft on unverified data in the first place.

Stitching together multiple enrichment tools — one for email, one for firmographics, one for intent, one for technographics, one for direct dials, one for news triggers — creates the gap that hallucinations fill. Each tool has its own schema, its own confidence model, its own staleness problem. The agent sees fragments and invents the rest.

One call, ten providers behind it — aggregated, deduped, reconciled, with source citations attached to every field. That's the data layer an autonomous agent actually needs. Not a dashboard. Not a CSV export. A callable, agent-ready API that returns what it knows, flags what it doesn't, and never silently fills the gap.


The four-mode checklist

Failure mode Detection signal Structural fix
Wrong company data Manual cross-reference vs. LinkedIn/Crunchbase Verified firmographic enrichment at account selection
Fabricated contact details Email bounce rate > 5% on net-new contacts Source-cited contact data with confidence scores
Invented intent signals Trigger events that can't be confirmed in 60 seconds Structured intent fields from a live enrichment call
Stale firmographics Field drift > 20% on records older than 90 days Per-field TTLs and continuous refresh in the agent loop

Personalization, at scale — but only when the data is real. The model is capable. The question is what you hand it.


Try abm.dev — the account-based marketing API for AI agents. Eighty-nine canonical fields. Source citations on every record. Built for autonomous agent loops, not human dashboard-watching. The playground is free. Launch credits with the code LAUNCHCODES.

Stuart McLeod · Co-founder, abm.dev