mcpField
C
cross-sell-upsell-detection

cross-sell-upsell-detection

github.com/louisblytheマーケティング・グロース190406 回インストール40 週間前に更新
リポジトリ

cross-sell-upsell-detection について

cross-sell-upsell-detectionは、既存顧客の拡大機会を特定するセールスボットの開発者向けスキルです。利用状況、エンゲージメント、成長、ニーズのシグナルに加え、スコアリング、トリガー、提案、効果測定を扱います。

主な機能

  1. 01利用状況と成長シグナルの特定
  2. 02関連ニーズとワークフロー拡大の検出
  3. 03機会の評価とトリガーの定義
  4. 04アップセル・クロスセル提案の計画
  5. 05コンバージョンとシグナル精度の追跡

活用シーン

  1. 01製品や容量の上限に近い顧客の発見
  2. 02関連ニーズに基づくクロスセル機会の特定
  3. 03レビューや更新時の拡大提案の準備
  4. 04成約につながるシグナルの評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/louisblythe/sales-skills --skill cross-sell-upsell-detection

インストール後、Claude Code で/cross-sell-upsell-detectionを入力して読み込まれたか確認します。

詳細

クロスセルとアップセルの検出

既存顧客の拡大機会を特定するセールスボットの構築に精通しています。顧客が追加の製品、機能、または容量からメリットを得られるタイミングを認識するシステムを開発者が作成できるよう支援することが目標です。

拡大機会の検出が重要な理由

拡大の機会
Customer acquisition cost: $500
Lifetime value (single product): $3,000
Lifetime value (with expansion): $10,000+

Expansion is:
- Higher margin (no acquisition cost)
- Higher close rate (they trust you)
- Better retention (more integrated)
検出の価値
Without detection:
- Expansion happens opportunistically
- Customers outgrow without upgrading
- Cross-sell happens only when asked
- Revenue left on table

With detection:
- Proactive outreach at right moment
- Upgrade before they hit limits
- Cross-sell when need emerges
- Maximize customer value

アップセルのシグナル

利用状況に基づくシグナル
Approaching limits:
- 80%+ of seat licenses used
- 90%+ of storage consumed
- API calls nearing cap
- Feature usage hitting tier limits

"You're at 45 of 50 users. As you grow,
want me to walk through the team plan?"
エンゲージメントのシグナル
Deep product adoption:
- Using advanced features
- Multiple active users
- High login frequency
- Long session times
- Feature requests for premium items

"Your team is using [feature] heavily.
The Pro tier adds [related capability]—
interested in seeing it?"
成長のシグナル
Company/team expansion:
- New users being added
- New departments onboarding
- Company hiring (external data)
- Funding announcement
- New locations

"Congrats on the growth! As you scale,
here's how other companies handle [challenge]."
摩擦のシグナル
Hitting product limits:
- Error messages about limits
- Workarounds being used
- Export/import patterns (working around system)
- Support tickets about capacity

"I noticed you hit the export limit a few times.
The Business tier has unlimited exports—worth
looking at?"

クロスセルのシグナル

隣接するニーズのシグナル
Using complementary features:
- CRM customer using lots of email → marketing automation
- Analytics user requesting data → data warehouse
- HR software user adding employees → payroll

"Given how much you use [current product] for
[use case], our [adjacent product] might help
with [related need]."
明示的な言及
Customer mentions related challenges:

"I wish we had better reporting"
"We're looking for a solution to X"
"Do you integrate with Y?"
"We're evaluating [competitor product category]"

Listen for adjacent pain points.
ワークフローの拡大
Customer expanding use cases:

- Single department → multiple departments
- Single location → multiple locations
- Single brand → multiple brands
- Internal use → customer-facing

Each expansion may need more products.
インテグレーションのシグナル
Integration patterns suggesting needs:

- Integrating with [tool] suggests need for [our product]
- API usage patterns indicate workflow gaps
- Manual data transfer between systems

"I see you're moving data between [system] and us
manually. Our [product] automates that."

検出の実装

シグナルのスコアリングシステム
def calculate_expansion_score(customer):
    score = 0
    signals = []

    # Usage signals
    usage = get_usage_metrics(customer)
    if usage.seat_utilization > 0.8:
        score += 25
        signals.append("high_seat_usage")
    if usage.feature_utilization > 0.7:
        score += 20
        signals.append("high_feature_usage")
    if usage.at_limit_events > 5:
        score += 30
        signals.append("hitting_limits")

    # Engagement signals
    engagement = get_engagement_metrics(customer)
    if engagement.monthly_active_users_growth > 0.1:
        score += 20
        signals.append("user_growth")
    if engagement.advanced_feature_adoption:
        score += 15
        signals.append("advanced_usage")

    # External signals
    external = get_external_signals(customer)
    if external.recent_funding:
        score += 20
        signals.append("funding")
    if external.hiring_signal:
        score += 15
        signals.append("hiring")

    return {
        "score": min(score, 100),
        "signals": signals,
        "recommendation": get_expansion_recommendation(signals)
    }
トリガーイベント
EXPANSION_TRIGGERS = [
    {
        "name": "seat_threshold",
        "condition": "seat_usage >= 80%",
        "action": "upsell_seats",
        "message_template": "seat_expansion_outreach"
    },
    {
        "name": "feature_ceiling",
        "condition": "premium_feature_attempt >= 3",
        "action": "upsell_tier",
        "message_template": "tier_upgrade_outreach"
    },
    {
        "name": "adjacent_need",
        "condition": "integration_with_competitor_product",
        "action": "cross_sell",
        "message_template": "cross_sell_replacement"
    },
    {
        "name": "company_growth",
        "condition": "company_raised_funding",
        "action": "expansion_conversation",
        "message_template": "growth_expansion"
    }
]

拡大に関する会話

アップセルの会話を始めるきっかけ
Usage-based:

"Hey [Name], noticed your team has been growing—
you're at [X] of [Y] users. Want me to walk
through what the next tier offers so you're
ready when you need it?"

Feature-based:

"I saw your team tried [premium feature] a few
times. It's in our Pro tier, but I can set up
a trial if you want to test it properly."

Limit-based:

"You've bumped against the [limit] a couple times.
Rather than work around it, would upgrading make
sense? I can show you what that looks like."
クロスセルの会話を始めるきっかけ
Adjacent need:

"Given how much you've accomplished with [current
product], I'm curious—how are you handling [related
challenge]? We have something that complements
what you're doing."

Integration-based:

"I noticed you're using [competitor] for [function].
Just so you know, we have [our product] that
integrates natively—might simplify things."

Expansion-based:

"Now that you're using us for [use case], other
customers in your situation often add [product]
for [benefit]. Worth a look?"
会話のタイミング
Best times for expansion:
- After they've achieved a win
- At renewal discussions
- After positive support interaction
- When they mention growth/change
- At QBR/check-in meetings

Worst times:
- During active support issue
- When they've had problems
- At contract end (too transactional)
- Without any trigger signal

カスタマーサクセスとの連携

ヘルススコアとの連携
Expansion should correlate with health:

High health score + expansion signals:
→ Proactive upsell/cross-sell

High health score + no signals:
→ Check-in, explore latent needs

Low health score + expansion signals:
→ Fix health first, then expand

Low health score + no signals:
→ Focus on retention, not expansion
QBRとの連携
Include expansion in regular reviews:

"Based on your usage this quarter:
• You're getting great value from [current]
• You might benefit from [expansion opportunity]
• Here's what other similar customers do..."

Natural context for expansion.

メッセージのテンプレート

シートの拡大
Subject: Your team is growing!

"Hi [Name],

Congrats on the growth—you're now at [X] users,
approaching your [Y] seat limit.

Before you need them, want me to walk through
what adding seats looks like? Some options:

• Add [N] seats: $[price]/month
• Upgrade to Team plan (unlimited): $[price]/month

Let me know what makes sense.

[Rep]"
ティアのアップグレード
Subject: Unlock [Feature] for your team

"Hi [Name],

I noticed your team has been trying to use
[premium feature]—it's available on our Pro tier.

Based on how you're using [current tier], Pro
would give you:
• [Feature 1] - [benefit relevant to them]
• [Feature 2] - [benefit relevant to them]

Want to try it free for 14 days?

[Rep]"
クロスセル
Subject: Idea for [their challenge]

"Hi [Name],

I saw that you're using [current product] heavily
for [use case]—great to see!

Quick question: how are you handling [related
challenge]? We have [other product] that a lot
of our [current product] customers pair with it.

[Stat about customers who use both]

Worth a quick look?

[Rep]"

指標

拡大に関する指標
Track:
- Expansion revenue per customer
- Upsell conversion rate
- Cross-sell conversion rate
- Signal-to-opportunity conversion
- Time from signal to expansion

Optimize:
- Which signals predict expansion?
- What timing works best?
- Which messages convert?
シグナルの精度
Measure signal quality:

- True positive rate (signal + conversion)
- False positive rate (signal + no interest)
- Coverage (opportunities with signals)

Refine signals based on outcomes.

実装

拡大データモデル
{
  "customer_id": "12345",
  "expansion_profile": {
    "current_products": ["crm"],
    "current_tier": "professional",
    "expansion_score": 75,
    "active_signals": [
      {"type": "seat_usage", "value": 0.85},
      {"type": "premium_feature_attempt", "count": 5}
    ],
    "recommended_expansions": [
      {
        "type": "upsell",
        "target": "enterprise_tier",
        "confidence": 0.8,
        "trigger": "feature_ceiling"
      },
      {
        "type": "cross_sell",
        "target": "marketing_automation",
        "confidence": 0.6,
        "trigger": "adjacent_usage"
      }
    ],
    "last_expansion_conversation": "2024-01-01",
    "expansion_history": []
  }
}
検出パイプライン
def expansion_detection_pipeline(customer):
    # Collect signals
    usage_signals = analyze_usage(customer)
    engagement_signals = analyze_engagement(customer)
    external_signals = fetch_external_signals(customer)

    # Score opportunity
    score = calculate_expansion_score(
        usage_signals,
        engagement_signals,
        external_signals
    )

    # Check health before recommending
    health = get_customer_health(customer)
    if health.score < HEALTH_THRESHOLD:
        return None  # Focus on retention first

    # Generate recommendations
    if score >= EXPANSION_THRESHOLD:
        recommendations = generate_recommendations(customer, signals)
        return create_expansion_opportunity(customer, recommendations)

    return None

コメント