# Leads Qualification (7-gate) > Canonical: https://www.yalc.ai/skills/qualify-leads/ 500 leads in. ~40 Hot, ~80 Warm. The rest filtered without touching a single spreadsheet. ## Categories - prospecting **Repo:** https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system **Skill Dir:** .claude/skills/qualify-leads **Booker Url:** https://app.iclosed.io/e/acquisition-and-consulting-llp/yalc-implementation-call **Github Skill Url:** https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/qualify-leads **Hook:** I used to spend 3 hours manually scoring leads. **Before State:** 3 hours per batch, manually scoring against ICP criteria in a spreadsheet. **After State:** Now Claude Code does it in 12 minutes across 7 filters. ## Gates - **Company quality** - N: 1 - Body: Crustdata checks headcount, funding stage, industry, and tech stack against ICP criteria. If the company does not fit, the lead dies here. - Tools: Crustdata - **Role match** - N: 2 - Body: Unipile pulls LinkedIn profile data. Seniority, title, department. If they cannot sign a check or influence a purchase, they are out. - Tools: Unipile - **Pain point fit** - N: 3 - Body: Claude reads the company website, recent posts, and job listings. Scores how likely they are to have the problem you solve. - Tools: Claude - **Buying signals** - N: 4 - Body: Crustdata scans for hiring activity, funding rounds, tech stack changes. Active signals bump the score. No signals, no priority. - Tools: Crustdata - **Competitor conflict** - N: 5 - Body: Firecrawl checks if they are already using a direct competitor. If yes, different routing. If no, green light. - Tools: Firecrawl - **Disqualifier screening** - N: 6 - Body: Claude runs a final check for hard blockers. Wrong geography, too small, already a customer, on the blocklist. - Tools: Claude - **ICP segment scoring** - N: 7 - Body: Final score from 0 to 100. Each lead gets tagged Hot, Warm, Monitor, or Disqualified. - Tools: **Result Stat:** 500 leads go in. ~40 come out as Hot. ~80 as Warm. The rest get filtered without touching a single spreadsheet. ## Closer Oh and the whole thing runs from one command in your terminal. Open source. ## Glance - License: MIT (Yalc) - Gates: 7 waterfall checks - Sources: 5 input types **Clone Command:** gh repo clone Othmane-Khadri/YALC-the-GTM-operating-system && cp -r YALC-the-GTM-operating-system/.claude/skills/earleads-leads-qualification ./.claude/skills/ **Yalc Fit Score:** 10 **Yalc Verdict:** The Yalc replacement for Clay. 7 waterfall gates that score any lead source against your ICP. Outputs to the Unified Leads DB ready for campaign. ## Plain Description The Leads Qualification skill takes leads from any source (CSV upload, LinkedIn post engagers, profile visitors, Notion list, or webhook) and runs them through 7 sequential gates: ICP fit, company size, region, role match, intent signals, dedupe, and final score. Output goes to the Unified Leads DB in Notion with a 0 to 100 fit score per lead. Earleads built this skill specifically to replace Clay.com workflows. Clay's UI is friendlier; this skill is integrated, programmable, and free of per-credit waterfall pricing surprises. For any operator running their own Yalc-driven GTM, this is the canonical qualification step between intake and outreach. ## Yalc Framework **Workflow Step:** score ### Workflow Narrative The Leads Qualification skill sits at the **score** node. Every lead Yalc surfaces (from Crustdata, Predictleads, LinkedIn engagement scrapes, profile visitors) flows through here before becoming an outreach target. The 7-gate waterfall is sequential: each gate runs only if the previous gate passed. This makes scoring cheap on average because most leads fail an early gate before triggering expensive checks (Crustdata enrichment, full ICP analysis). **Workflow Position:** The qualification and scoring node. Yalc passes raw leads in, gets scored leads out. Output is written to the Unified Leads DB; only leads above the score threshold are eligible for downstream campaigns. ### Trigger Phrases - qualify these leads - run leads qualification - score these prospects - qualify content engagers - qualify LinkedIn post likers - qualify post commenters - qualify from CSV - run the qualification pipeline - ICP check these ### Required Inputs - A lead list from one of 5 sources (CSV, JSON, Notion, LinkedIn visitors, post engagers) - The client's ICP definition (lives in `01_Projects/Clients/{name}/Positioning/`) - Crustdata API key for enrichment gates - Unified Leads DB data source ID (`56e04a3e-a757-4714-b328-1e5910a80bb1`) ### Outputs - Scored leads (0 to 100) written to the Unified Leads DB - Per-lead gate breakdown (which gates passed, which failed, why) - Summary stats (total in, total qualified, biggest disqualifier) ### Chaining **Upstream:** linkedin-scraping or Notion CSV upload → earleads-leads-qualification **Downstream:** Qualified leads → unipile-campaign or email-sequence ### Anti Patterns - Don't run qualification without an explicit ICP file. The skill needs concrete criteria. Vague ICP returns vague scores. - Don't skip the dedupe gate. Running campaigns to leads who are already in the CRM as customers is the fastest way to lose trust. - Don't use the skill on lists above 5,000 leads in a single run. Crustdata credits and Notion writeback both throttle. Chunk into 500-lead batches. ## Dependencies ### Mcps - Crustdata MCP (enrichment gates) - Notion MCP (writeback) ### Env - CRUSTDATA_API_KEY - NOTION_API_KEY **Notes:** Reads ICP definition from `01_Projects/Clients/{client}/Positioning/`. The skill pre-flights credit usage against Crustdata before running, so you'll never accidentally burn 1000 credits on a bad query. ## Pros - 7 waterfall gates catch bad leads cheaply (most fail at gate 1 or 2) - Replaces Clay.com with no per-credit billing surprises - 5 input source types covers all common Yalc lead origins - Output goes directly to Unified Leads DB, ready for campaign - Pre-flight credit check prevents accidental large bills ## Cons - Requires upfront work to write a clean ICP definition file - Crustdata credits cost money; high volume runs add up - Notion writeback rate limits at 40 pages per batch - Single-tenant by default; multi-client setup requires per-client ICP files ## Who For - Yalc operators who source from multiple lead sources and need consistent scoring - Agencies running qualification for multiple clients (one ICP file per client) - Founders running outbound who care about hit rate, not just volume ## Related ### Skill **Rule:** Common upstream. Engagement scrapes flow into qualification. **Url:** /skills/linkedin-scraping/ ## Alternatives - **Clay.com** - Rule: Switch when you want a visual no-code workflow over the same waterfall logic. - Url: # - **Manual scoring in HubSpot** - Rule: Skip the skill for very small lead lists (under 50). Manual scoring in HubSpot is faster. - Url: # ## Faq - Q: How does Yalc improve lead quality with AI? - A: The seven gate qualification pipeline scores every lead on ICP fit, role match, intent, and buying signals before any outreach, so only leads that clear the bar reach a campaign. Bad leads fail cheaply at an early gate, and the leads that pass carry a 0 to 100 fit score you can route on. - Q: What are the 7 gates? - A: ICP fit, company size, region match, role match, intent signals, dedupe against existing CRM, and a weighted final score. Each is configurable via the ICP file. - Q: Why a waterfall instead of parallel scoring? - A: Cost. Some gates require Crustdata enrichment which costs credits. The waterfall fails leads cheaply at gate 1 or 2 before triggering expensive checks downstream. - Q: Can I customize the gates? - A: Yes. Each client gets a custom ICP file. Add or remove gates, change thresholds, weight gates differently. The skill reads the file at runtime. - Q: How does dedupe work? - A: The skill queries the Unified Leads DB and any connected CRM (HubSpot, Salesforce) before writing new leads. Existing customers and active prospects are filtered out automatically. - Q: What's the failure mode if Crustdata is down? - A: Gates that require Crustdata fail open (lead passes the gate but is flagged for manual review). Gates that don't depend on Crustdata still work. The skill never silently drops leads. - Q: How long does qualification take for 1,000 leads? - A: Roughly 15 to 30 minutes depending on Crustdata response times and how many leads make it past gate 4 (where enrichment kicks in). Most fail earlier and skip the slow checks. **Reviewer:** Othmane Khadri