How a Tiny Team Ships Like a Big One · The Product Track

The 16x problem: your CRM doesn't know who's in the deal

Native automation matched 0.74% of a customer's 425,000 emails to opportunities. On entity resolution - the unglamorous problem underneath every deal-intelligence promise.

5 min readai-engineeringentity-resolutioncrmproduct

Early in one customer engagement, we ran a one-query audit on their CRM: of roughly 425,000 emails their sales team had sent and received, how many were attached to the opportunity they were about? The answer was 0.74%.

Not 74%. Three-quarters of one percent. The other 99.26% of their deal history - the objections, the promises, the person who kept getting CC'd in and answering questions - existed in mailboxes and nowhere else. Their deal records looked empty because, as data, the deals mostly were.

Every promise anyone makes about "AI deal intelligence" quietly depends on solving this first. A model can't analyze a conversation it can't find. So before any of the interesting analysis our product does, there's a much less glamorous problem: connecting emails, calls, and meetings to the right deal and the right humans. This post is about that problem - and why it deserves more respect than it gets.

Why matching is genuinely hard

From a distance it looks like a join. Up close, it's the messiest data problem we work on:

  1. People aren't keys. The same human shows up as three email addresses, a first-name-only in a transcript, a nickname in a calendar invite, and a LinkedIn profile with a different job title than the CRM remembers.
  2. Threads aren't about one thing. A single email chain drifts across two opportunities and a support issue. A weekly call touches every active deal in ten minutes.
  3. The org chart in the CRM is fiction. The people actually driving a deal - the analyst who evaluates you, the exec who gets forwarded the summary - are frequently people the rep never entered. They exist only as message headers.
  4. The volume is inhuman. Hundreds of thousands of emails, thousands of hours of calls. No rep backfills this by hand; every "just log your activity" initiative in CRM history has died the same death.

What good looks like

For that same customer, our resolution pipeline got email-to-opportunity association from 0.74% to 12% - a 16x lift - with roughly 10% of calls associated as well. Those numbers sound modest until you remember most of any inbox genuinely isn't about a specific deal; the job isn't to attach everything, it's to attach what belongs.

The effect on a single deal is easier to feel than the percentages. One strategic opportunity went from a name and a dollar amount to 468 distinct data elements and 85 mapped stakeholders - including people who had been actively steering the evaluation from email threads without ever existing in the CRM. Across the account, about 300 stakeholders were identified and mapped, most enriched with public profile data. The sales team's reaction wasn't "nice dashboard." It was "who is that, and why have we never talked to him?"

From raw communication to a resolved deal · click to enlarge

The part we treat as an ML problem

The mistake we see teams make is treating matching as a pile of heuristics that either work or don't. We treat it the way we treat every model-shaped problem: with labeled samples and a measured precision bar, because a wrong association is worse than a missing one. Attaching the wrong email to a deal doesn't just add noise - it poisons every analysis built on top, and it erodes the rep's trust the first time they notice. Our bias is the same one our QA agent taught us: precision over recall, silence over noise.

What I won't describe here is the feature set - which signals we resolve on and how they're weighted is most of the two years of work. The shape of the system is not the secret. The recipe is.

Real numbers

  1. 0.74% → 12% email-to-opportunity association on ~425,000 emails - a 16x lift.
  2. ~10% of ~3,700 sales calls associated to their opportunities.
  3. One deal: 468 data elements, 85 stakeholders - several of whom were absent from the CRM entirely.
  4. ~300 stakeholders identified and mapped across a single strategic account.

Where the humans sit

Resolution proposes; people dispose. Reps can correct a stakeholder's role or an association, and those corrections stick - the system treats a human override as ground truth, not as a suggestion to argue with. Nothing silently rewrites CRM records. The same rule as everywhere else in this series: the machine moves the data, the human owns the record.

Steal this

Run the audit before you buy or build anything in this space: one query, count of communications associated to opportunities, divided by total. Ours came out at 0.74% for a sophisticated, well-run sales org - yours will likely be in that neighborhood, and that number is the honest baseline every "AI for sales" promise should be measured against. And if you build matching yourself: label a sample first, set a precision floor, and treat every wrong match as a bug, not a rounding error.

Next week the build track continues with the agent that files bugs before they happen. This track returns in two weeks: where the signals come from when they're not in your inbox - an entire industry's public exhaust.


This post is part of the product track of How a Tiny Team Ships Like a Big One, a series on how six builders run a production AI company. Building at Aithon - if this is how you want to work, talk to us.