---
name: "lead_intelligence"
description: "Research B2B prospects like a research team, not a scraper: define the ideal customer profile, run multi-source prospect research, grade every contact on source quality, enrich through an ordered waterfall, and hand off deduped, compliant data the CRM can trust. Use when building a prospect list, defining an ICP, enriching leads, or cleaning up CRM data."
metadata: { "includeInPrompt": true }
---

# Lead Intelligence

## Purpose

Turn a vague request like "find me some leads" into a disciplined research run: lock
the ICP, research accounts and contacts from graded sources, enrich missing fields
through an ordered waterfall, clean and dedupe everything, and hand over a list
with honest provenance for every row. The skill's whole point is that a prospect
list is only as good as the worst row in it. One bad address burns sender
reputation; one wrong merge corrupts the CRM; one careless outreach step breaks
the law. Details and templates live in `references/` and `bin/`.

Evidence tiers used here: **Official** (the vendor's or regulator's own docs say
it), **Reported** (practitioners widely observe it, attributed, not proven),
**Opinion** (this skill's own operating judgment). Factual claims about vendors
and law are sourced in
[references/source-grading.md](references/source-grading.md) and
[references/compliance-checklist.md](references/compliance-checklist.md).

## Workflow

### 1. Lock the ICP before researching anything

An ICP is account-level, not a buyer persona. It answers: which companies should
we talk to at all? Define it in three bands, per the template in
[references/icp-canvas.md](references/icp-canvas.md):

- **Firmographic:** industry and sub-industry, company size, revenue range,
  geography, growth stage.
- **Technographic:** current stack, dependencies, integration compatibility,
  competitor installs.
- **Behavioral:** intent signals (pricing-page visits, review-site research,
  hiring patterns), trigger events (funding, leadership changes, expansions).
- **Persona fit (contact level):** title, department, decision power
  (budget authority vs influencer vs user).

Write explicit **Ideal / Acceptable / Disqualify** bands and an **anti-ICP**
(companies that look close but never convert). Official practice from ICP
frameworks: validate the bands against won, lost, and churned accounts so the
profile reflects what predicts success, not just who already buys
(survivorship bias).

Score each account 1-5 on the weighted scorecard in the canvas. Do not research
contacts at accounts that fail the disqualify band.

### 2. Research accounts, then contacts, from graded sources

Research in tiers and record where every fact came from:

1. **Primary:** company website, filings, press releases, job postings, the
   prospect's own LinkedIn profile.
2. **Database vendors:** Apollo, ZoomInfo, Clearbit, and equivalents.
3. **Inference:** email pattern guesses, title inference from org charts.
   Never ship inference as fact.

Grade every contact **A / B / C / D** using the rubric in
[references/source-grading.md](references/source-grading.md). Only A and B rows
go into outreach. C rows are research leads that need confirmation. D rows are
cut.

### 3. Enrich missing fields with an ordered waterfall

When a contact is missing an email or phone, enrich through an ordered lineup of
providers instead of querying one at a time by hand. The pattern, Official from
Apollo's waterfall docs:

- Own database first, then each third-party source in a fixed order until a
  match is found or the lineup is exhausted.
- Credits are charged per source that returns data, so order by
  accuracy-per-cost, not by habit.
- Run a validator after each source when accuracy matters more than coverage;
  the run can stop at the first result or continue until a verified result is
  found.
- Do not re-call the same source for the same contact and data type within
  30 days; log which source enriched each row so spend is reviewable.

### 4. Clean and dedupe before anything touches the CRM

Run every list through `bin/leadlint.py` (dry-run example below) before import:

- **Normalize:** strip whitespace, lowercase domains, standardize title casing.
- **Exclude:** freemail domains (gmail, yahoo, and friends) must not spawn
  company records.
- **Dedupe keys, strongest first:** external ID, then exact email match, then
  normalized name + company domain. Exact matches on a strong key merge
  automatically; fuzzy matches on weak keys go to a human. A missed merge is
  annoying; a wrong merge is a data incident, so bias toward caution. This is
  Opinion, and it matches HubSpot's own guidance that merges are permanent and
  cannot be undone (Official).
- **Import mapping:** map every column to a real CRM property before importing;
  set lifecycle stage on every row; never import donations, deals, or
  transactions as separate contact records.

### 5. Pass the compliance and deliverability gate

Outreach only proceeds when the checklist in
[references/compliance-checklist.md](references/compliance-checklist.md) is
satisfied:

- **US (CAN-SPAM, FTC):** no B2B exception exists. Accurate headers, honest
  subject lines, clear ad identification, a valid physical postal address, a
  working opt-out, requests honored within 10 business days. Using a vendor
  does not transfer your liability.
- **UK/EU (GDPR/PECR, ICO guidance):** emails to business contacts can rest on
  legitimate interests with a documented assessment, but you must tell people
  they can object, and an objection stops the processing, full stop. Sole
  traders and personal addresses get the stricter consent treatment.
- **Deliverability:** verify every address before it enters a sequence. Keep
  bounce rate under 2 percent; over 3 percent is a red flag that starts
  throttling and can take weeks to recover from. Keep spam complaints under
  0.3 percent (Google/Yahoo ceiling), targeting under 0.1 percent. SPF, DKIM,
  and DMARC must all pass.

## Output Contract

Every research run delivers three artifacts:

1. **ICP one-pager** — the filled [icp-canvas.md](references/icp-canvas.md),
   including scorecard weights and the anti-ICP.
2. **Graded prospect list (CSV)** — columns:
   `full_name, title, department, decision_power, email, email_source_grade,
   phone, phone_source_grade, company, company_domain, company_size,
   industry, tech_stack, icp_score, research_notes, compliance_notes`.
3. **Hygiene + compliance report** — dedupe results (merged, flagged,
   dropped), freemail exclusions, enrichment spend by source, and the
   completed compliance checklist.

## Operating Rules

1. No invented facts. Every account attribute, title, and contact detail must
   trace to a source; inference is labeled inference.
2. Never ship a scraped list without provenance. If you cannot say where an
   email came from, it does not go into outreach.
3. Never merge fuzzy matches automatically. Human review, always.
4. Never advise or execute outreach that fails the compliance gate. When the
   law is ambiguous, say so plainly and recommend counsel.
5. Grade honestly: a list of 200 B-grade rows beats 2,000 C-grade rows. Say
   which rows to cut, by name, with reasons.
6. Measure enrichment by outcomes (bounce rate, connect rate), not database
   size or credit spend.
