Sales Lead Scorer

Score leads

by explorium-ai · MIT license · ★ 197 on GitHub

Score leads cover

Lead scoring skill for Claude Code and Codex: tier inbound or outbound leads as Hot/Warm/Cold against a buyer persona and ICP. Resolves each lead, fetches person profile and contact data, pulls account firmographics and recent business…

---
name: score-leads
description: "Lead scoring skill for Claude Code and Codex: tier inbound or outbound leads as Hot/Warm/Cold against a buyer persona and ICP. Resolves each lead, fetches person profile and contact data, pulls account firmographics and recent business events, and returns per-lead evidence rows. Use for inbound lead scoring, CRM enrichment scoring, MQL prioritization, and outbound contact prioritization. Triggers on 'score these leads', 'tier this list', 'rank inbound', 'prioritize my MQLs', 'which lead should I call first', 'data enrichment for inbound scoring'. Works in Claude Code, Codex, and other AI agents."
---

# Score Leads

Gather verified person, account, and trigger evidence per lead so a downstream model can tier leads Hot / Warm / Cold against a stated persona and ICP. This skill collects the evidence and restates the rule set; it does NOT apply scoring math.

## Input

- Leads (required): list of prospect IDs, emails, LinkedIn URLs, or name+company rows. Mixed types allowed.
- Buyer persona (required): target job titles or title keywords, seniority, and department.
- ICP (required): country (or region-country), company size buckets, optional revenue buckets, optional industry (LinkedIn or NAICS, mutually exclusive), optional tech stack, optional company age.
- Source label per lead (optional): e.g. demo_request, pricing_inquiry, free_trial, content_download, webinar_attended, cold_inbound. Passed through verbatim.
- Tier thresholds (optional): Hot and Warm cutoffs on the composite the caller computes.
- Trigger lookback (optional): default 90 days for recent business events.

Overview

Gather verified person, account, and trigger evidence per lead so a downstream model can tier leads Hot / Warm / Cold against a stated persona and ICP. This skill collects the evidence and restates the rule set; it does NOT apply scoring math.

What you get

  • Restated rulespersona (titles, seniority set, department set); ICP filter set (exact object with canonical-resolved values, plus the industry-taxonomy and country-vs-region choices); trigger lookback in days.
  • Resolution summaryone row per input with input, resolved name, person id, status. Status legend: Auto-resolved, Verified (caveat), Ambiguous, Failed.
  • Per-lead evidence rowsone row per lead with the columns from step 7.
  • ICP shape (optional, when corroboration ran)total addressable count, top size buckets, top industries.
  • Scoring rules handed to the callerpersona-match rule (title list, seniority set, department set), ICP-match rule (the filter object), source weights (or raw label pass-through), trigger weights (event-type weights and recency decay), tier thresholds (Hot and Warm cutoffs).
  • CaveatsFailed leads are not scoreable, list separately; stale records (>12 months) get a "downweight title-based fit" flag; Hot-candidate leads missing both phone and professional email get a "verify contact data before outreach" flag.
Manual install (npx, ZIP)
Claude Codenpx skills add explorium-ai/gtm-skills --skill score-leads -g -a claude-code
Claude Code (degit)npx degit explorium-ai/gtm-skills/skills/score-leads#main ~/.claude/skills/score-leads
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md7.4 KB
Read SKILL.md here
explorium-ai/main1 file shown
SKILL.md
Show the full text48 lines
score-leads/SKILL.md48 lines · 7.4 KB

Score Leads

Gather verified person, account, and trigger evidence per lead so a downstream model can tier leads Hot / Warm / Cold against a stated persona and ICP. This skill collects the evidence and restates the rule set; it does NOT apply scoring math.

Input

  • Leads (required): list of prospect IDs, emails, LinkedIn URLs, or name+company rows. Mixed types allowed.
  • Buyer persona (required): target job titles or title keywords, seniority, and department.
  • ICP (required): country (or region-country), company size buckets, optional revenue buckets, optional industry (LinkedIn or NAICS, mutually exclusive), optional tech stack, optional company age.
  • Source label per lead (optional): e.g. demo_request, pricing_inquiry, free_trial, content_download, webinar_attended, cold_inbound. Passed through verbatim.
  • Tier thresholds (optional): Hot and Warm cutoffs on the composite the caller computes.
  • Trigger lookback (optional): default 90 days for recent business events.

Workflow

  1. Lock the persona and ICP rule set. Restate persona (titles, seniority, department) and the ICP filter shape. Discover canonical values for every free-text dimension (industry, tech stack, job title, city) before applying any filter. Tighten persona matches by intersecting a job-title filter with a seniority filter: a title-only filter is loose and returns near-matches at the rim. Note the mutually exclusive choices (LinkedIn vs NAICS; country vs region-country). Echo persona and ICP in the output so scoring math is auditable.
  2. Resolve each lead. Bucket every input row; never silently drop one. Known prospect IDs pass through. Email rows resolve by email: email is a unique identifier, so a no-match is a hard fail, NOT a fallback to name search (a typo'd email must not silently resolve to a different real person). LinkedIn URL rows resolve by URL. Name+company rows resolve by full name plus company name or domain: person matching returns only an id or null (no confidence score, no candidate list), so a name+company match at a 10k+ employee company is indistinguishable from a unique email match. Treat name+company matches as Verified-with-caveat by default. Free-text rows like "Jane Doe at Acme" parse to the name+company path. Persona-only rows (no name, "the CFO at Notion") must NOT use full_name="CFO" (silently returns nothing); instead match the business, then sample prospects at that account filtered by canonical job title and seniority, and surface the candidates as Verified (caveat) for the user to pick. Tag each row: Auto-resolved, Verified (caveat), Ambiguous (pause), or Failed (no match). Never reroute Failed emails into name search.
  3. Enrich the person. Profile (full name, title, seniority, department, linkedin URL) plus contacts. Default email-only (cheaper); switch to email + phone only when phone is required (SDR dialer flows). Per-prospect post history is a current gap; if recent activity matters, pull the employer's recent posts as a substitute.
  4. Resolve and enrich the lead's company. Match the business by domain or name, then enrich firmographics (headcount, revenue range, country, industry, size bucket, age, description). Add technographics when the ICP names a tech stack. Add funding posture when the ICP cares about stage.
  5. Fetch recent triggers per account on the configured lookback (default 90 days). Relevant events: new funding rounds, leadership hires in the persona's department, hiring surges in the persona's department, office openings or relocations, product launches, new partnerships. For accounts where prospect-level moves matter (job change into the persona seat), also fetch prospect events. Tag each event with age in days. Event-attribution sanity check: ensure events tie to the matched business, not blended across parent / subsidiary entities.
  6. Optional ICP corroboration. If the caller wants to know whether the lead's account looks like the broader ICP shape, size the ICP filter set once and attach the summary (total addressable count, size bucket distribution, top industries). Do not re-pull per lead.
  7. Compose one evidence row per lead. Each row carries: input identifier, resolution status, person id, full name, title, mapped seniority (canonical), mapped department, email, phone, linkedin URL, company name, company domain, business id, headcount, revenue range, country, industry, size bucket, revenue bucket, tech stack hits (only those intersecting the ICP tech list), top 3 recent events (type, age in days, one-line summary), source label, caveat strings (Stale, Ambiguous, Failed, Missing phone, Email not found). Process in chunks of ~25 end-to-end so working context does not balloon.
  8. State the scoring boundary explicitly. The output ships the per-lead evidence plus the rule set verbatim. Composite scoring and tier assignment (Hot / Warm / Cold) are the caller's job. Do not invent a composite score in this skill.

Output Format

  • Restated rules: persona (titles, seniority set, department set); ICP filter set (exact object with canonical-resolved values, plus the industry-taxonomy and country-vs-region choices); trigger lookback in days.
  • Resolution summary: one row per input with input, resolved name, person id, status. Status legend: Auto-resolved, Verified (caveat), Ambiguous, Failed.
  • Per-lead evidence rows: one row per lead with the columns from step 7.
  • ICP shape (optional, when corroboration ran): total addressable count, top size buckets, top industries.
  • Scoring rules handed to the caller: persona-match rule (title list, seniority set, department set), ICP-match rule (the filter object), source weights (or raw label pass-through), trigger weights (event-type weights and recency decay), tier thresholds (Hot and Warm cutoffs).
  • Caveats: Failed leads are not scoreable, list separately; stale records (>12 months) get a "downweight title-based fit" flag; Hot-candidate leads missing both phone and professional email get a "verify contact data before outreach" flag.

Limitations

  • Scoring math is downstream LLM work. This skill gathers evidence and restates the rule set; it does NOT produce a composite score or assign a tier.
  • Name+company resolution can return multiple plausible matches at large companies; those rows surface as Ambiguous, and the matching response carries no confidence signal to disambiguate.
  • Company size and revenue are bucketed, not exact counts; persona/ICP math must work against the bucket.
  • Industry taxonomy (LinkedIn vs NAICS) is mutually exclusive on a single ICP filter.
  • No built-in scoring engine, no contact data-quality sort, no native employee or revenue sort, no Inc/Fortune ranking signal, no metro taxonomy, no sub-department job-function filter.
  • Department is null for many cross-functional senior roles (Chief X Officer, President, Founder). Group these under "Unattributed".
  • The mapped seniority column should show the canonical value used for filtering.
1---
2name: score-leads
3description: "Lead scoring skill for Claude Code and Codex: tier inbound or outbound leads as Hot/Warm/Cold against a buyer persona and ICP. Resolves each lead, fetches person profile and contact data, pulls account firmographics and recent business events, and returns per-lead evidence rows. Use for inbound lead scoring, CRM enrichment scoring, MQL prioritization, and outbound contact prioritization. Triggers on 'score these leads', 'tier this list', 'rank inbound', 'prioritize my MQLs', 'which lead should I call first', 'data enrichment for inbound scoring'. Works in Claude Code, Codex, and other AI agents."
4---
5 
6# Score Leads
7 
8Gather verified person, account, and trigger evidence per lead so a downstream model can tier leads Hot / Warm / Cold against a stated persona and ICP. This skill collects the evidence and restates the rule set; it does NOT apply scoring math.
9 
10## Input
11 
12- Leads (required): list of prospect IDs, emails, LinkedIn URLs, or name+company rows. Mixed types allowed.
13- Buyer persona (required): target job titles or title keywords, seniority, and department.
14- ICP (required): country (or region-country), company size buckets, optional revenue buckets, optional industry (LinkedIn or NAICS, mutually exclusive), optional tech stack, optional company age.
15- Source label per lead (optional): e.g. demo_request, pricing_inquiry, free_trial, content_download, webinar_attended, cold_inbound. Passed through verbatim.
16- Tier thresholds (optional): Hot and Warm cutoffs on the composite the caller computes.
17- Trigger lookback (optional): default 90 days for recent business events.
18 
19## Workflow
20 
211. Lock the persona and ICP rule set. Restate persona (titles, seniority, department) and the ICP filter shape. Discover canonical values for every free-text dimension (industry, tech stack, job title, city) before applying any filter. Tighten persona matches by intersecting a job-title filter with a seniority filter: a title-only filter is loose and returns near-matches at the rim. Note the mutually exclusive choices (LinkedIn vs NAICS; country vs region-country). Echo persona and ICP in the output so scoring math is auditable.
222. Resolve each lead. Bucket every input row; never silently drop one. Known prospect IDs pass through. Email rows resolve by email: email is a unique identifier, so a no-match is a hard fail, NOT a fallback to name search (a typo'd email must not silently resolve to a different real person). LinkedIn URL rows resolve by URL. Name+company rows resolve by full name plus company name or domain: person matching returns only an id or null (no confidence score, no candidate list), so a name+company match at a 10k+ employee company is indistinguishable from a unique email match. Treat name+company matches as Verified-with-caveat by default. Free-text rows like "Jane Doe at Acme" parse to the name+company path. Persona-only rows (no name, "the CFO at Notion") must NOT use full_name="CFO" (silently returns nothing); instead match the business, then sample prospects at that account filtered by canonical job title and seniority, and surface the candidates as Verified (caveat) for the user to pick. Tag each row: Auto-resolved, Verified (caveat), Ambiguous (pause), or Failed (no match). Never reroute Failed emails into name search.
233. Enrich the person. Profile (full name, title, seniority, department, linkedin URL) plus contacts. Default email-only (cheaper); switch to email + phone only when phone is required (SDR dialer flows). Per-prospect post history is a current gap; if recent activity matters, pull the employer's recent posts as a substitute.
244. Resolve and enrich the lead's company. Match the business by domain or name, then enrich firmographics (headcount, revenue range, country, industry, size bucket, age, description). Add technographics when the ICP names a tech stack. Add funding posture when the ICP cares about stage.
255. Fetch recent triggers per account on the configured lookback (default 90 days). Relevant events: new funding rounds, leadership hires in the persona's department, hiring surges in the persona's department, office openings or relocations, product launches, new partnerships. For accounts where prospect-level moves matter (job change into the persona seat), also fetch prospect events. Tag each event with age in days. Event-attribution sanity check: ensure events tie to the matched business, not blended across parent / subsidiary entities.
266. Optional ICP corroboration. If the caller wants to know whether the lead's account looks like the broader ICP shape, size the ICP filter set once and attach the summary (total addressable count, size bucket distribution, top industries). Do not re-pull per lead.
277. Compose one evidence row per lead. Each row carries: input identifier, resolution status, person id, full name, title, mapped seniority (canonical), mapped department, email, phone, linkedin URL, company name, company domain, business id, headcount, revenue range, country, industry, size bucket, revenue bucket, tech stack hits (only those intersecting the ICP tech list), top 3 recent events (type, age in days, one-line summary), source label, caveat strings (Stale, Ambiguous, Failed, Missing phone, Email not found). Process in chunks of ~25 end-to-end so working context does not balloon.
288. State the scoring boundary explicitly. The output ships the per-lead evidence plus the rule set verbatim. Composite scoring and tier assignment (Hot / Warm / Cold) are the caller's job. Do not invent a composite score in this skill.
29 
30## Output Format
31 
32- Restated rules: persona (titles, seniority set, department set); ICP filter set (exact object with canonical-resolved values, plus the industry-taxonomy and country-vs-region choices); trigger lookback in days.
33- Resolution summary: one row per input with input, resolved name, person id, status. Status legend: Auto-resolved, Verified (caveat), Ambiguous, Failed.
34- Per-lead evidence rows: one row per lead with the columns from step 7.
35- ICP shape (optional, when corroboration ran): total addressable count, top size buckets, top industries.
36- Scoring rules handed to the caller: persona-match rule (title list, seniority set, department set), ICP-match rule (the filter object), source weights (or raw label pass-through), trigger weights (event-type weights and recency decay), tier thresholds (Hot and Warm cutoffs).
37- Caveats: Failed leads are not scoreable, list separately; stale records (>12 months) get a "downweight title-based fit" flag; Hot-candidate leads missing both phone and professional email get a "verify contact data before outreach" flag.
38 
39## Limitations
40 
41- Scoring math is downstream LLM work. This skill gathers evidence and restates the rule set; it does NOT produce a composite score or assign a tier.
42- Name+company resolution can return multiple plausible matches at large companies; those rows surface as Ambiguous, and the matching response carries no confidence signal to disambiguate.
43- Company size and revenue are bucketed, not exact counts; persona/ICP math must work against the bucket.
44- Industry taxonomy (LinkedIn vs NAICS) is mutually exclusive on a single ICP filter.
45- No built-in scoring engine, no contact data-quality sort, no native employee or revenue sort, no Inc/Fortune ranking signal, no metro taxonomy, no sub-department job-function filter.
46- Department is null for many cross-functional senior roles (Chief X Officer, President, Founder). Group these under "Unattributed".
47- The mapped seniority column should show the canonical value used for filtering.
48 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 197
Checked
Source
explorium-ai/gtm-skills ↗
Creator
explorium-ai · 17 listings
View creator

Similar skills

See all →
SkillAI Sales Team Orchestratorzubair-trabzada/ai-sales-team-claude · by zubair-trabzadaYou are a comprehensive AI sales intelligence and outreach system for Claude Code. You help founders, sales teams, agency owners, and…★ 1.4k GitHub starsSkillCold Email Automationgrowthenginenowoslawski/coldoutboundskills · by growthenginenowoslawskiAutonomous cold email campaign launcher. Takes one target company domain, scrapes their website, generates an ICP with Claude, pulls matching leads via Prospeo, enriches emails + company descriptions, personalizes each lead with parallel Claude Code Task sub-agents (A/B/C variants), and uploads as a live Smartlead campaign. Uses local JSON files for state (no database required). Use for automated daily campaign launches after you have an initial `client-profile.yaml` from /icp-onboarding. Triggers on "auto-research", "launch an automated campaign", "daily campaign", "run the research loop".★ 736 GitHub starsSkillABM Campaign Playbookexplorium-ai/gtm-skills · by explorium-aiABM campaign skill for Claude Code: run a full Account-Based Marketing campaign end-to-end — from ICP definition to live LinkedIn Ads. Builds targeted account lists with Vibe Prospecting, enriches and scores companies with real-time B2B data, generates personalized ad creatives with Claude Code and Figma, pushes matched audiences to LinkedIn Ads, and monitors campaigns daily at scale. The complete GTM skill for AI-driven account-based marketing in Claude Code, Codex, Hermes-Agent, and OpenClaw. No agency needed.★ 197 GitHub starsSkillDecision-Maker Shortlistexplorium-ai/gtm-skills · by explorium-aiContact data skill for Claude Code and Codex: build a ranked shortlist of decision-makers and contacts at a target company for outbound prospecting, deal acceleration, or renewal/expansion plays. Returns verified contact data including email, phone, LinkedIn profile, title, seniority, and department. Provide a company name or domain plus optional seniority focus or use case. Use for contact data enrichment, LinkedIn profile lookup, and building outbound contact lists. Works in Claude Code, Codex, Hermes-Agent, and OpenClaw.★ 197 GitHub starsSkillAccount Fit Scorerexplorium-ai/gtm-skills · by explorium-aiLead scoring and buying signals skill for Claude Code and Codex: rank a list of accounts by ICP fit, buying intent, real-time trigger events, and workforce momentum. Returns composite score (0-100), tier (A/B/C), and a 'why now' signal per account. Use for account-based selling, ABM list prioritization, territory planning, signal-based selling, and buyer-intent ranking. Triggers on 'score these accounts', 'rank by ICP fit and intent', 'prioritize this account list', 'which accounts have the strongest buying signals', 'ICP scoring', 'account prioritization'. Works in Claude Code, Codex, Hermes-Agent, OpenClaw, and Claude Cowork.★ 197 GitHub starsSkillApollo Hyper Orchestratorhyperfx-ai/marketing-skills · by hyperfx-aiRun end-to-end B2B cold-email outreach through the Hyper MCP — enrich prospects with Apollo, scrape per-prospect signals from company sites and LinkedIn, draft personalized emails using proven hook frameworks, send via Gmail with safe defaults, and route replies into labeled folders. Use when the user wants to write cold emails, run an outbound sequence, prospect a list, build a follow-up cadence, "reach out to leads," or asks why nobody is replying to their cold emails.★ 90 GitHub stars

More from explorium-ai

SkillABM Campaign Playbookexplorium-ai/gtm-skills · by explorium-aiABM campaign skill for Claude Code: run a full Account-Based Marketing campaign end-to-end — from ICP definition to live LinkedIn Ads. Builds targeted account lists with Vibe Prospecting, enriches and scores companies with real-time B2B data, generates personalized ad creatives with Claude Code and Figma, pushes matched audiences to LinkedIn Ads, and monitors campaigns daily at scale. The complete GTM skill for AI-driven account-based marketing in Claude Code, Codex, Hermes-Agent, and OpenClaw. No agency needed.★ 197 GitHub starsSkillDecision-Maker Shortlistexplorium-ai/gtm-skills · by explorium-aiContact data skill for Claude Code and Codex: build a ranked shortlist of decision-makers and contacts at a target company for outbound prospecting, deal acceleration, or renewal/expansion plays. Returns verified contact data including email, phone, LinkedIn profile, title, seniority, and department. Provide a company name or domain plus optional seniority focus or use case. Use for contact data enrichment, LinkedIn profile lookup, and building outbound contact lists. Works in Claude Code, Codex, Hermes-Agent, and OpenClaw.★ 197 GitHub starsSkillAccount Fit Scorerexplorium-ai/gtm-skills · by explorium-aiLead scoring and buying signals skill for Claude Code and Codex: rank a list of accounts by ICP fit, buying intent, real-time trigger events, and workforce momentum. Returns composite score (0-100), tier (A/B/C), and a 'why now' signal per account. Use for account-based selling, ABM list prioritization, territory planning, signal-based selling, and buyer-intent ranking. Triggers on 'score these accounts', 'rank by ICP fit and intent', 'prioritize this account list', 'which accounts have the strongest buying signals', 'ICP scoring', 'account prioritization'. Works in Claude Code, Codex, Hermes-Agent, OpenClaw, and Claude Cowork.★ 197 GitHub starsSkillCompany Intelligence Briefexplorium-ai/gtm-skills · by explorium-aiAccount research skill for Claude Code and Codex: generate a high-signal company intelligence brief including firmographics, technographics, funding history, hiring signals, business events, recent website and LinkedIn moves, and a peer cohort. Identify the account by business_id, company name, or domain. Use for pre-call research, QBR prep, competitive analysis, cold outbound targeting, and renewal risk assessment. The go-to account research skill for Claude Code, Codex, Hermes-Agent, and OpenClaw.★ 197 GitHub starsSkillB2B Data Cleanerexplorium-ai/gtm-skills · by explorium-aiData cleaning, entity matching, and deduplication skill for Claude Code and Codex: triage, standardize, and validate a CSV, Excel, or JSON list of B2B companies or contacts before enrichment. Normalizes company names and domains, validates emails and phone numbers, matches and deduplicates records, and tags invalid rows non-destructively. Run before enrichment or CRM import to avoid paying for noisy records. Use for CRM enrichment prep, company name and website matching, entity matching, and contact deduplication. Works in Claude Code, Codex, and n8n via MCP.★ 197 GitHub starsSkillVibe-Lemlist Outreachexplorium-ai/gtm-skills · by explorium-aiCold email skill for Claude Code and Codex: build a targeted B2B prospect list with Vibe Prospecting, enrich it with firmographics and verified work emails, write a personalized icebreaker and email per prospect from their real company data, and push every lead into a live Lemlist campaign with personalization variables pre-filled. Use for cold outbound, email personalization at scale, and Lemlist campaign setup. Triggers on 'cold email campaign', 'push leads to Lemlist', 'write personalized outbound emails', 'build a Lemlist sequence'. Works in Claude Code, Codex, Grok, and Claude Cowork.★ 197 GitHub stars