Sourcing And Enrichment

sourcing-and-enrichment.md

Markdown 6.6 KB 90 lines 6 sections

Sourcing, Enrichment, and Verification

How to get contacts legitimately, fill in missing data without paying twice or trusting bad data, and verify every address before it reaches a sequence.

Sourcing without scraping LinkedIn

LinkedIn is where the people are, and scraping it is where the lawsuits are (see compliance.md). The workable pattern:

  1. Define the audience in Sales Navigator (or LinkedIn search): titles, seniority, company size, industry, geography, recent job changes, growth. This is research, which is fine.
  2. Pull the contacts from a licensed database using the same filters: Apollo, ZoomInfo, Clay's providers, Prospeo, and similar. They're licensed to provide the data and carry the provenance.
  3. Use LinkedIn by hand for Tier 1 accounts: confirm the person still holds the role, read their recent posts, decide whether to connect.

Other sources that don't involve LinkedIn:

SourceGood forNotes
Job boards via TheirStack or PredictLeadsCompanies hiring in your functionAlso reveals their tools
Directories and marketplacesNiche lists: app store developers, agency directories, partner listings, software review categoriesCheck each site's terms; prefer official APIs or exports
Competitor customer pagesLogos and case studiesPublic, but use them as accounts, not as a pitch ("I see you use X")
Google Places APILocal and SMB listsThe compliant programmatic route; see compliance.md
GitHubDeveloper toolsSee the SaaS branch reference
Podcast guests, conference speakersLeaders who talk publiclyReady-made research material too
AI list builders (Exa Websets, Parallel FindAll)Niche lists from a plain-English description ("Series A fintechs that added a pricing page this year")Precise but incomplete. In one 2026 evaluation the best tool found about a fifth of possible matches, at high precision. Use them for depth, not coverage
Apify actorsStructured data from sites without an APIPick actors for public sites whose terms allow it; never for LinkedIn
Lookalikes"More companies like our best customers"Exa find-similar, Ocean.io, or seed-based search in your database

Enrichment: run providers in order

No single provider finds everyone, and the ones that find the most also return more wrong data. The standard approach is a waterfall: query providers one at a time and stop at the first confident result.

  1. Order providers by accuracy for your ICP, then by coverage. Independent comparisons disagree wildly. Different 2025–26 benchmarks put the same tools anywhere from 25% to 87% find rates, and the highest finders sometimes had four times the false-positive rate. Run your own bake-off (below).
  2. Stop at the first result that passes verification. Paying three providers for the same contact is the most common waste.
  3. Set a cost cap per contact and log which provider filled each field.
  4. Mobile numbers are for Tier 1 only. They're the most expensive field, and many are personal phones (see the phone rules in compliance.md). For EU and UK numbers, providers with human-verified European data tend to do better.
  5. Keep the enrichment result in your data, not just the sending tool, so you can re-verify later and answer data subject requests.

For acceptance rules per field, cache keys, and how to treat errors versus genuine no-matches, see enrichment-playbook.md. Clay is the common way to orchestrate a waterfall across many providers. FullEnrich and similar aggregators do it as a single API call. Building it yourself means calling each provider's API in sequence.

Provider bake-off

Before committing to a provider or an order, test on your own ICP:

  1. Take 200 contacts you already know are correct (customers, recent conversations).
  2. Strip the emails and phones, then run each candidate provider.
  3. Score each: found, correct, wrong (a confident answer that was false), cost per correct contact.
  4. Order the waterfall by fewest wrong answers first, then by cost per correct contact.

Repeat each quarter, because providers' data quality shifts.

Verification

Verify every address before it reaches a sequence. This is the single cheapest protection for sender reputation.

When to verify

  • When you enrich the contact.
  • Again within 7 days of sending, for any list built earlier. B2B data decays steadily (vendor estimates run around 2% a month and 20–30% a year).
  • Re-verify CRM contacts every quarter, and anything older than 30–60 days before using it.

What to do with each result

ResultAction
ValidSend
Invalid, disposable, or spam trapSuppress permanently
Role address (info@, sales@)Exclude from personal sequences. Fine only for local businesses that publish it as their main contact
Catch-all (accept-all)See below
UnknownRetry once later; don't send if it's still unknown

Catch-all domains accept mail for any address, so basic verification can't tell whether the person exists. They make up a large share of B2B domains (vendor estimates run 15–28%). Handle them with a policy, not a guess:

  1. Resolve them with a verifier that goes beyond the SMTP check (BounceBan, Scrubby, Truelist, and others combine extra signals). Some verifiers only mark catch-alls "risky."
  2. Send resolved-valid catch-alls from separate, lower-volume inboxes, so a bad batch can't damage your main sending.
  3. Send unresolved catch-alls only for Tier 1 accounts, where the account is worth the risk, and watch bounces on that inbox closely.

Hard limits: keep bounces under 2% per campaign (under 1% is best in class) and pause automatically above that. See the cold-email skill's deliverability reference.

Suppression list

Keep one suppression list, synced to every tool that sends (email tool, LinkedIn tool, dialer, CRM), and check it before every send:

  • Unsubscribes and opt-outs from any channel
  • Hard bounces and invalid addresses
  • Current customers and open deals (outbound to them is a sales-team problem)
  • Competitors and partners
  • People who replied "not interested," for the cooldown period you choose
  • Do-not-contact requests and data deletion requests

Key it on email, LinkedIn URL, and phone number so a person removed in one channel is removed in all of them.

Provenance

Every contact carries: the source (provider or URL), the collection date, the lawful basis for EU/UK contacts, and the last verification date and result. This answers "where did you get my email?" and makes data deletion requests possible.

Other references

From the same skill.

View all 10 →

Related skills

More from the same category.

View all