mcpField
L
lead-qualification

lead-qualification

github.com/gooseworks-ai营销与增长1.3k56 次安装4 天前更新
代码仓库

关于 lead-qualification

lead-qualification 是一项营销技能,用于定义线索标准,并以置信度和理由为线索列表评分。它支持收集、复用或调整资格提示词,还可选用 LinkedIn 资料增强和并行处理。

主要功能

  1. 01通过结构化问答制定标准
  2. 02复用和调整已保存的资格提示词
  3. 03接收 CSV、链接、文本列表和表格
  4. 04可选通过 Apify 增强 LinkedIn 资料
  5. 05先校准结果再并行评估
  6. 06将评分和理由导出为 CSV

适用场景

  1. 01为新的外联活动制定筛选标准
  2. 02按现有标准评估线索列表
  3. 03查看样例结果后调整标准
  4. 04在线索评估前增强 LinkedIn 资料

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gooseworks-ai/goose-skills --skill lead-qualification

安装后在 Claude Code 中输入/lead-qualification确认已加载。

附带文件scripts/enrich_leads.pyskill.meta.json

详细介绍

潜在客户筛选引擎

通过结构化信息收集流程,依据自定义标准筛选潜在客户;然后并行评估潜在客户名单,并提供置信度评级和推理依据。

三种运行模式

模式 1:完整信息收集 + 筛选

没有现成的筛选提示词。通过信息收集流程创建提示词并保存,然后筛选潜在客户。

触发条件: 用户未提供筛选提示词。

模式 2:复用提示词 + 筛选

用户提供现有的筛选提示词——跳过信息收集,直接开始评分。

触发条件: 用户附上或指定筛选提示词文件(例如之前保存在其工作目录下 qualification-prompts/ 中的文件),或在消息中粘贴筛选标准。如果 粘贴的标准不够明确,先将其整理为下方的结构,然后向用户确认。

此技能不附带现成的提示词:每个提示词都由用户提供,或由 Agent 通过信息收集流程编写。

模式 3:优化 / 校准

用户看过结果后,希望调整标准。更新已保存的提示词,然后重新运行。

触发条件: 用户表示想要“优化”“调整”“不对”,或针对筛选结果提供反馈。


阶段 1:信息收集(仅限模式 1)

目标是全面了解用户如何判定潜在客户符合或不符合条件。分批集中提问,让用户能够高效作答。

第 1 轮——核心问题(一次性全部提出)

将以下问题按编号列表呈现。告诉用户:“回答相关的问题即可,不相关的可以跳过。我会就需要澄清的内容继续提问。”

产品与营销活动背景:

  1. 用一句话介绍你的产品 / 服务。
  2. 它解决什么问题,面向哪些人?
  3. 具体的营销活动或拓展方向是什么?(例如:“针对刚完成 A 轮融资的公司”“瞄准正在从竞争对手 X 转型的团队”)

公司层面标准: 4. 目标公司的规模是多少?(例如:1-10、11-50、51-200、201-1000、1000+) 5. 哪些行业或垂直领域较为匹配? 6. 有哪些行业或公司类型需要明确排除? 7. 目标地域是哪些?还是面向全球? 8. 有哪些地域需要排除? 9. 公司发展阶段是否重要?(例如:种子轮、A 轮、B 轮及以上、上市) 10. 哪些营收范围或融资范围比较重要?

个人层面标准: 11. 理想买家的职位或角色是什么? 12. 哪些职位明确不符合条件? 13. 职级是否重要?(例如:必须达到总监级、VP 级或 C 级) 14. 他们应属于哪些部门?(例如:增长、营销、销售、工程) 15. 在当前公司的最低任职时间是多少?(例如:至少 6 个月,才有购买决策权) 16. 总工作年限是否重要?

行为与情境信号: 17. 技术栈信号会影响筛选结果吗?(例如:“使用 Salesforce” = 符合条件) 18. 公司近期的动态是否重要?(例如:大规模招聘、融资、产品发布) 19. 内容或发帖信号是否重要?(例如:“发布过 AI 相关内容” = 相关) 20. 还有哪些信号表明对方意向强烈或匹配度高?

一票否决项与强力筛选信号: 21. 哪些是你的硬性否决项——无论其他因素如何,只要出现就会立刻判定为“不符合条件”? 22. 哪些是你最强的筛选信号——一旦出现,几乎可以确定为“符合条件”?

第 2 轮——跟进问题

根据用户的回答,提出 5-10 个有针对性的跟进问题,以消除模糊之处。示例:

  • “你说的是中型市场——是指 50-500 名员工,还是 50-1000 名?”
  • “你提到了增长副总裁——‘增长负责人’也符合条件吗?还是必须是副总裁职称?”
  • “你没有提到地域——我应该按全球范围处理吗?”
  • “关于任职时间,你说最低要求是 6 个月。那入职 4 个月但在公司内部获得晋升的人呢?”
  • “你提到了 A 轮公司。营收相当但采用自筹资金的公司呢?”
第 3 轮 — 边界情况(可选,但建议)

列出 3-5 个假设的潜在客户资料,用于测试边界情况。询问:“您会将此人判定为合格吗?”

可构造的示例场景(根据用户的标准调整):

  • 某人的职位符合要求,但所在公司的规模略大或略小
  • 某人所在公司的规模符合要求,但职位处于边界
  • 某人各方面都符合要求,但任职时间较短
  • 某人的职位不完全匹配,但有强烈的意向信号
  • 某人所在的公司是竞争对手的客户

这一轮可以发现用户尚未明确说明的隐含标准。

生成并保存资格判定提示词

完成信息收集后,将所有答案整理成结构化的资格判定提示词。将其保存到用户的工作目录(或用户指定的位置),以便下次重复使用:

qualification-prompts/[campaign-name].md

保存的提示词必须遵循以下结构:

# 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.

简短示例(仅用于展示结构的虚构公司):

# 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 |

第 2 阶段:潜在客户资格判定

第 1 步 — 解析输入

接受以下任意输入格式:

  • CSV 文件路径 — 直接从文件系统读取(默认)
  • LinkedIn 个人资料 URL — 用户在消息中提供的一个或多个 URL
  • 内嵌列表 — 消息中列出的姓名/公司
  • Google Sheet URL — 如果用户提供 Google Sheet,请使用可用的任意 Google Sheets 工具读取
  • 任何其他来源 — 请用户导出为 CSV 或粘贴数据

根据用户提供的内容自动检测格式。

第 1.5 步 — 通过 Apify 批量补充资料

适用情况: 输入包含 linkedin_url 列(或提供了 LinkedIn URL)。 跳过情况: 没有 LinkedIn URL,或用户明确要求跳过资料补充。

在 LLM 资格判定之前,批量补充所有潜在客户的资料,获取结构化的个人资料数据。这比资格判定期间逐个搜索网页快得多,也便宜得多。

运行资料补充脚本:

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

在此技能的文件夹中运行脚本。设置了 GOOSEWORKS_API_KEY 时,脚本会通过 GooseWorks Apify 代理使用用户的 GooseWorks 额度;未设置时,才会将用户自己的 APIFY_API_TOKEN 用作备用。切勿向用户索要 Apify 令牌。

这是付费运行,费用会在运行结束时按实际用量计费;运行前无法报价。先运行 --dry-run:它会统计实际运行将抓取的个人资料数量(扣除缓存后),且不会调用任何服务。告知用户该数量,并说明费用将从其 GooseWorks 额度中扣除,只有获得用户同意后才运行。

此脚本的工作内容:

  1. 从输入 CSV 中读取所有 LinkedIn URL
  2. 检查本地缓存(默认有效期为 24 小时)——跳过已补充资料的个人资料
  3. 将未缓存的 URL 分批发送给 Apify,每批 50 个
  4. 返回补充资料后的 CSV,其中包含:enriched_title、enriched_company、enriched_industry、enriched_location、enriched_connections、enriched_education、enriched_experience_years、enriched_headline、enriched_about、enrichment_status
  5. 实际运行时会扣除 GooseWorks 额度;缓存的个人资料不产生费用

资料补充完成后,后续步骤 2-4 请使用补充资料后的 CSV 作为输入。 补充后的数据可让 LLM 资格判定步骤直接使用结构化字段,而无需搜索网页,大幅提升速度和一致性。

如果部分个人资料补充失败: 输出中的相应条目会标记为 enrichment_status: failed。LLM 资格判定步骤应仅对这些潜在客户回退到网页搜索。

步骤 2 — 校准批次

处理完整列表前,先运行前 5–10 条潜在客户记录,并以表格形式向用户展示结果。

如果已运行批量数据补充(步骤 1.5),请将补充后的列(enriched_title、enriched_company 等)作为主要数据源。仅在潜在客户记录的 enrichment_status 为 failed 或 no_url 时,才使用网页搜索作为后备方案。

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

询问:“这些结果看起来正确吗?处理完整列表前,需要调整任何标准吗?”

如果用户指出问题:

  1. 讨论需要修改的内容
  2. 更新已保存的资格判定提示词文件
  3. 重新运行校准批次
  4. 再次确认后再继续

重复以上步骤,直到用户批准。

步骤 3 — 完整运行(并行处理)

校准获批后,使用并行子 Agent 处理所有剩余的潜在客户记录。必须并行处理,不得按顺序逐条处理。

并行处理协议(强制):

  1. 计算批次数:

    • 剩余潜在客户记录总数 / 15 = 批次数(向上取整)
    • 目标:每批约 15 条记录
    • 最少:2 批(即使列表较短,也要分成 2 批,以验证并行处理是否有效)
    • 最多:10 个并发批次(避免上下文负担过重)
  2. 准备批次输入: 为每个批次创建一份独立完整的上下文包:

    • 完整的资格判定提示词(已保存或用户提供的提示词)
    • 该批次的潜在客户记录行(包括所有列,以及步骤 1.5 中补充的数据)
    • 输出格式说明:姓名、Qualified(Yes/No)、Confidence(High/Medium/Low)、Reasoning(2–3 句话)
    • 说明:“对于 enrichment_status=failed 或 no_url 的潜在客户记录,请快速进行网页搜索。每条记录的搜索时间不得超过 30 秒。”
  3. 启动并行 Task Agent: 使用 Task 工具,在单条消息中通过多个工具调用同时启动所有批次:

    Task: "Qualify leads batch 1/N"
    Context: [qualification prompt] + [batch 1 lead rows]
    
    Task: "Qualify leads batch 2/N"
    Context: [qualification prompt] + [batch 2 lead rows]
    
    ... (launch ALL at once — do NOT wait for batch 1 before launching batch 2)
    
  4. 收集并合并结果:

    • 等待所有 Task Agent 完成
    • 将所有批次的结果合并为一个列表
    • 保留输入中的原始行顺序
    • 如果任何批次失败,重试该批次一次。如果再次失败,将这些潜在客户记录标记为 "qualification_failed",然后继续处理。
  5. 验证完整性:

    • 计数:符合资格 + 不符合资格 + 失败的记录数 = 输入潜在客户记录总数
    • 如果有记录缺失,请找出并重新处理

单条记录处理流程(在每个批次 Agent 内):

  1. 读取输入行中的所有可用数据(包括步骤 1.5 中补充的列)
  2. 如果存在补充数据(enrichment_status: success 或 cached):使用 enriched_title、enriched_company 等字段
  3. 如果缺少补充数据(enrichment_status: failed 或 no_url):快速进行网页搜索(最长 30 秒)
  4. 应用资格判定提示词:
    • 首先检查硬性淘汰条件——如果符合任何一项,立即判定为不符合资格
    • 检查硬性资格条件——如果符合任何一项,强烈倾向于判定为符合资格
    • 评估所有标准
    • 确定:Qualified(Yes/No)、Confidence(High/Medium/Low)
    • 写出 2–3 句话的判定理由
  5. 返回结果
步骤 4 — 输出结果

默认格式:CSV

  1. 写入一个 CSV,包含所有原始列以及以下三个新列:
    • Qualified — Yes / No
    • Confidence — High / Medium / Low
    • Reasoning — 2–3 句话的说明
  2. 保存到当前工作目录或用户指定的位置
  3. 告知用户文件路径

如果用户偏好 Google Sheets 或其他目标位置:

  • 如果有可用工具,则写入 Google Sheets
  • 如果用户要求,则写入 Notion
  • 按用户要求导出为任意格式
步骤 5 — 汇总

输出完成后,提供汇总:

## Qualification Results: [Campaign Name]

**Total leads processed:** X
**Qualified:** X (Y%)
**Disqualified:** X (Y%)

**Confidence breakdown:**
- High: X leads
- Medium: X leads
- Low: X leads (may need manual review)

**Top disqualification reasons:**
1. [reason] — X leads
2. [reason] — X leads
3. [reason] — X leads

**Output:** [Google Sheet link or CSV path]
**Qualification prompt saved to:** qualification-prompts/[campaign-name].md

所需工具

资格评估 Agent 应能够使用:

  • Apify LinkedIn Enrichment — 使用 scripts/enrich_leads.py 在资格评估前批量丰富个人资料
    • 使用 harvestapi~linkedin-profile-scraper Apify Actor(无需 Cookie)
    • 通过 GooseWorks Apify 代理使用 GooseWorks 积分运行,并使用 GOOSEWORKS_API_KEY;仅在没有该密钥时,才使用用户自己的 APIFY_API_TOKEN 作为备用
    • 先使用 --dry-run 运行以统计个人资料数量,然后在付费运行前征得用户同意
  • Web Search — 当丰富数据稀少或缺失时,用于研究潜在客户
  • Fetch (web page) — 用于获取 LinkedIn 个人资料、公司页面等
  • Read/Write — 用于 CSV 输入/输出和保存资格评估提示词
  • Glob/Grep — 用于查找现有资格评估提示词文件
  • 可选:Google Sheets 工具 — 如果用户希望从 Google Sheets 读取数据或写入数据

使用示例

从 CSV 完整导入并进行资格评估:
Qualify leads for our outbound campaign. Here's the lead list: leads.csv

→ Agent 检测到没有已保存的提示词,开始收集信息、构建提示词,然后进行资格评估。

复用现有提示词:
Qualify these leads using @qualification-prompts/seed-founders.md
— lead list: leads.csv

→ Agent 跳过信息收集,直接进行校准和资格评估。

直接评估 LinkedIn 个人资料:
Using the seed-founders qualification prompt, qualify these people:
- https://linkedin.com/in/person1
- https://linkedin.com/in/person2
- https://linkedin.com/in/person3
查看结果后进行优化:
Those results look off — also disqualify anyone at a consulting firm, and lower the
tenure minimum to 3 months for Director+ titles.

→ Agent 更新已保存的提示词并重新运行。

评论

支持 Markdown