Lead Researcher
Score and qualify sales leads against an Ideal Customer Profile (ICP) definition, then draft outreach hooks tied to specific ICP signals.
Table of Contents
- [Keywords](#keywords)
- [Quick Start](#quick-start)
- [Core Workflows](#core-workflows)
- [Tools](#tools)
- [Reference Guides](#reference-guides)
- [Templates](#templates)
- [Best Practices](#best-practices)
Keywords
lead, leads, prospect, prospecting, sales, outbound, ICP, ideal customer profile, qualify, qualification, scoring, account list, target account, outreach, cold email, BDR, SDR, account executive
Quick Start
Score a Lead List in 10 Minutes
- Define your ICP in
icp.jsonusing the schema inassets/icp_schema.json - Save your lead list as a CSV with columns:
company,industry,size,country,website,signals - Run the qualifier:
``bash python scripts/lead_qualifier.py icp.json leads.csv ``
- Review the ranked output — top 20% is your A-tier outreach list
Core Workflows
Workflow 1: ICP-Based Lead Scoring
Goal: Rank a list of candidate accounts so the top of the list reflects the best fit, not the most recent import.
Steps:
- Build your ICP in
icp.json— seeassets/icp_schema.jsonfor the full schema - Capture leads in a CSV with at minimum:
company,industry,size,country - Run:
python scripts/lead_qualifier.py icp.json leads.csv - Sort the result by
score(highest first); the top 20% is your A-tier - Discard everything below the disqualification threshold rather than mass-emailing
Expected Output: Ranked list with score, tier (A/B/C/disqualified), and reason per lead.
Time Estimate: 10-15 minutes for a list of 200 leads.
Workflow 2: ICP Definition
Goal: Convert a fuzzy "we sell to ops teams at mid-market SaaS" intuition into a structured ICP that the qualifier can actually score against.
Steps:
- Pull the company names of your last 20-50 best customers
- Identify the shared signals: industry, size band, geography, tech stack, pain trigger
- For each, decide whether it's a must-have, nice-to-have, or disqualifier
- Encode in
icp.jsonperreferences/icp_framework.md - Pressure-test by scoring last quarter's closed-won and closed-lost accounts — the model should rank the wins above the losses
Expected Output: A versioned icp.json that retroactively predicts your past wins.
Time Estimate: 1-2 hours for first pass, 30 minutes per quarterly refresh.
Workflow 3: Outreach Hook Drafting
Goal: Write outreach where the personalization actually mentions a real signal, not a fake "I noticed you posted on LinkedIn."
Steps:
- Take the qualifier output for an A-tier lead
- Read the matched ICP signals — these are your hooks
- Use the outreach template in
assets/outreach_template.md - Personalize the opening line with the strongest signal (e.g., recent funding, hiring spike, product launch, public quote about a pain you solve)
- Keep the rest of the email short — sub-90 words
Expected Output: First-touch outreach email under 90 words with a real signal-based hook.
Time Estimate: 5 minutes per A-tier lead.
Tools
lead_qualifier.py
Reads an ICP JSON file and a leads CSV, returns a scored & tiered list.
# Human-readable
python scripts/lead_qualifier.py icp.json leads.csv
# JSON for programmatic use
python scripts/lead_qualifier.py icp.json leads.csv --json
Scoring model:
- Each ICP attribute has a weight (default 10) and direction (must / nice / disqualify)
- Must-have hits: full weight
- Nice-to-have hits: half weight
- Disqualifier hits: lead drops out of consideration entirely
- Score is normalized to 0-100
Reference Guides
references/icp_framework.md— How to define an ICP that actually predicts deal velocity, with worked examples by GTM motion (PLG, sales-led, channel)
Templates
assets/icp_schema.json— JSON schema for an ICP definition fileassets/outreach_template.md— Cold-touch email template with placeholder slots tied to ICP signals
Best Practices
- Disqualify hard. Mediocre leads are worse than no leads — they consume rep time and damage sender reputation.
- Keep ICP versioned. When deal velocity drops, your ICP is often stale. Re-derive every quarter.
- One signal per email. Multi-signal openers feel like research dumps; one well-chosen signal feels human.
- Leads are not opportunities. A scored A-tier lead is permission to reach out, not a forecasted deal.
- Logs over feel. Track which signals correlate with closed-won — let data update the ICP, not vibes.
Integration Points
- Pairs with
marketing/cold-email/for sequence design - Pairs with
sales-success/skills for account executive handoff - Feeds into
business-growth/revenue forecasting