Skip to main content
F-4 · GTM Foundation · 100 XP · ~12 minComplete the data audit challenge at the bottom to earn 100 XP.

Reading Your Data

You ran your first enrichment. You got results. Now the question nobody tells you to ask: how much of this can you actually trust? Not all enrichment data is equal. A company headcount at 90% confidence is different from one at 40% confidence. An email address on a catch-all domain is different from one that’s verified deliverable. A funding date from last week is different from one that’s 18 months old. This module teaches you to read the signals behind the values, not just the values themselves.
🎬 Video coming soon.

Confidence Scores: What They Actually Mean

Most Bitscale enrichments return a confidence score alongside the data. Here’s how to read it:
ConfidenceWhat It MeansAction
90–100%Multiple sources agree. High confidence.Use it.
70–89%Probable match. One primary source.Use it — verify if high-stakes.
50–69%Possible match. Conflicting signals.Flag for manual review.
Below 50%Unreliable. The provider is guessing.Discard or run a second provider.
The 94% trap: A 94% confidence score doesn’t mean the data is 94% accurate. It means the algorithm is 94% confident in its guess. The guess can still be completely wrong. For email addresses especially, always run a separate validation step — confidence score ≠ deliverability.

Freshness: When Was This Data Last Seen?

Some enrichment providers show a last_seen or updated_at timestamp. When they don’t, use these rules:
Data TypeSafe Freshness WindowNotes
Funding dataUp to 12 monthsOlder than that — re-check manually
HeadcountUp to 6 monthsAccurate to ±20% within this window
Job titlesUp to 6 months~15% error rate at 6+ months
Email addressesUp to 3 monthsFormat-valid ≠ deliverable after this
Practical rule: For active outreach, use data under 6 months old. For list building and research, up to 12 months is usable. For anything older — re-enrich before sending.

The Catch-All Domain Problem

A catch-all domain is one where every email address returns as “valid” during verification — regardless of whether the mailbox actually exists. This is the #1 undetected deliverability trap. How it works:
  • Normal domain: john.smith@acme.com → Verification checks if this specific mailbox exists → Returns TRUE or FALSE
  • Catch-all domain: The server accepts any email to this domain as valid, including completely made-up addresses → Verification always returns TRUE
Why it matters: If you send to catch-all addresses and half the mailboxes don’t exist, your bounce rate spikes. High bounce rate → damaged sender reputation → everything you send starts landing in spam. How to handle catch-all domains in Bitscale:
  1. Add an email verification column to your grid
  2. For rows flagged as catch-all, either skip them entirely or use a tool with better catch-all detection (MillionVerifier handles this better than most)
  3. Add a filter: Export only IF email_verified = TRUE AND catch_all = FALSE

Cascade Enrichment: Don’t Stop at One Provider

When a single provider returns empty or low-confidence data, don’t accept it as a dead end. Run a cascade. The pattern:
Column A: Email (Apollo)       → Primary provider
Column B: Email (Hunter.io)    → Fallback if Column A is empty
Column C: Email (Best)         → AI column: use A if not empty, else B
Column D: Email (Verified)     → Verification on Column C result
Enterprise Bitscale users get 85%+ email coverage using cascade enrichment vs. 60–65% with a single provider. AI column logic for cascade (paste this directly):
If {{email_apollo}} is not empty and not null, return {{email_apollo}}.
If {{email_hunter}} is not empty and not null, return {{email_hunter}}.
Otherwise return "not_found".
Set this AI column to “Logic only” mode — no LLM call needed, it’s just conditional logic.

Your Data Quality Checklist

Before exporting any grid for outreach, run through this:
  • Confidence scores reviewed — anything below 70% flagged or removed
  • Freshness checked — no data older than 6 months in active use
  • Catch-all domains identified and handled
  • Email verification column run (separate from enrichment)
  • Empty contact rows reviewed — worth manual lookup or remove?
  • Headcount filter applied — company size still matches your ICP?
Rule of thumb: A clean list of 200 rows beats an unverified list of 1,000 rows every time. Your deliverability, reply rates, and SDR time all improve when the list is smaller and better.

🎯 Challenge · 100 XP

Run a data quality audit on the grid you built in F-3.
  1. Add a confidence score review — identify any rows where confidence is below 70%
  2. Add an email verification column and run it
  3. Flag any catch-all domains (your email verification tool should do this)
  4. In your submission, report:
    • How many rows passed quality checks
    • How many were flagged or removed
    • What percentage of emails came back verified and deliverable
Submit your F-4 audit →

Up next: F-5 · Bitscale Workflow Model

One more Foundation module. Then you’re ready for the Knowledge Check and 200 bonus XP.