SkillAgentSearch skills...

lead-qualification

Lead qualification engine with conversational intake. Asks structured questions to understand your qualification criteria, generates a reusable qualification prompt, then batch-enriches leads via Apify LinkedIn scraping and scores them with parallel processing.

Install / Use

npx skills add gooseworks-ai/goose-skills --skill lead-qualification

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

93/100

Supported Platforms

Universal

Our assessment of lead-qualification

lead-qualification scores 93/100 on our quality scale, 128th of 594 Data & Analytics skills we index (top 22%).

Its SKILL.md is 16 KB long, well organised into 39 sections with 10 code examples: a thorough specification that gives an agent plenty to work with.

With 1,222 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
13/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 33 days ago, so lead-qualification is actively maintained.
  • Our last check on 2026-10-26 found the source still online.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-10-26. Automated pattern scan on 2026-10-26. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

lead-qualification compared with similar skills

All 4 of these similar skills score higher than lead-qualification; compare them before choosing.

SkillScoreStarsUpdatedFormat
lead-qualification (this skill)by gooseworks-ai931.2k33d agoSKILL.md
Agent-Reachby Panniantong100102.9k1d agoCLAUDE.md
headroomby headroomlabs-ai10077.9k1d agoCLAUDE.md
Scraplingby D4Vinci10089.8ktodayMCP Server
crawl4aiby unclecode10086.3ktodayMCP Server

Frequently asked questions

How do I install lead-qualification?
Run npx skills add gooseworks-ai/goose-skills --skill lead-qualification. The install tabs above show the steps for each supported agent.
Which AI agents does lead-qualification work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is lead-qualification safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is lead-qualification still maintained?
The repository was last updated 33 days ago, so lead-qualification is actively maintained.

name: lead-qualification description: > Lead qualification engine with conversational intake. Asks structured questions to understand your qualification criteria, generates a reusable qualification prompt, then batch-enriches leads via Apify LinkedIn scraping and scores them with parallel processing. Outputs qualified/disqualified verdicts with confidence scores and reasoning to CSV or whatever output format the user prefers. Supports calibration mode for prompt refinement.

Lead Qualification Engine

Qualify leads against custom criteria through a structured intake process, then score lead lists in parallel with confidence ratings and reasoning.

Three Modes of Operation

Mode 1: Full Intake + Qualify

No existing qualification prompt. Run intake to build one, save it, then qualify leads.

Trigger: User provides no qualification prompt.

Mode 2: Reuse Prompt + Qualify

User supplies an existing qualification prompt — skip intake, go straight to scoring.

Trigger: User attaches or names a qualification prompt file (for example one saved earlier in qualification-prompts/ in their working directory), or pastes the criteria in the message. If the pasted criteria are loose, write them into the structure below first and confirm it with the user.

This skill ships no ready-made prompts: every prompt comes from the user, or the agent writes it through intake.

Mode 3: Refine / Calibrate

User has seen results and wants to adjust criteria. Update the saved prompt, re-run.

Trigger: User says something like "refine", "adjust", "that's wrong", or provides feedback on qualification results.


Phase 1: Intake (Mode 1 Only)

The goal is to build a complete picture of who the user considers qualified vs disqualified. Present questions in bulk rounds so the user can answer efficiently.

Round 1 — Core Questions (Present All at Once)

Present these questions as a numbered list. Tell the user: "Answer what's relevant, skip what's not. I'll follow up on anything I need to clarify."

Product & Campaign Context:

  1. What's your product/service in one sentence?
  2. What problem does it solve and for whom?
  3. What's the specific campaign or outreach angle? (e.g., "targeting companies that just raised Series A", "going after teams switching from Competitor X")

Company-Level Criteria: 4. What company sizes are you targeting? (e.g., 1-10, 11-50, 51-200, 201-1000, 1000+) 5. What industries or verticals are a good fit? 6. Any industries or company types to explicitly EXCLUDE? 7. Geographic targets? Or is this global? 8. Geographic exclusions? 9. Does company stage matter? (e.g., seed, Series A, Series B+, public) 10. Any revenue range or funding range that matters?

Person-Level Criteria: 11. What job titles or roles are your ideal buyers? 12. What titles are explicitly disqualified? 13. Does seniority level matter? (e.g., must be Director+, VP+, C-level) 14. What departments should they be in? (e.g., growth, marketing, sales, engineering) 15. Minimum tenure at current company? (e.g., 6+ months to have buying power) 16. Does total years of experience matter?

Behavioral & Situational Signals: 17. Are there tech stack signals that qualify or disqualify? (e.g., "uses Salesforce" = good fit) 18. Does recent company activity matter? (e.g., hiring spree, funding round, product launch) 19. Are there content/posting signals? (e.g., "posted about AI" = relevant) 20. Any other signals that indicate high intent or good fit?

Dealbreakers & Instant Qualifiers: 21. What are your HARD DISQUALIFIERS — things that instantly make someone a "no" regardless of other factors? 22. What are your STRONGEST QUALIFIERS — things that make someone an almost certain "yes"?

Round 2 — Follow-Up Probes

Based on the user's answers, ask 5-10 targeted follow-ups to resolve ambiguity. Examples:

  • "You said mid-market — does that mean 50-500 or 50-1000 employees?"
  • "You mentioned VP of Growth — would a 'Head of Growth' also qualify, or only VP title?"
  • "You didn't mention geography — should I treat this as global?"
  • "For tenure, you said 6 months minimum. What about someone who's 4 months in but was promoted internally?"
  • "You mentioned Series A companies. What about bootstrapped companies with equivalent revenue?"

Round 3 — Edge Case Scenarios (Optional but Recommended)

Present 3-5 hypothetical lead profiles that test boundary cases. Ask "Would you qualify this person?"

Example scenarios to construct (adapt based on the user's criteria):

  • Someone who fits the title but is at a company that's slightly too large/small
  • Someone at the right company but with a borderline title
  • Someone who matches on everything but has low tenure
  • Someone who doesn't match the title exactly but has high intent signals
  • Someone at a competitor's customer

This round catches implicit criteria the user hasn't articulated.

Generate & Save Qualification Prompt

After intake is complete, synthesize all answers into a structured qualification prompt. Save it in the user's working directory (or wherever they prefer), so it can be reused next time:

qualification-prompts/[campaign-name].md

The saved prompt MUST follow this structure:

# Qualification Prompt: [Campaign Name]

Generated: [date]

## Campaign Context
- **Product:** [one-liner]
- **Campaign Angle:** [specific angle]
- **Problem Solved:** [what and for whom]

## Hard Disqualifiers (Instant No)
- [list each with explanation]

## Hard Qualifiers (Instant Yes)
- [list each with explanation]

## Company Criteria
| Criterion | Qualified | Disqualified | Notes |
|-----------|-----------|--------------|-------|
| Size | [range] | [range] | |
| Industry | [list] | [list] | |
| Geography | [list] | [list] | |
| Stage | [list] | [list] | |
| Funding/Revenue | [range] | [range] | |

## Person Criteria
| Criterion | Qualified | Disqualified | Notes |
|-----------|-----------|--------------|-------|
| Titles | [list] | [list] | |
| Seniority | [level+] | [below level] | |
| Department | [list] | [list] | |
| Tenure | [minimum] | [below minimum] | |
| Experience | [range] | [range] | |

## Behavioral & Situational Signals
- [list signals that boost qualification]
- [list signals that reduce qualification]

## Confidence Rules
- **High Confidence:** Enough data available for company size, title, tenure, and at least one signal.
- **Medium Confidence:** Missing one or two non-critical data points but core criteria are clear.
- **Low Confidence:** Missing critical data points (e.g., no company size, unclear title). Still make a yes/no call but flag it.

## Edge Case Guidance
- [specific guidance derived from Round 3 scenarios]
- [any nuanced rules from the intake conversation]

## Qualification Reasoning Instructions
When evaluating a lead, structure your reasoning as:
1. Check hard disqualifiers first — if any match, immediately disqualify.
2. Check hard qualifiers — if any match, lean strongly toward qualifying.
3. Evaluate company criteria against thresholds.
4. Evaluate person criteria against thresholds.
5. Factor in behavioral/situational signals as tiebreakers.
6. Assign confidence based on data completeness.
7. Write 2-3 sentence reasoning summarizing the decision.

A short example (fictional company, for shape only):

# Qualification Prompt: Acme Payroll — Seed-Stage Founders

## Campaign Context
- **Product:** Payroll software for small startups
- **Campaign Angle:** Founders who just raised a seed round and are making their first hires

## Hard Disqualifiers (Instant No)
- Agencies and consultancies (they resell, they don't buy)
- Companies with more than 200 employees

## Hard Qualifiers (Instant Yes)
- Founder or CEO at a US startup that raised a seed round in the last 6 months

## Person Criteria
| Criterion | Qualified | Disqualified | Notes |
|-----------|-----------|--------------|-------|
| Titles | Founder, CEO, COO, Head of People | Engineer (IC), Intern | A founder qualifies in any department |

Phase 2: Lead Qualification

Step 1 — Parse Input

Accept any of these input formats:

  • CSV file path — Read directly from filesystem (default)
  • LinkedIn profile URLs — One or more URLs provided inline
  • Inline list — Names/companies listed in the message
  • Google Sheet URL — If the user provides a Google Sheet, use whatever Google Sheets tool is available to read it
  • Any other source — Ask the user to export as CSV or paste the data

Detect the format automatically based on what the user provides.

Step 1.5 — Batch Enrichment via Apify

When: The input contains a linkedin_url column (or LinkedIn URLs are available). Skip when: No LinkedIn URLs are present, or the user explicitly says to skip enrichment.

Before LLM qualification, batch-enrich all leads to gather structured profile data. This is MUCH faster and cheaper than per-lead web searches during qualification.

Run the enrichment script:

python3 scripts/enrich_leads.py INPUT_CSV \
  --output ENRICHED_CSV \
  --cache-hours 24

Run it from this skill's folder. It runs on the user's GooseWorks credits through the GooseWorks Apify proxy when GOOSEWORKS_API_KEY is set; the user's own APIFY_API_TOKEN is only a fallback when it is not. Never ask the user for an Apify token.

This is a paid run, billed for the actual run when it ends; there is no price quote before it. Run --dry-run first: it counts the profiles a real run would scrape (after the cache) without calling anything. Tell the user that count and that it is paid from their GooseWorks credits, and run it only after their yes.

What this does:

  1. Reads all LinkedIn URLs from the input CSV
  2. Checks local cache (24h default) — skips profiles already enriched
  3. Sends uncached URLs to Apify in batches of 50
  4. Returns enriched CSV with: enriched_title, enriched_company, enriched_industry, enriched_location, enriched_connections, enriched_education, enriched_experience_years, enriched_headline, enriched_about, enrichment_status
  5. Charges GooseWorks credits for the actual run; cached profiles cost nothing

After enrichment, use the enriched CSV as input for Steps 2-4. The enriched data lets the LLM qualification step work from structured fields instead of doing web searches, dramatically improving speed and consistency.

If enrichment fails for some profiles: They'll have enrichment_status: failed in the output. The LLM qualification step should fall back to web search for those leads only.

Step 2 — Calibration Batch

Before processing the full list, run the first 5-10 leads and present results to the user in a table.

If batch enrichment was run (Step 1.5), use the enriched columns (enriched_title, enriched_company, etc.) as the primary data source. Only fall back to web search for leads where enrichment_status is failed or no_url.

| # | Name | Title | Company | Qualified | Confidence | Reasoning |
|---|------|-------|---------|-----------|------------|-----------|
| 1 | ... | ... | ... | Yes | High | ... |
| 2 | ... | ... | ... | No | Medium | ... |
| ... |

Ask: "Do these look right? Should I adjust any criteria before processing the full list?"

If the user flags issues:

  1. Discuss what needs to change
  2. Update the saved qualification prompt file
  3. Re-run the calibration batch
  4. Confirm again before proceeding

Repeat until the user approves.

Step 3 — Full Run (Parallelized)

Once calibration is approved, process ALL remaining leads using parallel subagents. You MUST parallelize — do NOT process leads sequentially.

Parallelization protocol (mandatory):

  1. Calculate batch count:
    • Total remaining leads / 15 = number of batches (round up)
    • Target: ~15 leads per batch
    • Minimum: 2 batches (even for small lists, to validate parallelism works)
    • Maximum: 10 concurrent batches (to avoid o

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars1.2k
CategoryData
Updated1mo ago
Forks208

Languages

Python

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions