callable-lead-count について
HubSpotの連絡可能なコンタクトを集計し、リードのティア分類、架電可能日数、在庫アラートを出すスキルです。日々の見込み客開拓や朝のブリーフ作成を支援します。
主な機能
- 01電話番号のあるコンタクト検索
- 02除外対象と抑制中の連絡先のフィルタリング
- 03ATL・GRAY・BTL・NEVERの分類
- 04架電可能日数の計算
- 05在庫不足と要確認項目の通知
- 06サマリーとコンタクト表の作成
活用シーン
- 01毎日の架電可能な見込み客数の確認
- 02優先架電するATLコンタクトの特定
- 03件数がしきい値を下回った際の通知
- 04朝のブリーフへの在庫データ提供
MCP 対応
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 Runway 指標(1 日 15 件の目標での ATL 通話日数)を計算します。日次インベントリが 50 未満、または ATL インベントリが 15 未満の場合にアラートを出します。モーニングブリーフと通話リストの優先順位設定をサポートします。<quick_start>
トリガー: 月〜金 午前 7:25 ET(毎日、午前 7:30 のモーニングブリーフ前)
手動トリガー: 「通話可能なリードを表示」または「リードインベントリチェック」
依存関係: HubSpot ポータル 21530819 へのアクセスが必要
出力: ティア別の通話可能リード数、ATL Runway 日数、ヘルスアラート
</quick_start>
<success_criteria>
- 電話番号が null でないコンタクトを HubSpot にクエリする
- ゴールデンルールを適用する(顧客、チャネル、デバイス所有者、プロダクトページエンゲージャーを除外)
- 各コンタクトを ATL/BTL ティアで分類する(CLAUDE.md の意思決定者ルールに準拠)
- 合計を集計する: ATL、GRAY、BTL、NEVER(把握用)
- ATL Runway を計算する = ATL 件数 ÷ 1 日 15 通話 = インベントリ X 日分
- 合計 Runway を計算する = 通話可能な合計件数 ÷ 1 日 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)
- リードステータスが除外リストに含まれる: 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> 今日の場合、除外bdr_suppression_untilが設定されていない場合(一度もサプレッションされていない)、含めるbdr_suppression_until< 今日の場合(クーリング期間が終了)、含める
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 | 🚨 重大 | 「1 日 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 | Corp AV | ✓ | ATL | 34 | 12 閲覧 | BDR_CorporateAV_1 |
| Bob Jones | Manager, IT Infrastructure | State Univ | Higher Ed | ✓ | GRAY | 45 | 3 閲覧 | BDR_HigherEd_1 |
| Carol White | AV Technician | Example Inc | Healthcare | ✓ | NEVER | 12 | 1 閲覧 | REMOVE |
ステージ 7: モーニングブリーフとの連携
このスキルは 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 は 1 日あたり 3〜4 件増加 (良好)
- 合計は 1 日あたり 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
ステータス: Production
連携: HubSpot(ポータル 21530819)
ティア: P1(Core BDR Automation)
トリガー: スケジュール(月〜金 7:25 AM)+ 手動(「Show callable leads」)
依存関係: morning-brief(7:30 AM)へフィード