Agent skill
lead-qualifier
Multi-dimensional lead qualification scoring.
Filed under Prospecting and list building.
From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11
What it does when it runs
Multi-dimensional lead qualification scoring. Evaluates leads against BANT criteria, firmographic fit, behavioral signals, and intent indicators. Outputs qualified/disqualified verdict with detailed reasoning.
Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- network
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/composites/lead-qualifier" mkdir -p ~/.claude/skills/lead-qualifier cp -R "/tmp/b2b-gtm-skills/skills/composites/lead-qualifier/." ~/.claude/skills/lead-qualifier/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/composites/lead-qualifier/SKILL.md, which is licensed MIT (repository). 1,759 words, 26 headings.
Lead Qualifier
Performs deep, multi-dimensional qualification on a single lead or batch of leads. Goes beyond simple lead scoring by evaluating across BANT (Budget, Authority, Need, Timeline), firmographic fit against ICP, behavioral engagement signals, and intent indicators. Outputs a clear qualified/disqualified verdict with detailed reasoning and recommended next action.
Prerequisites
agency.config.jsonpopulated (ICP, services, pricing context, CRM config)- Lead data: at minimum, company name and contact name
- WebSearch tool available for enrichment during qualification
- Optional: CRM data for behavioral signal analysis
- Optional:
lead-scorercapability output as input
Capabilities Used
company-researcher-- firmographic data for qualificationperson-researcher-- decision-maker validationlead-scorer-- initial lead score as input signalcrm-writer-- pull engagement history and update qualification statusdecision-maker-finder-- verify authority dimension
Phase 0: Intake
Read agency.config.json:
icp.segments[]-- ideal customer profile criteriaservices[]-- what you sell (for need mapping)pricing-- minimum engagement size, retainer ranges (for budget qualification)crm.tabs-- locate lead dataqualification_rules-- custom rules if defined in config
Accept parameters:
lead-- (required) lead object or lead name to look up in CRMmode--single|batch. Default:singleleads-- (required if mode =batch) array of lead objectsauto_route-- boolean, automatically triggerlead-routerafter qualification. Default:falsedepth--quick|full. Default:full
Lead object structure:
{
"contact_name": "Priya Mehta",
"company_name": "FreshSkin Co",
"email": "[email protected]",
"title": "Founder",
"source": "inbound_form",
"notes": "Interested in Shopify store revamp"
}
Phase 1: BANT Assessment
Budget (Weight: 25%)
Evaluate ability and willingness to pay:
Direct signals (from form data, emails, conversations):
- Mentioned budget range
- Asked about pricing (positive signal -- they're evaluating)
- Mentioned "cost-effective" or "affordable" (may signal tight budget)
- Mentioned specific investment amount
Indirect signals (from research):
- Company revenue/funding (proxy for budget capacity)
- Current spending on similar services (if visible)
- Number of employees (proxy for operational budget)
- Premium vs budget positioning of their brand
Scoring:
Budget Score:
5 = Budget confirmed, aligns with services pricing
4 = Strong budget indicators (funded, premium brand, asked about pricing)
3 = Moderate indicators (mid-size company, no budget mentioned)
2 = Weak indicators (small company, mentioned budget constraints)
1 = Disqualifying (explicitly stated budget far below minimum)
0 = No data available
Authority (Weight: 25%)
Evaluate decision-making power:
Title analysis:
- C-suite (CEO, CMO, CTO): Score 5
- VP/Director level: Score 4
- Head/Manager level: Score 3
- Coordinator/Specialist: Score 2
- Unknown/Intern: Score 1
Decision-maker validation:
- Run
decision-maker-finderif title suggests non-decision-maker - Check if they mentioned "I need to check with..." (lower authority)
- Check if they said "I'm the one who decides..." (higher authority)
- Company size context: at a 10-person startup, a "Marketing Manager" may be the sole decision-maker
Scoring:
Authority Score:
5 = Confirmed decision-maker, signs contracts
4 = Strong authority (C-suite, founder, sole ecomm person)
3 = Influencer with access to decision-maker
2 = Influencer without confirmed path to decision-maker
1 = No authority, no path identified
0 = No data available
Need (Weight: 30%)
Evaluate alignment between their problems and your services:
Explicit need signals:
- Mentioned specific pain points matching
services[] - Requested a specific service by name
- Described a project scope
- Referenced competitors doing something they want
Implicit need signals:
- Website quality issues visible on their store
- Outdated design or poor mobile experience
- Low conversion signals (poor product pages, no trust elements)
- Missing features competitors have
- Growing traffic but flat revenue (CRO need)
- New product launches with basic pages (catalog need)
Service mapping:
For each detected need, map to a specific service from services[]:
Detected need -> Service match -> Fit strength
"Store looks outdated" -> Shopify Store Development -> STRONG
"Want more traffic" -> Performance Marketing -> STRONG
"Conversion is low" -> CRO -> STRONG
"Need better photos" -> Catalog Management -> MODERATE
Scoring:
Need Score:
5 = Explicit, urgent need perfectly matching core services
4 = Clear need matching services, moderate urgency
3 = Need exists but vague, or matches secondary services
2 = Peripheral need, weak match to services
1 = No apparent need for offered services
0 = No data available
Timeline (Weight: 20%)
Evaluate urgency and readiness to start:
Urgency indicators:
- Mentioned specific deadline ("need this before Diwali sale")
- Mentioned event-driven timeline ("launching new line in Q2")
- Mentioned competitive pressure ("competitor just relaunched")
- Mentioned internal pressure ("board wants ecomm growth this quarter")
Readiness indicators:
- Already evaluated other agencies (deep in buying process)
- Has a brief or scope document ready
- Mentioned budget is approved
- Asked about start dates and timelines
Anti-urgency indicators:
- "Just exploring for now"
- "Maybe next quarter"
- "No rush"
- "We're in early stages of thinking about this"
Scoring:
Timeline Score:
5 = Immediate need, ready to start within 2 weeks
4 = Near-term, wants to start within 1-2 months
3 = Medium-term, planning for next quarter
2 = Long-term, 6+ months out
1 = No timeline, "just exploring"
0 = No data available
Phase 2: Firmographic Qualification
Compare the lead's company against ICP segments:
Segment Match
For each icp.segments[] entry, evaluate:
- Industry match: Does their vertical match?
- Company size match: Within the segment's range?
- Geography match: Correct market?
- Revenue/stage match: Post-PMF? Mid-market? Early-stage?
- Platform match: On Shopify or moving to Shopify?
Firmographic Score
Firmographic Score:
5 = Perfect ICP match (right industry, size, geo, stage, platform)
4 = Strong match (3-4 criteria match)
3 = Partial match (2-3 criteria match)
2 = Weak match (1-2 criteria match)
1 = No match but adjacent (could become ICP with growth)
0 = Anti-ICP (wrong industry, too small/large, wrong platform)
Deal Breakers
Check for automatic disqualifiers:
- Company in a prohibited industry
- Company too small (below minimum engagement size)
- Company on a platform you don't serve with no migration interest
- Geographic restrictions (if applicable)
- Direct competitor of an existing client (conflict of interest)
Phase 3: Behavioral Qualification
Pull engagement data from CRM (if available):
Engagement Signals
- Email opens and clicks (frequency, recency)
- Website visits (pages viewed, time on site)
- Content downloads (guides, templates)
- Webinar attendance
- Social media engagement (liked, commented, shared)
- Form submissions (which forms, how detailed)
- Meeting requests or demo bookings
Engagement Score
Engagement Score:
5 = High engagement (multiple touchpoints, recent, deep)
4 = Good engagement (responded to outreach, visited key pages)
3 = Moderate engagement (opened emails, some website visits)
2 = Low engagement (minimal interaction)
1 = No engagement (cold lead, no response to outreach)
0 = No data available
Phase 4: Intent Signal Analysis
Look for buying intent signals:
High-Intent Signals (score 3 each)
- Searched for "[your service] agency" or similar
- Visited pricing page
- Requested a proposal or audit
- Asked about contracts or terms
- Compared you to competitors by name
- Mentioned urgency or deadline
Medium-Intent Signals (score 2 each)
- Downloaded a case study
- Attended a webinar
- Engaged with multiple content pieces
- Followed on LinkedIn
- Visited portfolio/case study page
Low-Intent Signals (score 1 each)
- Subscribed to newsletter
- Single blog post visit
- Social media follow only
- Opened a cold email but no reply
Intent Score
Intent Score: sum(signals) normalized to 1-5 scale
5 = Strong buying intent (4+ high-intent signals)
4 = Good intent (2-3 high-intent signals)
3 = Moderate intent (medium signals present)
2 = Weak intent (low signals only)
1 = No intent signals detected
Phase 5: Composite Qualification
Calculate the composite qualification score:
composite_score = (
budget_score * 0.25 +
authority_score * 0.25 +
need_score * 0.30 +
timeline_score * 0.20
)
firmographic_modifier:
5 = +0.5
4 = +0.25
3 = 0
2 = -0.25
1 = -0.5
0 = DISQUALIFY (automatic)
behavioral_modifier:
5 = +0.3
4 = +0.15
3 = 0
2 = -0.1
1 = -0.2
intent_modifier:
5 = +0.3
4 = +0.15
3 = 0
2 = -0.1
1 = -0.2
final_score = composite_score + firmographic_modifier + behavioral_modifier + intent_modifier
Qualification Verdict
QUALIFIED (score >= 3.5):
- MQL (Marketing Qualified Lead): score 3.5-4.0
- SQL (Sales Qualified Lead): score 4.0-4.5
- HOT (Ready to close): score 4.5+
DISQUALIFIED (score < 3.5 or deal breaker triggered):
- NURTURE: score 2.5-3.49 (not ready, but could be)
- UNQUALIFIED: score < 2.5 (poor fit)
- DEAL_BREAKER: automatic disqualifier triggered
Phase 6: Output
Return structured JSON:
{
"lead": {
"contact_name": "Priya Mehta",
"company_name": "FreshSkin Co",
"title": "Founder",
"source": "inbound_form"
},
"qualification": {
"verdict": "SQL",
"final_score": 4.2,
"confidence": "HIGH",
"reasoning": "Strong ICP fit (D2C skincare, post-PMF), founder-level authority, explicit need for store revamp, Q2 timeline mentioned. Budget unconfirmed but funding round suggests capacity."
},
"bant": {
"budget": {"score": 3, "notes": "No explicit budget mentioned. Series A funded, premium pricing suggests healthy margins."},
"authority": {"score": 5, "notes": "Founder and sole decision-maker."},
"need": {"score": 5, "notes": "Explicitly requested Shopify store revamp. Current store has poor mobile experience and outdated design."},
"timeline": {"score": 4, "notes": "Mentioned wanting to launch before Q2 seasonal push."}
},
"firmographic": {
"score": 4,
"icp_segment": "Post-PMF D2C India",
"match_details": {"industry": true, "size": true, "geo": true, "stage": true, "platform": true}
},
"behavioral": {
"score": 4,
"signals": ["Opened 3/3 emails", "Visited case study page twice", "Downloaded CRO guide"]
},
"intent": {
"score": 4,
"signals": ["Requested audit", "Visited pricing page", "Asked about timelines"]
},
"deal_breakers": [],
"recommended_action": {
"next_step": "Schedule discovery call with founder",
"assigned_to": "founder_direct",
"urgency": "This week",
"talking_points": ["Reference their mobile experience issues", "Share skincare D2C case study if available"]
},
"generated_at": "2026-03-07T10:00:00Z"
}
Phase 7: Review and Routing
Present qualification results.
If auto_route = true, trigger lead-router with the qualification output.
APPROVAL GATE: "Lead qualified as [verdict]. Route to [assignment]?"
Update CRM via crm-writer:
- Set qualification status
- Set lead score
- Add qualification notes
- Set next action and assigned owner
Example Usage
Trigger phrases:
- "Qualify this lead: [name] at [company]"
- "Is [prospect] a good fit for us?"
- "Run BANT qualification on the new inbound leads"
- "Score and qualify [lead]"
- "Should we pursue [company]? Qualify them."
- "Batch qualify this week's inbound leads"
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- no-lead-left-behind-lead-treatment-audit by zapier · 334
- lead-magnets by coreyhaines31 · 46,928
- lead-dossier by ericosiu · 3,483
- lead-magnet by OpenClaudia · 677
- lead-magnet-brainstorm by growthenginenowoslawski · 668
- daily-lead-steward by zapier · 334
- find-lead-account-owner by zapier · 334
- inbound-lead-audit-cx-map by zapier · 334
Need help setting it up?
This page tells you what lead-qualifier does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.