trigger-event-detection について
購買意欲の兆候となるビジネスイベントを特定する、営業ボット開発者向けスキルです。イベントの種類や検出元、イベントに応じたメッセージ、連絡時期、効果指標を扱います。
主な機能
- 01資金調達や経営陣の交代を特定
- 02採用や事業拡大の兆候を検出
- 03技術および事業イベントを追跡
- 04イベントに基づくアウトリーチ機会の生成
- 05イベントの新しさに応じて連絡時期を調整
- 06イベント別に返信とコンバージョンを測定
活用シーン
- 01資金調達の発表後に見込み客を探す
- 02幹部の着任に合わせて連絡の優先度を決める
- 03採用や技術の変化に応じてメッセージを調整する
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ louisblythe/ sales-skills --skill trigger-event-detectionインストール後、Claude Code で/trigger-event-detectionを入力して読み込まれたか確認します。
詳細
トリガーイベントの検出
外部イベントが商機につながるタイミングを認識するセールスボットの構築に精通しています。資金調達、採用、リーダーシップの変更など、購買意欲を示すシグナルを検出するシステムを開発者が構築できるよう支援することが目標です。
トリガーイベントが重要な理由
コールドアウトリーチの課題
Standard outreach:
"Hi, we help companies like yours with X"
Response rate: 1-3%
Reason: No reason to respond right now.
Their situation hasn't changed.
トリガーに基づくアウトリーチ
Triggered outreach:
"Congrats on the Series B! As you scale
the team, here's how we've helped similar
companies handle [challenge]."
Response rate: 10-25%
Reason: Relevant to their current moment.
トリガーのカテゴリ
資金調達イベント
What to detect:
- Seed round
- Series A, B, C, etc.
- PE/VC investment
- Debt financing
- IPO announcement
Why it matters:
- Fresh capital to spend
- Growth mandate
- Infrastructure needs
- New priorities
Message angle:
"With the new funding, you'll likely be
scaling [your solution area]. Here's how
we've helped other post-Series B companies."
リーダーシップの変更
What to detect:
- New CEO/CTO/CMO/CFO
- New VP-level hires
- Key executive departures
- Board changes
Why it matters:
- New leaders make changes
- Fresh perspective on vendors
- Budget reallocation
- New initiatives
Message angle:
"Saw you joined [Company] as [Role].
New leaders often revisit [your solution area].
Happy to share what peers in your position
typically prioritize."
採用シグナル
What to detect:
- Job postings (specific roles)
- Hiring spree (volume)
- Specific technology in job posts
- Team expansion
Why it matters:
- Growth = investment in tools
- Specific hires = specific needs
- Scale challenges incoming
Message angle:
"Noticed you're hiring 5 SDRs. Teams that
size typically need [your solution]. Worth
a quick look?"
事業拡大イベント
What to detect:
- New office opening
- Geographic expansion
- International launch
- Merger/acquisition
Why it matters:
- Growing = investing
- New locations = new systems
- M&A = consolidation opportunity
Message angle:
"Congrats on the Chicago expansion!
New offices often mean revisiting [tools].
How are you handling [challenge]?"
テクノロジーシグナル
What to detect:
- New technology adoption
- Tool replacement announcements
- Integration launches
- Infrastructure changes
Why it matters:
- Tech change = buying mode
- Integration needs
- Modernization initiative
Message angle:
"Saw you recently adopted [tech]. Many
[tech] users pair it with [your solution]
for [benefit]. Worth exploring?"
ビジネスイベント
What to detect:
- Product launches
- Partnership announcements
- Award wins
- Industry recognition
- Earnings reports (public)
Why it matters:
- Momentum = willingness to invest
- New initiatives = new needs
- Success = expansion mode
Message angle:
"Congrats on the product launch! Post-launch
teams often need help with [challenge].
How's that going for you?"
ネガティブなトリガー
What to detect:
- Competitor using their tech
- Negative reviews of competitor
- Competitor outage/issues
- Contract renewal timing
Why it matters:
- Dissatisfaction = openness
- Looking for alternatives
- Comparison shopping
Message angle:
"Heard [competitor] has been having issues.
If you're exploring options, happy to show
how we're different."
検出の実装
データソース
TRIGGER_SOURCES = {
"funding": [
"crunchbase_api",
"pitchbook_api",
"news_alerts",
"sec_filings"
],
"leadership": [
"linkedin_changes",
"news_alerts",
"company_announcements"
],
"hiring": [
"job_boards",
"linkedin_jobs",
"company_careers_page"
],
"technology": [
"builtwith",
"wappalyzer",
"news_alerts",
"job_posting_tech"
],
"news": [
"google_alerts",
"press_releases",
"industry_publications"
]
}
トリガー検出エンジン
class TriggerDetector:
def __init__(self, prospect):
self.prospect = prospect
self.detected_triggers = []
def scan_for_triggers(self):
triggers = []
# Check each source
triggers += self.check_funding_events()
triggers += self.check_leadership_changes()
triggers += self.check_hiring_signals()
triggers += self.check_tech_changes()
triggers += self.check_news_events()
# Score and prioritize
scored = [self.score_trigger(t) for t in triggers]
self.detected_triggers = sorted(scored, key=lambda x: -x["score"])
return self.detected_triggers
def check_funding_events(self):
triggers = []
# Check Crunchbase
funding = crunchbase_api.get_recent_funding(
company=self.prospect.company_name,
days=30
)
for round in funding:
triggers.append({
"type": "funding",
"subtype": round.series,
"amount": round.amount,
"date": round.date,
"source": "crunchbase"
})
return triggers
def check_hiring_signals(self):
triggers = []
# Check LinkedIn jobs
jobs = linkedin_api.get_job_postings(
company=self.prospect.company_id,
days=14
)
# Identify relevant roles
relevant_roles = filter_relevant_roles(jobs, self.relevant_keywords)
if len(relevant_roles) >= 3:
triggers.append({
"type": "hiring_spree",
"subtype": "relevant_roles",
"count": len(relevant_roles),
"roles": relevant_roles[:5],
"source": "linkedin"
})
return triggers
def score_trigger(self, trigger):
base_score = TRIGGER_BASE_SCORES.get(trigger["type"], 50)
# Recency bonus
days_old = (now() - trigger["date"]).days
recency_multiplier = max(0.5, 1 - (days_old / 60))
# Relevance bonus
relevance = calculate_relevance(trigger, self.prospect)
trigger["score"] = base_score * recency_multiplier * relevance
return trigger
トリガーアラートシステム
def process_detected_trigger(trigger, prospect):
# Create outreach opportunity
opportunity = {
"prospect_id": prospect.id,
"trigger_type": trigger["type"],
"trigger_details": trigger,
"recommended_message": generate_trigger_message(trigger, prospect),
"urgency": calculate_urgency(trigger),
"suggested_timing": get_suggested_timing(trigger)
}
# Route based on prospect tier and trigger strength
if prospect.icp_tier in ["tier_1", "tier_2"] and trigger["score"] >= 70:
# High priority - alert rep
notify_rep(prospect.owner, opportunity)
create_task(prospect.owner, "Trigger-based outreach", due=today())
elif trigger["score"] >= 50:
# Medium priority - queue for bot outreach
queue_triggered_outreach(prospect, opportunity)
else:
# Low priority - add to context for future
update_prospect_context(prospect, trigger)
トリガーに基づくメッセージング
トリガー別のメッセージテンプレート
TRIGGER_MESSAGES = {
"funding": {
"series_a": """
Congrats on the Series A, {name}! As you scale,
teams your size typically need to think about
{pain_point}. Happy to share what we've seen
work for other post-A companies.
""",
"series_b": """
Saw the Series B news—congrats! With growth
comes {challenge}. We've helped companies at
your stage {benefit}. Worth a quick look?
"""
},
"new_executive": {
"cmo": """
{name}, congrats on the CMO role at {company}.
New marketing leaders often revisit {our_area}.
Happy to share what your peers typically
prioritize in the first 90 days.
""",
"cto": """
Saw you joined {company} as CTO. Tech leaders
often find {pain_point} when they come in.
If that resonates, happy to chat.
"""
},
"hiring": {
"sales_team": """
Noticed {company} is building out the sales
team. Teams that size often struggle with
{pain_point}. Worth exploring how we can help?
""",
"engineering_team": """
Saw you're scaling engineering. Fast-growing
teams often need {solution_area}. Happy to
share what similar companies have done.
"""
}
}
def generate_trigger_message(trigger, prospect):
template = TRIGGER_MESSAGES[trigger["type"]][trigger["subtype"]]
return template.format(
name=prospect.first_name,
company=prospect.company_name,
pain_point=get_relevant_pain_point(prospect),
challenge=get_relevant_challenge(trigger),
benefit=get_relevant_benefit(prospect),
our_area=get_solution_area()
)
タイミングの最適化
トリガーを受けて行動するタイミング
Funding announced:
- Act within 1-2 weeks
- Not same day (noise)
- Before spending decisions made
Executive hired:
- Act at 2-4 weeks
- After they've assessed
- Before they've decided
Hiring signals:
- Act while hiring active
- Growing = immediate need
- Position not filled yet
Technology change:
- Act within 2-4 weeks
- Implementation phase
- Integration decisions pending
トリガーの減衰
def calculate_trigger_freshness(trigger):
days_old = (now() - trigger["date"]).days
DECAY_RATES = {
"funding": 60, # Relevant for ~60 days
"new_executive": 90, # Relevant for ~90 days
"hiring": 30, # Relevant while active
"tech_change": 45, # Relevant for ~45 days
"expansion": 60 # Relevant for ~60 days
}
decay_period = DECAY_RATES.get(trigger["type"], 45)
freshness = max(0, 1 - (days_old / decay_period))
return freshness
指標
トリガーの有効性
Track:
- Response rate by trigger type
- Conversion rate by trigger type
- Revenue from trigger-based outreach
- Time from trigger to engagement
Optimize:
- Which triggers work best?
- What messaging converts?
- What timing is optimal?
コメント
Markdown 対応