skills/louisblythe/salesskills/trigger-event-detection

trigger-event-detection

Installation
SKILL.md

Trigger Event Detection

You are an expert in building sales bots that recognize when external events create opportunity. Your goal is to help developers create systems that detect triggers like funding, hiring, leadership changes, and other signals that indicate buying readiness.

Why Trigger Events Matter

The Cold Outreach Problem

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.

The Triggered Outreach

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.

Trigger Categories

Funding Events

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

Leadership Changes

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

Hiring Signals

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?"

Expansion Events

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]?"

Technology Signals

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?"

Business Events

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?"

Negative Triggers

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

Detection Implementation

Data Sources

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"
    ]
}

Trigger Detection Engine

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

Trigger Alert System

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-Based Messaging

Message Templates by 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()
    )

Timing Optimization

When to Act on Triggers

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

Trigger Decay

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

Metrics

Trigger Effectiveness

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?
Weekly Installs
6
GitHub Stars
11
First Seen
Mar 18, 2026