Nima LabsContact us

Scored as a good fit, with nobody on the record to contact

229 companies came through ICP scoring as a fit, and 143 of them had no contact on the record at all. The scoring was not the bottleneck. What was missing was somebody to write to, and that had been true the whole time without appearing in any report, because a report counts the records that exist and an account with nobody on it produces none.

4 min read

The path from about 1,200 companies to 59 accounts

The task was ordinary. Take a list of companies, score it for fit, match it against the contacts in our CRM, and hand a rep something to work.

Every step looked like progress, and the number got smaller at each one.

Step What came out
The starting list about 1,200 companies
After ICP scoring 229 companies
Contact matching against those 177 contacts, across 86 of the 229
After a lead status check 135 contacts in 70 companies
After validating against our own CRM filters 59 accounts, carrying 107 contacts

The lead status step surprised me, because I had assumed all 86 companies would be untouched. 16 of them already carried a status that ruled them out, which took 42 contacts with them.

The last step needs a warning. An undocumented extra condition inside one of our filters, requiring that the company owner be unknown, accounted for a drop I could not explain at first. A filter carrying a condition nobody wrote down produces a number nobody can reconcile.

The 107 contacts break down as 60 founder, 23 marketing, 18 operations and six ecommerce, one persona per contact, which is also the check that the file is complete.

143 of the 229 had nobody on the record

86 of the 229 companies had a contact. The other 143 had nobody.

143 of 229 companies that scored as a fit had nobody on the record. No name, no address, nothing to write to.

The scoring was not the bottleneck. There was simply nobody to contact.

From six months inside a B2B GTM organization with 36,000 accounts in its CRM.

The chain above looks like a filter destroying a pipeline. What it actually shows is the state of the contact data, arriving all at once at the end of an afternoon. 143 of the 229 were a company somebody still had to find a person at, before they were anything a rep could work.

Why it never showed up in a report

A report counts records. An account with no contact on it produces no contact rows, so it cannot appear in any view built on contacts.

That is the whole mechanism. Coverage reporting reads activity, activity hangs off contacts, and an account with nobody on it is invisible to all of it. It scores well, it sits in the target list, it gets counted in the plan, and no report says that nothing can happen on it.

The consequence lands on capacity planning. If we plan a quarter against 229 accounts and 143 of them need somebody found first, the plan rests on capacity that does not exist, and the gap shows up later as reps missing activity targets.

Three things that would have broken the list quietly

Each of these produces a plausible wrong list rather than an error.

An exact domain match marked two companies as missing from our CRM. Both were in there, one under a www prefix and one without a subdomain. Normalising the domain before matching is the fix, and without it the miss looks like a gap in the data.

One filter condition had a fixed date written into it. It worked on the day it was built and would have returned nothing the next morning. Nothing in the tool says so.

Two companies existed as two separate company objects each, with two of the filter fields sitting on different objects, so an AND filter dropped both companies. The cause was an import creating new records instead of merging, and the effect is a company that passes every criterion and appears nowhere.

What to do instead

  1. Read a fit score and a contact count together, or read neither. An account that scores well and carries nobody is research, and calling it a lead is how a quarter gets planned against capacity that is not there.
  2. Export the accounts with no contact as their own list. They are the most useful output of the exercise, and they need a different process than the ones with contacts.
  3. Normalise domains before matching anything. A www prefix is enough to make a company that exists look like one that does not.
  4. Check every filter condition for a fixed date, and for conditions nobody documented. Both are correct on the day they are built and wrong afterwards, and neither warns you.
  5. Check for duplicate objects when an AND filter returns less than it should. Two records for one company means no single record carries all the fields.

Before buying contact data to close that gap, the number worth measuring first is what share of enriched contacts are actually decision makers. And the execution side of the same problem is the mirror image: heavily worked accounts carrying decision makers nobody had contacted.