关于 callable-lead-count
面向 HubSpot 的线索盘点 Skill,可筛选可拨打联系人、按等级分类,并报告拨号库存天数和预警。适用于每日拓客盘点及晨间简报准备。
主要功能
- 01查找有电话号码的联系人
- 02筛除排除项和抑制联系人
- 03划分 ATL、GRAY、BTL 和 NEVER 等级
- 04计算拨号库存天数
- 05标记库存不足和待审核项
- 06生成摘要和联系人表
适用场景
- 01检查每日可拨打线索库存
- 02找出优先拨打的 ATL 联系人
- 03在联系人数量低于阈值时发出预警
- 04向晨间简报提供库存数据
MCP 相关
该 Skill 使用 HubSpot MCP 工具 `search_crm_objects` 查询具有电话号码的联系人。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scientiacapital/ skills --skill callable-lead-count安装后在 Claude Code 中输入/callable-lead-count确认已加载。
附带文件config.json
详细介绍
可拨打潜在客户数量技能
在 HubSpot 中生成每日可拨打潜在客户(有电话号码的联系人)库存。应用黄金规则筛选。按 ATL/BTL 层级分类。计算 ATL 储备天数指标(按每天拨打 15 通的目标计算 ATL 拨打天数)。如果每日库存低于 50,或 ATL 库存低于 15,则发出提醒。支持晨间简报和拨打名单优先级设置。<quick_start>
**触发条件:**美国东部时间周一至周五上午 7:25(每日,在上午 7:30 的晨间简报之前)
手动触发:“显示可拨打潜在客户”或“检查潜在客户库存”
**依赖项:**需要访问 HubSpot 门户 21530819
**输出:**按层级统计的可拨打潜在客户数量、ATL 储备天数、健康状况提醒
</quick_start>
<success_criteria>
- 查询 HubSpot,查找 phone != null 的联系人
- 应用黄金规则(排除客户、渠道合作伙伴、设备所有者、产品页面互动者)
- 根据 CLAUDE.md 中的决策者规则,将每位联系人分类为 ATL/BTL 层级
- 统计总数:ATL、GRAY、BTL、NEVER(供参考)
- 计算 ATL 储备天数 = ATL 数量 ÷ 每天拨打 15 通 = X 天库存
- 计算总储备天数 = 可拨打潜在客户总数 ÷ 每天拨打 50 通 = X 天
- 如果 ATL < 15,则发出提醒(⚠️ 警告)
- 如果总数 < 50,则发出提醒(🚨 严重)
- 如果 NEVER ATL > 0,则发出提醒(🔍 审查并从序列中移除)
- 输出:汇总统计数据 + 详细表格 + 与前一天的趋势对比 </success_criteria>
阶段 1:查询 HubSpot 中可拨打的联系人
MCP 工具: search_crm_objects(HubSpot)
objectType: "contacts"
filterGroups: [{
filters: [
{ propertyName: "phone", operator: "HAS_PROPERTY" }
]
}]
properties: [
"firstname",
"lastname",
"email",
"phone",
"jobtitle",
"company",
"hs_lead_status",
"hubspot_owner_id",
"hs_analytics_num_page_views",
"custom_atl_btl_tier",
"custom_prospect_vertical",
"lifecyclestage",
"createdate"
]
limit: 100
**分页:**遍历所有结果(可能有 200 多位联系人)
**输出:**包含所有属性的完整联系人列表(暂不筛选)
阶段 2:应用黄金规则筛选
黄金规则(硬性排除条件):
跳过以下联系人:
- 邮箱域名与 crm_customers 表匹配(客户账户)
- 联系人标记为“Channel Partner”(hubspot_owner_id = 渠道负责人)
- 联系人标记为“Device Owner”或位于设备所有者名单中
- 联系人标记为“Product Page Engager”(仅参与营销互动)
- 职位包含 BTL 关键词:Technician、Support、Intern、Volunteer、Operator、Designer(非总监级)
- 职位属于 NEVER ATL 名单(Warehouse Manager、Network Manager、Systems Admin、AV Tech、Graphic Design Instructor、Program Administrator、Web Designer、Classroom Support、Lab Coordinator、Maintenance、Building Engineer、Multimedia Services Manager、Video Production Specialist、Streaming Crew)
- Lead 状态属于排除名单:Unqualified、Opted Out、Bad Fit
- 电话号码无效或重复
保留逻辑:
- 保留 hs_lead_status 为以下状态的联系人:Subscriber、Qualified Lead、Inbound Lead、Marketing Qualified Lead、Sales Qualified Lead
- 保留最近 90 天内创建的潜在客户
- 保留 hs_analytics_num_page_views > 0 的联系人(互动信号)
**输出:**筛选后的可拨打名单(应用黄金规则后,通常保留输入名单的 50-70%)
阶段 S — 抑制门控
在统计库存和生成拨打队列前,排除受抑制的联系人:
- 排除
bdr_suppression_until已设置且bdr_suppression_until> TODAY 的联系人 - 包含
bdr_suppression_until未设置的联系人(从未受抑制) - 包含
bdr_suppression_until< TODAY 的联系人(冷却期已过)
HubSpot 筛选条件:propertyName: "bdr_suppression_until", operator: "NOT_HAS_PROPERTY" 或 operator: "LT", value: TODAY_ISO
参考:lead-suppression-spec(bdr_suppressed、bdr_suppression_reason、bdr_suppression_until)
阶段 3:按 ATL/BTL 层级分类
**MCP 工具:**不适用(基于 jobtitle 的逻辑分类)
应用 ATL/BTL 决策者分类(依据 CLAUDE.md):
ATL 层级(始终作为潜在客户) — 10 个通用关键词:
- Chief、CIO、CTO、CFO、COO
- Vice President、VP、AVP、SVP、EVP
- President、Provost、Vice Provost
- Superintendent、Director(IT/Tech/Facilities/Academic Tech/Procurement)
- Dean、Court Administrator、Clerk of Court
- City Manager、County Manager、Senior Pastor、Executive Pastor
GRAY 层级(视情况而定——预算权限 >$25K):
- Manager(AV/Facilities/IT)——仅限向 Director+ 汇报的情况
- Department Chair——视具体情况而定(小型与大型机构)
- Director of Educational Technology——取决于汇报关系
- Program Director——仅限拥有部门级预算权限的情况
BTL 层级(无预算权限):
- Technician、Specialist、Coordinator、Support
- Administrator(Systems/Network/Database)
- Engineer(AV/Network/Systems)、Operator
- Instructor、Professor、Faculty、Designer、Assistant
- Clerk(非 Court)、Volunteer、Help Desk
- Student、Resident、Intern
绝不属于 ATL(自动排除):
- Warehouse Manager、Network Manager、Systems Administrator
- AV Technician、Graphic Design Instructor
- Program Administrator、Web Designer
- Classroom Support、Lab Coordinator、Maintenance
- Building Engineer、Multimedia Services Manager
- Video Production Specialist、Streaming Crew
分类算法:
FOR each contact IN filtered_list:
title = contact.jobtitle.lower()
IF title matches any NEVER_ATL keyword:
tier = "NEVER"
action = "REVIEW" (may need removal from sequences)
ELIF title matches any ATL keyword:
tier = "ATL"
ELIF title matches any GRAY keyword:
tier = "GRAY"
note = "Verify budget authority >$25K via company research"
ELSE:
tier = "BTL"
**输出:**已分类并分配层级的可拨打联系人
阶段 4:计算可拨打名单指标
按层级计数:
atl_count = count(tier == "ATL")
gray_count = count(tier == "GRAY")
btl_count = count(tier == "BTL")
never_count = count(tier == "NEVER")
total_callable = atl_count + gray_count + btl_count
ATL 可拨打余量指标:
atl_runway_days = ROUND(atl_count / 15, 1)
# Tim's target: 15 ATL dials/day
# Example: 45 ATL contacts = 3 days of ATL inventory
总可拨打余量指标:
total_runway_days = ROUND(total_callable / 50, 1)
# Tim's target: 50+ dials/day (mix of ATL, GRAY, BTL)
# Example: 200 callable = 4 days of total inventory
线索年龄指标:
avg_days_in_system = AVERAGE(TODAY() - contact.createdate)
recent_engagers = count(hs_analytics_num_page_views > 0)
阶段 5:生成健康状况警报
警报阈值:
| 指标 | 阈值 | 警报级别 | 操作 |
|---|---|---|---|
| ATL 数量 | < 15 | ⚠️ 警告 | “增加 ATL 潜在客户开发(prospect-enrich + prospect-refresh)” |
| 可拨打联系人总数 | < 50 | 🚨 严重 | “库存不足以支持每天拨打 50 次——升级潜在客户开发” |
| NEVER ATL 数量 | > 0 | 🔍 审查 | “NEVER ATL 层级中有 X 个联系人——将其从序列中移除” |
| ATL 可拨打余量 | < 2 天 | ⚠️ 警告 | “ATL 拨打名单不足 2 天——立即补充” |
警报输出:
✓ ATL inventory: 42 contacts (2.8 days runway)
✓ Total callable: 185 contacts (3.7 days runway)
🔍 NEVER ATL: 2 contacts (remove from sequences)
✓ Health: GREEN (acceptable inventory)
阶段 6:输出摘要报告
**格式:**Markdown 摘要 + 详细表格
摘要部分:
# Daily Callable Lead Inventory — 2026-03-19
## Health Status
✓ ATL Inventory: 42 contacts (2.8 days)
✓ Total Callable: 185 contacts (3.7 days)
🔍 NEVER ATL: 2 contacts (review)
## Detailed Breakdown
| Tier | Count | % of Total | Runway Days | Status |
|------|-------|-----------|-------------|--------|
| ATL | 42 | 22.7% | 2.8 | ✓ Good |
| GRAY | 65 | 35.1% | 1.3 | ⚠️ Monitor |
| BTL | 78 | 42.2% | 1.6 | ✓ OK |
| **TOTAL** | **185** | **100%** | **3.7** | **✓ GREEN** |
## Trend vs Yesterday
- ATL: +3 (was 39)
- GRAY: -2 (was 67)
- BTL: +5 (was 73)
- Total: +6 (was 179)
## Top Companies by Leads
1. Acme Corp: 12 contacts (5 ATL)
2. State University: 8 contacts (6 ATL)
3. County Courts: 6 contacts (5 ATL)
## Activity Signal
- Recent engagers (>5 page views): 45 contacts
- Avg days in system: 23 days
- New adds (last 7 days): 18 contacts
可拨打联系人详细表格:
| 联系人 | 职位 | 公司 | 垂直领域 | 电话 | 层级 | 在系统中的天数 | 互动情况 | 序列 |
|---|---|---|---|---|---|---|---|---|
| Jane Smith | Director of IT Services | Acme Corp | 企业 AV | ✓ | ATL | 34 | 12 次查看 | BDR_CorporateAV_1 |
| Bob Jones | Manager, IT Infrastructure | State Univ | 高等教育 | ✓ | GRAY | 45 | 3 次查看 | BDR_HigherEd_1 |
| Carol White | AV Technician | Example Inc | 医疗保健 | ✓ | NEVER | 12 | 1 次查看 | REMOVE |
阶段 7:与 morning-brief 集成
此技能会将信息传递给 morning-brief(上午 7:30):
- 将 ATL/GRAY/BTL 细分数据传递给 morning-brief
- 传递警报标记(⚠️ 警告、🚨 严重、🔍 审查)
- 传递优先拨打名单中的前 15 个 ATL 联系人
- 传递余量指标,用于库存规划
传递给 morning-brief 的输出格式:
{
"atl_count": 42,
"gray_count": 65,
"btl_count": 78,
"never_count": 2,
"total_callable": 185,
"atl_runway_days": 2.8,
"total_runway_days": 3.7,
"alerts": ["NEVER_ATL_REVIEW"],
"top_atl_contacts": [
{ "name": "Jane Smith", "company": "Acme", "days_in_system": 34 },
...
]
}
阶段 8:对比指标(周环比)
可选:跟踪 7 天趋势
| 日期 | ATL | GRAY | BTL | 总计 | ATL 可拨打余量 | 状态 |
|---|---|---|---|---|---|---|
| 2026-03-19 | 42 | 65 | 78 | 185 | 2.8 | ✓ |
| 2026-03-18 | 39 | 67 | 73 | 179 | 2.6 | ✓ |
| 2026-03-17 | 35 | 64 | 70 | 169 | 2.3 | ⚠️ |
| 2026-03-16 | 32 | 62 | 68 | 162 | 2.1 | ⚠️ |
趋势分析:
- ATL 每天增长 3–4 个(良好)
- 总数每天增长 6 个(良好,达到 prospect-enrich + prospect-refresh 的目标)
- 可拨打余量稳定在 2.8–3.7 天(可接受;最低要求为 2 天)
输出结果旁路文件
最后一步,将内容写入 ~/.claude/skill-analytics/last-outcome-callable-lead-count.json:
{"ts":"[UTC ISO8601]","skill":"callable-lead-count","version":"1.0.0","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"atl_count":[n],"gray_count":[n],"btl_count":[n],"total_callable":[n],"never_atl_flagged":[n],"atl_runway_days":[n]},
"error":null,"session_id":"[YYYY-MM-DD]"}
如果部分阶段失败但已生成结果,请使用状态 "partial"。仅当未生成任何输出时,才使用 "error"。
技能元数据
版本: 1.0
上次更新: 2026-03-19
作者: Tim Kipper
状态: 生产环境
集成: HubSpot(门户 21530819)
级别: P1(核心 BDR 自动化)
触发方式: 定时(周一至周五上午 7:25)+ 手动(“显示可联系的潜在客户”)
依赖项: 为 morning-brief(上午 7:30)提供数据