Sales intelligence research
When Our Prospecting Agent Shipped Bad Data: A Setup Story from okki-go
2026-09-28 · Julian Hartwell
-
The Friday night our agent started emailing the wrong people
-
What we thought we were building (and what we actually shipped)
-
Where it actually broke
-
The waterfall fix — and the part nobody tells you
-
Why this is a brand problem, not just a data problem
-
The setup checklist I'd hand my past self
-
What I'd do differently
The Friday night our agent started emailing the wrong people
In March 2025, 36 hours before our biggest outbound sprint of Q1, I watched our prospecting agent pull a list of 4,200 contacts and start drafting sequences to people who hadn't worked at their companies in two years.
Not ideal, but workable — except the sequence was already queued to send Monday morning.
I run RevOps at a mid-size B2B agency. We'd just migrated our outbound stack onto okki-go, the AI sales agent, and had spent the better part of two weeks figuring out okki go setup — which fields to map, which waterfalls to enable, and critically, how API company data actually fits into an agent-native prospecting workflow. The promise was clean: agents that research leads, enrich them, and draft human-in-the-loop outreach at scale.
The reality on that Friday? A mess. And the fix taught me more about data enrichment sales automation than any vendor demo ever did.
What we thought we were building (and what we actually shipped)
Here's the setup we designed. Our prospecting agent on okki-go pulls a filtered list from our ICP, then fans out to three enrichment sources — a primary provider, a secondary fallback, and a company-data API that we wired in for firmographic refresh. Intent data from a third source flags which accounts are in-market. The agent then drafts personalized sequences, and our SDRs spot-check before send.
It's tempting to think the hard part is picking the best enrichment vendor. But the painful lesson was this: identical-looking contact records from different sources can produce wildly different outcomes once an agent starts reasoning over them.
What most people don't realize is that agent-native prospecting doesn't fail because the agent is dumb. It fails because the agent trusts whatever's in the field. If your API data says someone is a 'VP of Marketing' at a company that was acquired in 2023, the agent will write a perfectly fluent, perfectly wrong email about a role that doesn't exist anymore.
Where it actually broke
Three things went wrong, roughly in this order.
First, our primary enrichment source lagged on job changes. About 11% of titles in our list were stale by six months or more. For a human SDR, that's a stumble you catch mid-read. For an agent drafting 4,000 emails, that's 400+ credibility-killing openers.
Second, our company-data API and our enrichment provider disagreed on company size for roughly 8% of accounts. One said 51–200 employees, the other said 201–500. The agent, being a good soldier, used both depending on which field it hit first. Our segmentation logic became non-deterministic without anyone noticing for four days.
Third, and this is the one that made me angry — the intent signals were firing on the wrong domain for a cluster of accounts because we'd let the API auto-canonicalize URLs and it collapsed two similarly-named companies into one entity.
After the third discovery in one week, I was ready to rip the whole integration out and go back to manual list-building. What finally helped wasn't a new vendor. It was changing how we let the agent consume company data.
The waterfall fix — and the part nobody tells you
Here's something vendors won't tell you: waterfall enrichment isn't just about 'combining sources.' The value is entirely in the order and the conflict resolution rules you write on top of it. Most teams enable waterfall and call it a day. Then they wonder why their agent still ships garbage.
We rebuilt our pipeline on okki-go like this:
- Primary source for title, email, and verified status — trusted first, but with a 90-day freshness requirement.
- Secondary API source for firmographics (size, industry, HQ) — always takes precedence over primary for these fields, because the company-data API updates faster than contact-level enrichment.
- Conflict log — any field where sources disagree by more than one tier gets flagged, not silently resolved. Our SDRs review the log weekly, and we feed corrections back.
- Domain canonicalization — replaced vendor auto-matching with a strict registry check (LinkedIn company URL + domain + tax ID when available).
That last one alone cut our mis-attributed intent signals by roughly 60% in the first month.
If your agent can't tell the difference between two companies with similar names, it can't be trusted with your brand voice.
Why this is a brand problem, not just a data problem
Here's where I'll plant a flag. The quality of the data your prospecting agent uses is your brand. Not the subject line, not the copy, not the cadence. The data.
When a prospect gets an email that mentions their old job, or references a company size that's off by 10x, or congratulates them on a funding round that never happened — they don't think 'the AI made a mistake.' They think this company is sloppy. They think you bought a list. They think you don't actually know who they are.
We saw this in our own data. After we tightened enrichment quality on okki-go — and let me be clear, we spent about three weeks on this — reply rates went from 2.1% to 4.7%. Same copy. Same sequences. Same SDRs. The only thing that changed was how much our agent trusted bad fields.
Part of me wishes we'd obsessed over this before spending money on the agent itself. Another part knows we couldn't have — you don't see the data quality problem until an agent starts moving fast enough to expose it. That's the tradeoff with agent-native prospecting. Speed reveals every crack.
The setup checklist I'd hand my past self
If you're wiring API company data into a prospecting agent — on okki-go or anywhere else — here's what I'd tell you, in order:
- Map field ownership before you map fields. Decide which source wins for which field, and write it down. If two sources can both write 'employee count,' you've already created a bug.
- Set freshness SLAs per field. Title changes by the month. Company size changes by the quarter. HQ can change or not at all. Don't apply one rule to all fields.
- Turn on conflict logging from day one. You will not find these issues by spot-checking sends. You find them by looking at where sources disagree.
- Kill auto-canonicalization. Really. Use a registry the vendor can't quietly guess at.
- Test with a small agent burst first. 200 emails, not 4,000. Read every draft. You'll learn more about your enrichment pipeline in one hour than in a week of dashboards.
And honestly? Don't skip the human-in-the-loop step, no matter what any vendor tells you. Our SDRs approve every sequence template before it scales. That single checkpoint caught three misattributed accounts last week that the conflict log hadn't flagged yet.
What I'd do differently
I have mixed feelings about how much of this work falls on RevOps. On one hand, the agent vendors should ship better conflict defaults out of the box. On the other, every company's ICP is different enough that you're going to fine-tune enrichment rules no matter what.
What I know for sure: the teams that treat data enrichment as a first-class part of their okki go setup — not a checkbox during onboarding — are the ones whose agents look smart in the inbox. Everyone else ships confident garbage and wonders why their reply rates are flat.
Our Friday night incident cost us a weekend. The fix cost us three weeks. The lesson is still cheap by comparison: your agent can't be smarter than the data you feed it, and your brand takes the hit when it isn't.
