News signal outreach

End-to-end news-triggered signal composite.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/outreach/composites/news-signal-outreach#main ~/.claude/skills/news-signal-outreach

For one project only, change the path to .claude/skills/news-signal-outreach.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text804 lines
news-signal-outreach/SKILL.md804 lines31.9 KBpushed 96d agoRawView on GitHub

News Signal Outreach

The catch-all signal composite. Every other composite handles a specific signal type (funding, hiring, leadership change, champion move). This one handles everything else — any piece of news or public event that could create a reason to reach out.

A regulation change. A product recall. A competitor acquisition. A market expansion. A layoff. An earnings miss. A new partnership. An industry report. A conference keynote. A viral LinkedIn post. Any external event that shifts a company's priorities, creates urgency, or opens a window for your product.

Why this composite exists: The world generates an infinite stream of potential outreach triggers. The four structured signal composites handle the most common patterns. This composite handles the long tail — the unpredictable, opportunistic moments that often produce the best outreach because nobody else is sending a templated sequence about them.

When to Auto-Load

Load this composite when ANY of these are true:

  • User shares ANY URL (LinkedIn post, article, tweet, blog, news) and asks about a company or person mentioned in it
  • User says "came across", "saw this post", "found this article", "check this out", "is this relevant", "is this company a fit", "should we reach out"
  • User mentions a company or person they discovered from an external source (social media, news, conference, podcast, newsletter) and asks about relevance or fit
  • User asks "can we reach out to anyone based on this?"
  • User says "check if this news is relevant to our prospects", "news-based outreach", "trigger-based outreach"
  • User has a list of companies and wants to check recent news for outreach angles
  • The news doesn't fit neatly into funding, hiring, leadership change, or champion move categories
  • An upstream workflow surfaces a news item that needs evaluation

Key principle: If the user shares an external signal (URL, post, article, mention) and asks ANY question about the companies/people in it — load this composite. Don't wait for the word "outreach." The composite handles both evaluation-only (Steps 1-3) and full outreach (Steps 1-6).

Input Flexibility

This composite accepts three input modes:

Mode Input Example
News → Companies A news item. Extract companies/people mentioned, qualify them. "Here's an article about new FDA regulations on telehealth"
Companies → News A list of companies. Find recent news about them, evaluate relevance. "Check these 50 companies for any news we can use as an outreach angle"
Person → News A person or list of people. Find recent news about them or their company, evaluate relevance. "Check if any of these prospects have been in the news"

Step 0: Configuration (One-Time Setup)

On first run for a client/user, collect and store these preferences. Skip on subsequent runs.

ICP Definition

Question Purpose Stored As
What does your company do? (1-2 sentences) Relevance matching company_description
What problem do you solve? Connection angle identification pain_point
What industries do you sell to? ICP filter target_industries
What company sizes? ICP filter target_company_size
What geographies? ICP filter (optional) target_geographies
Any disqualifiers? Hard no's disqualifiers
Who are your buyers? (titles) Contact finding buyer_titles
Who are your champions? (titles) Contact finding champion_titles
Who are your users? (titles) Contact finding user_titles

Your Company Context

Question Purpose Stored As
What specific outcomes does your product deliver? Relevance angle building product_outcomes
Name 2-3 proof points (customers, metrics) Email credibility proof_points
What categories of news are most relevant to your product? Helps prioritize relevant_news_categories

Examples of relevant_news_categories:

# For a cybersecurity product:
relevant_news_categories: ["data breach", "compliance regulation", "security incident",
  "digital transformation", "cloud migration", "IPO/going public"]

# For a sales AI product:
relevant_news_categories: ["sales team scaling", "market expansion", "new product launch",
  "competitor acquisition", "cost cutting", "revenue miss"]

# For an HR tech product:
relevant_news_categories: ["layoffs", "rapid hiring", "remote work policy",
  "DEI initiative", "union activity", "culture crisis"]

Signal Detection Config

Question Options Stored As
How should we find news? Web search / Google News / RSS feeds / Social media news_tool
How far back should we look? (when scanning companies for news) 7 / 14 / 30 / 60 days lookback_days

Contact Finding & Outreach Config

Question Options Stored As
How should we find contacts? Apollo / LinkedIn / Clearbit / Web search contact_tool
Where do you want outreach sent? Smartlead / Instantly / Outreach.io / CSV export outreach_tool
Email or multi-channel? Email only / Email + LinkedIn outreach_channels

Store config in: clients/<client-name>/config/signal-outreach.json or equivalent.


Step 1: Parse & Extract

Purpose: Take the raw news input — whatever form it arrives in — and extract structured entities (companies, people) and the core event.

Input Contract

Three modes:

Mode A: News → Companies/People

news_input: {
  mode: "news_to_targets"
  items: [
    {
      type: "url" | "text" | "structured"
      content: string               # URL to article, raw text, or structured summary
      source: string | null          # "TechCrunch", "LinkedIn post", "user provided", etc.
    }
  ]
}

Mode B: Companies → News

news_input: {
  mode: "targets_to_news"
  companies: [
    {
      name: string
      domain: string
      industry?: string
    }
  ]
  lookback_days: integer
}

Mode C: People → News

news_input: {
  mode: "people_to_news"
  people: [
    {
      full_name: string
      company: string
      linkedin_url?: string
    }
  ]
  lookback_days: integer
}

Process

Mode A: News → Companies/People

  1. Fetch and parse the news content:

    • If URL → fetch the page, extract article text
    • If raw text → use as-is
    • If structured → use as-is
  2. Extract entities:

    • Companies mentioned (name, role in the story — subject, affected party, partner, competitor)
    • People mentioned (name, title, company, role in the story)
    • The core event (what happened, in one sentence)
    • Event category (regulation, acquisition, partnership, product launch, market event, crisis, expansion, contraction, etc.)
    • Date of event
    • Affected industries
  3. Expand if needed: If the news implies a broader set of affected companies beyond those mentioned:

    • "New FDA regulation on telehealth" → all telehealth companies, not just ones in the article
    • "Major data breach at [company]" → the breached company AND their competitors (who can capitalize)
    • "Industry report shows X trend" → companies in that industry

Mode B: Companies → News

  1. For each company, search for recent news using configured news_tool:

    • Web search: "{company_name}" AND (news OR announced OR launches OR raises OR expands OR partners) within lookback_days
    • Filter results against relevant_news_categories from config
    • Extract the same fields as Mode A for each news item found
  2. Group results: Company → list of news items, ranked by relevance to your product

Mode C: People → News

  1. For each person, search for recent news/activity:

    • Web search: "{full_name}" AND "{company}" within lookback_days
    • LinkedIn activity (if available): recent posts, shares, comments
    • Look for: promotions, speaking engagements, published articles, quoted in press, new projects
  2. Group results: Person → list of news items/activity

Output Contract

extracted_signals: [
  {
    entity: {
      type: "company" | "person"
      name: string
      company: string               # Company name (same as name if type=company)
      domain: string | null
      role_in_news: string           # "subject", "affected", "partner", "competitor", "mentioned"
    }
    news: {
      headline: string              # One-line summary of what happened
      event_category: string        # "regulation", "acquisition", "expansion", "crisis", etc.
      event_date: string
      full_summary: string          # 2-3 sentence summary
      source_url: string | null
      affected_industries: string[]
    }
  }
]

Human Checkpoint

## Extracted Signals

Source: [news source/input description]
Event: [one-line summary]
Category: [event category]

### Companies/People Extracted
| Entity | Type | Role in News | Industry |
|--------|------|-------------|----------|
| Acme Corp | Company | Subject | Healthcare |
| Jane Doe | Person | Quoted (CEO) | Healthcare |
| HealthTech sector | Industry | Affected | Healthcare |

Also evaluating: X companies in [affected industry] not directly mentioned

Proceed with ICP qualification? (Y/n)

Step 2: Qualify Against ICP

Purpose: For each extracted entity, determine if they're an ICP fit. Drop companies/people that don't match. Pure LLM reasoning — inherently tool-agnostic.

Input Contract

extracted_signals: [...]              # From Step 1 output
icp_criteria: {
  target_industries: string[]
  target_company_size: string
  target_geographies: string[]
  disqualifiers: string[]
}
your_company: {
  description: string
  pain_point: string
}

Process

For each entity:

  1. If entity is a company:

    • Check industry against target_industries
    • Estimate company size (from news context or quick web search)
    • Check geography if relevant
    • Check against disqualifiers
    • Result: Pass / Fail with reasoning
  2. If entity is a person:

    • Identify their company
    • Qualify the company through the same ICP checks above
    • Additionally check: is this person's role relevant? (matches buyer_titles, champion_titles, or user_titles)
    • Result: Pass / Fail with reasoning
  3. For entities implied but not mentioned (e.g., "all telehealth companies" from a regulation news):

    • Use web search or existing company lists to identify specific companies in the affected space
    • Qualify each against ICP
    • This step may surface new companies not in your existing pipeline

Output Contract

icp_qualified: [
  {
    entity: { ... }                   # From Step 1
    news: { ... }                     # From Step 1
    icp_assessment: {
      fit: "strong" | "moderate"
      industry_match: boolean
      size_match: boolean | "unknown"
      reasoning: string               # Why they're a fit
    }
  }
]
icp_disqualified: [
  {
    entity_name: string
    reason: string
  }
]

Human Checkpoint

## ICP Qualification

### Qualified (X entities)
| Entity | Type | Industry | Size | ICP Fit | Reasoning |
|--------|------|----------|------|---------|-----------|
| Acme Corp | Company | Healthcare SaaS | ~200 | Strong | Core ICP industry, right size |
| MedTech Inc | Company | HealthTech | ~500 | Moderate | Adjacent industry, large |

### Disqualified (X entities)
| Entity | Reason |
|--------|--------|
| BigPharma Co | Enterprise (50K+ employees) — above target size |

Approve qualified list?

Step 3: Identify Connection Angle

Purpose: This is the critical thinking step. For each ICP-qualified entity, determine the specific connection between the news event and your product. Why should they care about your product RIGHT NOW because of THIS news? Pure LLM reasoning — inherently tool-agnostic.

Input Contract

icp_qualified: [...]                  # From Step 2 output
your_company: {
  description: string
  pain_point: string
  product_outcomes: string[]
  proof_points: string[]
  relevant_news_categories: string[]
}

Process

For each qualified entity, answer three questions:

Question 1: "Why does this news create urgency for our product?"

Map the news event category to a product relevance pattern:

Event Category How It Creates Urgency Example
Regulation change They need to comply, your product helps them comply or adapt faster "New data privacy law → they need [your compliance tool] before enforcement date"
Acquisition / Merger Systems need integration, processes need standardization, new leadership evaluates stack "Acquired a company → need to unify [function your product handles]"
Market expansion New market = new challenges, need tools that scale "Expanding to EMEA → need [your product] for localized [function]"
Product launch Scaling up means scaling operations "Launching enterprise tier → need [your product] to handle enterprise [function]"
Competitive pressure Competitor moved, they need to respond "Competitor launched [X] → they need to level up [area your product addresses]"
Cost cutting / Layoffs Do more with less, automation becomes essential "Cut 15% of staff → need [your product] to maintain output with smaller team"
Crisis / Incident Reactive buying — they need a solution NOW "Data breach → urgently need [your security product]"
Partnership New partner = new workflows, new opportunities "Partnered with [company] → need [your product] to support the integration"
Earnings / Growth Over-performing = scaling challenges. Under-performing = efficiency pressure "Revenue grew 3x → [function your product handles] can't keep up manually"
Industry trend / Report Category awareness is high, they're thinking about this "Industry report says [trend] → they're likely evaluating solutions in this space"
Person-level news Published an article, spoke at a conference, posted on LinkedIn about a topic you solve "Posted about [pain] → they're actively thinking about this problem"

Question 2: "What's the specific angle?"

Craft a one-sentence connection:

"Because [news event], [company] now needs [specific outcome your product delivers]."

Examples:

  • "Because Acme just acquired BetaCo, they need to unify two separate CRM systems — exactly what [product] does in 30 days."
  • "Because the new HIPAA amendment takes effect in Q3, [company] needs to audit their data handling — [product] automates this."
  • "Because [person] just posted about struggling with [pain], they're actively looking for a solution — [product] solves this."

Question 3: "How strong is this connection?"

Strength Criteria Example
Direct The news explicitly describes a problem your product solves Layoff in your product's department → they need automation
Adjacent The news implies a downstream need your product addresses Market expansion → implies scaling, which implies need for your tool
Thematic The news is in the same category as your product's domain Industry report about the trend you're in → awareness play

Output Contract

connection_angles: [
  {
    entity: { ... }
    news: { ... }
    icp_assessment: { ... }
    connection: {
      urgency_reason: string          # Why this news creates urgency
      specific_angle: string          # One-sentence connection
      connection_strength: "direct" | "adjacent" | "thematic"
      timing_note: string             # How time-sensitive this outreach is
      recommended_framework: string   # Which email framework fits best
    }
  }
]

Framework Selection Based on Connection Strength

Connection Strength Recommended Framework Why
Direct Signal-Proof-Ask The news IS the hook — reference it directly, show proof, ask
Adjacent PAS Problem (implied by the news) → Agitate (what happens if they don't act) → Solve
Thematic AIDA Attention (news reference) → Interest (how it relates to them) → Desire (your product) → Action

Human Checkpoint

## Connection Angles

### Direct Connections (X entities) — Act quickly
| Entity | News | Angle | Timing |
|--------|------|-------|--------|
| Acme Corp | Acquired BetaCo | "Need to unify CRM systems — [product] does this in 30 days" | This week (integration planning starts immediately) |

### Adjacent Connections (X entities)
| Entity | News | Angle | Timing |
|--------|------|-------|--------|
| MedTech Inc | Expanding to EMEA | "Localized [function] becomes a requirement — [product] supports 15 languages" | This month |

### Thematic Connections (X entities)
| Entity | News | Angle | Timing |
|--------|------|-------|--------|
| HealthCo | Industry report on [trend] | "They're likely evaluating [category] solutions" | Flexible |

Approve these angles before we find contacts?

Step 4: Find Relevant People

Purpose: For each qualified entity with a connection angle, find the right people to contact.

Input Contract

connection_angles: [...]              # From Step 3 output
buyer_titles: string[]                # From config
champion_titles: string[]             # From config
user_titles: string[]                 # From config
max_contacts_per_company: integer     # Default: 3-5

Process

  1. If the entity is already a person (Mode C or person mentioned in news):

    • They're the primary contact. Still find 1-2 additional contacts at their company (buyer if they're a champion, champion if they're a buyer) for multi-threading.
  2. If the entity is a company:

    • Use configured contact_tool to find people matching buyer_titles, champion_titles, user_titles
    • Prioritize people whose role is closest to the news event:
    News Category Prioritize These Contacts
    Regulation / Compliance Legal, Compliance, Operations leadership
    Acquisition / Merger COO, CTO, VP Operations, Integration leads
    Market expansion VP Sales, VP Marketing, Country/Regional leads
    Cost cutting / Layoffs COO, CFO, VP Operations
    Product launch CTO, VP Product, VP Engineering
    Crisis / Incident CISO, VP Engineering, CTO (for security), CEO/COO (for operational)
    General growth Default to buyer_titles from config
  3. For each contact, note their relevance to the news:

    • Are they directly affected by the news? (Their department, their function)
    • Are they the decision-maker for the response to this news?
    • Are they the person who will feel the pain this news creates?

Output Contract

contacts: [
  {
    person: {
      full_name: string
      first_name: string
      last_name: string
      title: string
      email: string | null
      linkedin_url: string | null
      role_type: "buyer" | "champion" | "user"
      news_relevance: string         # Why THIS person for THIS news
    }
    company: {
      name: string
      domain: string
    }
    connection: {
      specific_angle: string
      connection_strength: string
      urgency_reason: string
    }
    news: {
      headline: string
      event_category: string
      source_url: string | null
    }
  }
]

Human Checkpoint

## Contacts Found

### Acme Corp — "Acquired BetaCo" (Direct connection)
| Name | Title | Role | Why This Person |
|------|-------|------|----------------|
| Sarah Kim | COO | Buyer | Owns post-acquisition integration |
| David Park | VP Operations | Champion | Will manage unified workflows |
| Amy Chen | Director of Sales Ops | User | Directly affected by CRM unification |

### MedTech Inc — "Expanding to EMEA" (Adjacent connection)
| ... |

Total: X contacts across Y companies

Approve before we draft emails?

Step 5: Draft Personalized Outreach

Purpose: Draft outreach where the news event is the hook, your product is the solution, and the email demonstrates you understand their specific situation. Pure LLM reasoning — inherently tool-agnostic.

Input Contract

contacts: [...]                       # From Step 4 output
your_company: {
  description: string
  pain_point: string
  product_outcomes: string[]
  proof_points: string[]
}
sequence_config: {
  touches: integer                    # Default: 3
  timing: integer[]                   # Default varies by connection strength (see below)
  tone: string                       # Default: "casual-direct"
  cta: string                       # Default: "15-min call"
}

Process

  1. Adjust sequence timing by connection strength:

    Strength Timing Rationale
    Direct Day 1 / 3 / 7 Urgency is real — they're actively dealing with this
    Adjacent Day 1 / 5 / 12 Standard timing — urgency is implied, not immediate
    Thematic Day 1 / 7 / 14 Slower cadence — this is awareness, not crisis response
  2. Build the email around the news, not the product:

    The news is the subject. Your product is the punchline. Never lead with the product.

    Element Source How to Use
    News hook Step 1 news.headline Open with what happened — show you're informed
    Impact on them Step 3 connection.urgency_reason Explain what this means for their specific role
    Your angle Step 3 connection.specific_angle Connect the dots to your product naturally
    Proof Config proof_points Show a peer who faced a similar situation
    CTA Config Low-friction ask
  3. Email structure by connection strength:

    Direct connection (Signal-Proof-Ask):

    Hook: Reference the specific news event
    Impact: What this means for them (1 sentence)
    Proof: A peer who faced the same situation and used your product
    Ask: Soft CTA
    

    Adjacent connection (PAS):

    Problem: The downstream challenge the news creates
    Agitate: What happens if they don't address it (1 sentence)
    Solve: How your product helps, with a proof point
    Ask: Soft CTA
    

    Thematic connection (AIDA):

    Attention: Reference the news/trend
    Interest: How it relates to their company specifically
    Desire: What your product does in this context
    Action: Soft CTA
    
  4. Personalization layers:

    Layer What Gets Personalized Source
    News reference The specific event and its relevance Step 1 news data
    Company context What their company does, their industry, their situation Step 2 ICP research
    Role context Why THIS person cares about this news Step 4 news_relevance
    Your company fit How your product specifically helps in this scenario Step 3 connection angle
  5. Follow email-drafting skill hard rules. Additionally:

    • Never sensationalize negative news. If the signal is a layoff, breach, or crisis, be empathetic, not opportunistic. "I know this is a challenging time" not "Your layoffs mean you need our tool!"
    • Don't pretend you just happened to see the news. Be direct: "Saw the news about [event]" not "I came across an interesting article."
    • If the news is about a crisis, wait 48-72 hours before reaching out. Immediate outreach during a crisis looks predatory.

Output Contract

email_sequences: [
  {
    contact: { full_name, email, title, company_name, role_type, news_relevance }
    news_context: { headline, event_category, source_url }
    connection: { specific_angle, connection_strength }
    sequence: [
      {
        touch_number: integer
        send_day: integer
        subject: string
        body: string
        framework: string
        personalization_elements: {
          news_reference: string       # How the news was referenced
          company_context: string      # How their company situation was used
          role_context: string         # How their specific role was leveraged
          product_connection: string   # How the product was positioned
        }
        word_count: integer
      }
    ]
  }
]

Human Checkpoint

Present samples grouped by connection strength:

## Sample Outreach for Review

### Direct Connection: Sarah Kim, COO @ Acme Corp
News: Acme acquired BetaCo | Angle: CRM unification | Framework: Signal-Proof-Ask

**Touch 1 — Day 1**
Subject: Unifying Acme + BetaCo systems
> Hi Sarah — saw the BetaCo acquisition. Congrats. The integration
> sprint typically surfaces a CRM unification challenge fast —
> two systems, overlapping data, different workflows.
>
> [Peer company] faced the same thing after their acquisition last year.
> [Product] had both systems unified in 30 days. Happy to share how.
>
> Worth a 15-minute call?

**Touch 2 — Day 3**
> [New angle — data migration complexity, with a specific metric]

**Touch 3 — Day 7**
> [Breakup with offer to share the integration playbook]

---

### Adjacent Connection: Dr. Lee, VP Product @ MedTech Inc
News: EMEA expansion | Angle: Localization needs | Framework: PAS

**Touch 1 — Day 1**
Subject: EMEA expansion + [function] localization
> [full email]

---

Approve these samples? I'll generate the rest in the same style.

Step 6: Handoff to Outreach

Identical to the other signal composites. Package contacts + email sequences for the configured outreach tool.

Output Contract

campaign_package: {
  tool: string
  file_path: string
  contact_count: integer
  sequence_touches: integer
  estimated_send_days: integer
  next_action: string
}

Human Checkpoint

## Campaign Ready

Tool: [configured tool]
Signal type: News-triggered
News event: [headline]
Connection strengths: X direct, Y adjacent, Z thematic
Contacts: N people across M companies
Sequence: 3 touches (timing varies by connection strength)

Ready to launch?

Execution Summary

Step Tool Dependency Human Checkpoint Typical Time
0. Config None First run only 5 min (once)
1. Parse & Extract Web fetch (for URLs) or none (for text) Review extracted entities 2-3 min
2. Qualify ICP Web search (for company research) Approve qualified list 2-3 min
3. Connection Angle None (LLM reasoning) Approve angles + strength ratings 3-5 min
4. Find People Configurable (Apollo, LinkedIn, etc.) Approve contact list 2-3 min
5. Draft Emails None (LLM reasoning) Review samples, iterate 5-10 min
6. Handoff Configurable (Smartlead, CSV, etc.) Final launch approval 1 min

Total human review time: ~15-25 minutes


Key Difference from Other Signal Composites

Dimension Structured Signals (Funding, Hiring, etc.) News Signal
Signal type Predefined, narrow Arbitrary, broad — anything can be a trigger
Detection Targeted search (job boards, funding databases) Open-ended (any news source)
Extra step Step 3: Connection Angle identification. Other composites have obvious connections (funding = money to spend). News requires explicit reasoning about WHY this event matters for your product.
Input modes Companies in → signals out Three modes: News→Companies, Companies→News, People→News
Timing Predictable windows (post-raise, pre-hire) Varies wildly by event type — crisis = 48hr delay, trend = flexible
Sensitivity Generally positive (funding, hiring, growth) Can be negative (layoffs, crises, failures). Requires empathy calibration.

Sensitivity Guidelines

Some news events require careful tone calibration:

Event Type Tone What NOT to Do
Layoffs Empathetic. "I know this is a tough time." Don't say "your layoffs mean you need us!"
Data breach / Security incident Helpful, not salesy. "If you need help with [specific thing]." Don't pile on or blame. Don't reach out same-day.
Earnings miss / Revenue decline Efficiency-focused. "Do more with what you have." Don't reference the miss directly in the subject line.
Executive departure / Fired CEO Skip the drama entirely. Focus on the new leader or the company's direction. Don't mention the departure unless it's public and amicable.
Lawsuit / Legal trouble Generally avoid unless your product directly helps with compliance/legal. Don't reference the lawsuit. It looks ambulance-chasey.
Product failure / Recall Only reach out if you have a direct solution. Don't gloat or compare.

Rule of thumb: If you wouldn't bring it up in a face-to-face conversation at a conference, don't put it in a cold email.


Tips

  • Direct connections are rare but powerful. Most news creates adjacent or thematic connections. When you find a direct one, prioritize it — these convert at 2-3x the rate.
  • Speed matters for direct connections. The first vendor to reference a relevant news event looks informed. The fifth looks like they're running the same playbook.
  • Don't force weak connections. If you can't articulate the angle in one sentence, the connection is too weak. Drop it.
  • News about competitors is gold. If a competitor raises funding, gets acquired, has a security breach, or launches a product — their customers and prospects are suddenly open to conversations.
  • Negative news requires a 48-72 hour cooling period. Reaching out the day of a layoff or breach is predatory. Wait, then lead with empathy.
  • Industry reports and trend pieces make great thematic triggers. "The Gartner report on [category] just dropped — here's what it means for [company]" positions you as thoughtful, not reactive.
  • Combine with other signal composites. News often contains embedded signals: an acquisition article mentions the acquiring company is hiring 50 people (hiring signal), a new CEO is named (leadership change signal), or the company just raised funding (funding signal). Route these to the appropriate specialist composite for better outreach.
1---
2name: news-signal-outreach
3version: 1.0.0
4description: >
5 End-to-end news-triggered signal composite. Takes any piece of news — an article,
6 LinkedIn post, tweet, announcement, event, trend, regulation, product launch,
7 acquisition, layoff, expansion, or any other public event — and evaluates whether
8 the companies or people mentioned are ICP fits. If yes, identifies the connection
9 between the news and your product, finds the right people to contact, and drafts
10 personalized outreach using the news as the hook. Tool-agnostic. Accepts both
11 company-level and person-level news triggers.
12 
13 AUTO-TRIGGER: Load this composite whenever a user shares a URL (LinkedIn post,
14 article, tweet, blog post) or mentions a company/person they "came across",
15 "saw", or "found" from any external source and asks about relevance, fit,
16 ICP match, or whether to reach out. The user does NOT need to explicitly say
17 "outreach" — any signal evaluation request from an external source triggers this.
18tags: [outreach]
19 
20graph:
21 provides:
22 - icp-qualified-targets # Companies/people from the news that fit ICP
23 - relevance-angles # How the news connects to your product
24 - contact-list # People to reach out to
25 - personalized-email-sequences # Outreach drafts using the news as the hook
26 requires:
27 - news-input # The news item(s) — URL, text, or structured data
28 - your-company-context # What you sell, ICP, proof points
29 connects_to:
30 - skill: cold-email-outreach
31 when: "User wants to launch the campaign via their outreach tool"
32 passes: contact-list, personalized-email-sequences
33 - skill: linkedin-outreach
34 when: "User wants LinkedIn outreach instead of or alongside email"
35 passes: contact-list
36 capabilities: [web-search, contact-finding, email-drafting]
37---
38 
39# News Signal Outreach
40 
41The catch-all signal composite. Every other composite handles a specific signal type (funding, hiring, leadership change, champion move). This one handles **everything else** — any piece of news or public event that could create a reason to reach out.
42 
43A regulation change. A product recall. A competitor acquisition. A market expansion. A layoff. An earnings miss. A new partnership. An industry report. A conference keynote. A viral LinkedIn post. Any external event that shifts a company's priorities, creates urgency, or opens a window for your product.
44 
45**Why this composite exists:** The world generates an infinite stream of potential outreach triggers. The four structured signal composites handle the most common patterns. This composite handles the long tail — the unpredictable, opportunistic moments that often produce the best outreach because nobody else is sending a templated sequence about them.
46 
47## When to Auto-Load
48 
49Load this composite when ANY of these are true:
50- User shares ANY URL (LinkedIn post, article, tweet, blog, news) and asks about a company or person mentioned in it
51- User says "came across", "saw this post", "found this article", "check this out", "is this relevant", "is this company a fit", "should we reach out"
52- User mentions a company or person they discovered from an external source (social media, news, conference, podcast, newsletter) and asks about relevance or fit
53- User asks "can we reach out to anyone based on this?"
54- User says "check if this news is relevant to our prospects", "news-based outreach", "trigger-based outreach"
55- User has a list of companies and wants to check recent news for outreach angles
56- The news doesn't fit neatly into funding, hiring, leadership change, or champion move categories
57- An upstream workflow surfaces a news item that needs evaluation
58 
59**Key principle:** If the user shares an external signal (URL, post, article, mention) and asks ANY question about the companies/people in it — load this composite. Don't wait for the word "outreach." The composite handles both evaluation-only (Steps 1-3) and full outreach (Steps 1-6).
60 
61## Input Flexibility
62 
63This composite accepts three input modes:
64 
65| Mode | Input | Example |
66|------|-------|---------|
67| **News → Companies** | A news item. Extract companies/people mentioned, qualify them. | "Here's an article about new FDA regulations on telehealth" |
68| **Companies → News** | A list of companies. Find recent news about them, evaluate relevance. | "Check these 50 companies for any news we can use as an outreach angle" |
69| **Person → News** | A person or list of people. Find recent news about them or their company, evaluate relevance. | "Check if any of these prospects have been in the news" |
70 
71---
72 
73## Step 0: Configuration (One-Time Setup)
74 
75On first run for a client/user, collect and store these preferences. Skip on subsequent runs.
76 
77### ICP Definition
78 
79| Question | Purpose | Stored As |
80|----------|---------|-----------|
81| What does your company do? (1-2 sentences) | Relevance matching | `company_description` |
82| What problem do you solve? | Connection angle identification | `pain_point` |
83| What industries do you sell to? | ICP filter | `target_industries` |
84| What company sizes? | ICP filter | `target_company_size` |
85| What geographies? | ICP filter (optional) | `target_geographies` |
86| Any disqualifiers? | Hard no's | `disqualifiers` |
87| Who are your buyers? (titles) | Contact finding | `buyer_titles` |
88| Who are your champions? (titles) | Contact finding | `champion_titles` |
89| Who are your users? (titles) | Contact finding | `user_titles` |
90 
91### Your Company Context
92 
93| Question | Purpose | Stored As |
94|----------|---------|-----------|
95| What specific outcomes does your product deliver? | Relevance angle building | `product_outcomes` |
96| Name 2-3 proof points (customers, metrics) | Email credibility | `proof_points` |
97| What categories of news are most relevant to your product? | Helps prioritize | `relevant_news_categories` |
98 
99**Examples of `relevant_news_categories`:**
100```
101# For a cybersecurity product:
102relevant_news_categories: ["data breach", "compliance regulation", "security incident",
103 "digital transformation", "cloud migration", "IPO/going public"]
104 
105# For a sales AI product:
106relevant_news_categories: ["sales team scaling", "market expansion", "new product launch",
107 "competitor acquisition", "cost cutting", "revenue miss"]
108 
109# For an HR tech product:
110relevant_news_categories: ["layoffs", "rapid hiring", "remote work policy",
111 "DEI initiative", "union activity", "culture crisis"]
112```
113 
114### Signal Detection Config
115| Question | Options | Stored As |
116|----------|---------|-----------|
117| How should we find news? | Web search / Google News / RSS feeds / Social media | `news_tool` |
118| How far back should we look? (when scanning companies for news) | 7 / 14 / 30 / 60 days | `lookback_days` |
119 
120### Contact Finding & Outreach Config
121| Question | Options | Stored As |
122|----------|---------|-----------|
123| How should we find contacts? | Apollo / LinkedIn / Clearbit / Web search | `contact_tool` |
124| Where do you want outreach sent? | Smartlead / Instantly / Outreach.io / CSV export | `outreach_tool` |
125| Email or multi-channel? | Email only / Email + LinkedIn | `outreach_channels` |
126 
127**Store config in:** `clients/<client-name>/config/signal-outreach.json` or equivalent.
128 
129---
130 
131## Step 1: Parse & Extract
132 
133**Purpose:** Take the raw news input — whatever form it arrives in — and extract structured entities (companies, people) and the core event.
134 
135### Input Contract
136 
137Three modes:
138 
139**Mode A: News → Companies/People**
140```
141news_input: {
142 mode: "news_to_targets"
143 items: [
144 {
145 type: "url" | "text" | "structured"
146 content: string # URL to article, raw text, or structured summary
147 source: string | null # "TechCrunch", "LinkedIn post", "user provided", etc.
148 }
149 ]
150}
151```
152 
153**Mode B: Companies → News**
154```
155news_input: {
156 mode: "targets_to_news"
157 companies: [
158 {
159 name: string
160 domain: string
161 industry?: string
162 }
163 ]
164 lookback_days: integer
165}
166```
167 
168**Mode C: People → News**
169```
170news_input: {
171 mode: "people_to_news"
172 people: [
173 {
174 full_name: string
175 company: string
176 linkedin_url?: string
177 }
178 ]
179 lookback_days: integer
180}
181```
182 
183### Process
184 
185#### Mode A: News → Companies/People
186 
1871. **Fetch and parse the news content:**
188 - If URL → fetch the page, extract article text
189 - If raw text → use as-is
190 - If structured → use as-is
191 
1922. **Extract entities:**
193 - Companies mentioned (name, role in the story — subject, affected party, partner, competitor)
194 - People mentioned (name, title, company, role in the story)
195 - The core event (what happened, in one sentence)
196 - Event category (regulation, acquisition, partnership, product launch, market event, crisis, expansion, contraction, etc.)
197 - Date of event
198 - Affected industries
199 
2003. **Expand if needed:** If the news implies a broader set of affected companies beyond those mentioned:
201 - "New FDA regulation on telehealth" → all telehealth companies, not just ones in the article
202 - "Major data breach at [company]" → the breached company AND their competitors (who can capitalize)
203 - "Industry report shows X trend" → companies in that industry
204 
205#### Mode B: Companies → News
206 
2071. **For each company, search for recent news** using configured `news_tool`:
208 - Web search: `"{company_name}" AND (news OR announced OR launches OR raises OR expands OR partners)` within `lookback_days`
209 - Filter results against `relevant_news_categories` from config
210 - Extract the same fields as Mode A for each news item found
211 
2122. **Group results:** Company → list of news items, ranked by relevance to your product
213 
214#### Mode C: People → News
215 
2161. **For each person, search for recent news/activity:**
217 - Web search: `"{full_name}" AND "{company}"` within `lookback_days`
218 - LinkedIn activity (if available): recent posts, shares, comments
219 - Look for: promotions, speaking engagements, published articles, quoted in press, new projects
220 
2212. **Group results:** Person → list of news items/activity
222 
223### Output Contract
224 
225```
226extracted_signals: [
227 {
228 entity: {
229 type: "company" | "person"
230 name: string
231 company: string # Company name (same as name if type=company)
232 domain: string | null
233 role_in_news: string # "subject", "affected", "partner", "competitor", "mentioned"
234 }
235 news: {
236 headline: string # One-line summary of what happened
237 event_category: string # "regulation", "acquisition", "expansion", "crisis", etc.
238 event_date: string
239 full_summary: string # 2-3 sentence summary
240 source_url: string | null
241 affected_industries: string[]
242 }
243 }
244]
245```
246 
247### Human Checkpoint
248 
249```
250## Extracted Signals
251 
252Source: [news source/input description]
253Event: [one-line summary]
254Category: [event category]
255 
256### Companies/People Extracted
257| Entity | Type | Role in News | Industry |
258|--------|------|-------------|----------|
259| Acme Corp | Company | Subject | Healthcare |
260| Jane Doe | Person | Quoted (CEO) | Healthcare |
261| HealthTech sector | Industry | Affected | Healthcare |
262 
263Also evaluating: X companies in [affected industry] not directly mentioned
264 
265Proceed with ICP qualification? (Y/n)
266```
267 
268---
269 
270## Step 2: Qualify Against ICP
271 
272**Purpose:** For each extracted entity, determine if they're an ICP fit. Drop companies/people that don't match. Pure LLM reasoning — inherently tool-agnostic.
273 
274### Input Contract
275 
276```
277extracted_signals: [...] # From Step 1 output
278icp_criteria: {
279 target_industries: string[]
280 target_company_size: string
281 target_geographies: string[]
282 disqualifiers: string[]
283}
284your_company: {
285 description: string
286 pain_point: string
287}
288```
289 
290### Process
291 
292For each entity:
293 
2941. **If entity is a company:**
295 - Check industry against `target_industries`
296 - Estimate company size (from news context or quick web search)
297 - Check geography if relevant
298 - Check against `disqualifiers`
299 - Result: Pass / Fail with reasoning
300 
3012. **If entity is a person:**
302 - Identify their company
303 - Qualify the company through the same ICP checks above
304 - Additionally check: is this person's role relevant? (matches `buyer_titles`, `champion_titles`, or `user_titles`)
305 - Result: Pass / Fail with reasoning
306 
3073. **For entities implied but not mentioned** (e.g., "all telehealth companies" from a regulation news):
308 - Use web search or existing company lists to identify specific companies in the affected space
309 - Qualify each against ICP
310 - This step may surface new companies not in your existing pipeline
311 
312### Output Contract
313 
314```
315icp_qualified: [
316 {
317 entity: { ... } # From Step 1
318 news: { ... } # From Step 1
319 icp_assessment: {
320 fit: "strong" | "moderate"
321 industry_match: boolean
322 size_match: boolean | "unknown"
323 reasoning: string # Why they're a fit
324 }
325 }
326]
327icp_disqualified: [
328 {
329 entity_name: string
330 reason: string
331 }
332]
333```
334 
335### Human Checkpoint
336 
337```
338## ICP Qualification
339 
340### Qualified (X entities)
341| Entity | Type | Industry | Size | ICP Fit | Reasoning |
342|--------|------|----------|------|---------|-----------|
343| Acme Corp | Company | Healthcare SaaS | ~200 | Strong | Core ICP industry, right size |
344| MedTech Inc | Company | HealthTech | ~500 | Moderate | Adjacent industry, large |
345 
346### Disqualified (X entities)
347| Entity | Reason |
348|--------|--------|
349| BigPharma Co | Enterprise (50K+ employees) — above target size |
350 
351Approve qualified list?
352```
353 
354---
355 
356## Step 3: Identify Connection Angle
357 
358**Purpose:** This is the critical thinking step. For each ICP-qualified entity, determine the specific connection between the news event and your product. Why should they care about your product RIGHT NOW because of THIS news? Pure LLM reasoning — inherently tool-agnostic.
359 
360### Input Contract
361 
362```
363icp_qualified: [...] # From Step 2 output
364your_company: {
365 description: string
366 pain_point: string
367 product_outcomes: string[]
368 proof_points: string[]
369 relevant_news_categories: string[]
370}
371```
372 
373### Process
374 
375For each qualified entity, answer three questions:
376 
377#### Question 1: "Why does this news create urgency for our product?"
378 
379Map the news event category to a product relevance pattern:
380 
381| Event Category | How It Creates Urgency | Example |
382|---------------|----------------------|---------|
383| **Regulation change** | They need to comply, your product helps them comply or adapt faster | "New data privacy law → they need [your compliance tool] before enforcement date" |
384| **Acquisition / Merger** | Systems need integration, processes need standardization, new leadership evaluates stack | "Acquired a company → need to unify [function your product handles]" |
385| **Market expansion** | New market = new challenges, need tools that scale | "Expanding to EMEA → need [your product] for localized [function]" |
386| **Product launch** | Scaling up means scaling operations | "Launching enterprise tier → need [your product] to handle enterprise [function]" |
387| **Competitive pressure** | Competitor moved, they need to respond | "Competitor launched [X] → they need to level up [area your product addresses]" |
388| **Cost cutting / Layoffs** | Do more with less, automation becomes essential | "Cut 15% of staff → need [your product] to maintain output with smaller team" |
389| **Crisis / Incident** | Reactive buying — they need a solution NOW | "Data breach → urgently need [your security product]" |
390| **Partnership** | New partner = new workflows, new opportunities | "Partnered with [company] → need [your product] to support the integration" |
391| **Earnings / Growth** | Over-performing = scaling challenges. Under-performing = efficiency pressure | "Revenue grew 3x → [function your product handles] can't keep up manually" |
392| **Industry trend / Report** | Category awareness is high, they're thinking about this | "Industry report says [trend] → they're likely evaluating solutions in this space" |
393| **Person-level news** | Published an article, spoke at a conference, posted on LinkedIn about a topic you solve | "Posted about [pain] → they're actively thinking about this problem" |
394 
395#### Question 2: "What's the specific angle?"
396 
397Craft a one-sentence connection:
398```
399"Because [news event], [company] now needs [specific outcome your product delivers]."
400```
401 
402Examples:
403- "Because Acme just acquired BetaCo, they need to unify two separate CRM systems — exactly what [product] does in 30 days."
404- "Because the new HIPAA amendment takes effect in Q3, [company] needs to audit their data handling — [product] automates this."
405- "Because [person] just posted about struggling with [pain], they're actively looking for a solution — [product] solves this."
406 
407#### Question 3: "How strong is this connection?"
408 
409| Strength | Criteria | Example |
410|----------|---------|---------|
411| **Direct** | The news explicitly describes a problem your product solves | Layoff in your product's department → they need automation |
412| **Adjacent** | The news implies a downstream need your product addresses | Market expansion → implies scaling, which implies need for your tool |
413| **Thematic** | The news is in the same category as your product's domain | Industry report about the trend you're in → awareness play |
414 
415### Output Contract
416 
417```
418connection_angles: [
419 {
420 entity: { ... }
421 news: { ... }
422 icp_assessment: { ... }
423 connection: {
424 urgency_reason: string # Why this news creates urgency
425 specific_angle: string # One-sentence connection
426 connection_strength: "direct" | "adjacent" | "thematic"
427 timing_note: string # How time-sensitive this outreach is
428 recommended_framework: string # Which email framework fits best
429 }
430 }
431]
432```
433 
434### Framework Selection Based on Connection Strength
435 
436| Connection Strength | Recommended Framework | Why |
437|--------------------|----------------------|-----|
438| **Direct** | **Signal-Proof-Ask** | The news IS the hook — reference it directly, show proof, ask |
439| **Adjacent** | **PAS** | Problem (implied by the news) → Agitate (what happens if they don't act) → Solve |
440| **Thematic** | **AIDA** | Attention (news reference) → Interest (how it relates to them) → Desire (your product) → Action |
441 
442### Human Checkpoint
443 
444```
445## Connection Angles
446 
447### Direct Connections (X entities) — Act quickly
448| Entity | News | Angle | Timing |
449|--------|------|-------|--------|
450| Acme Corp | Acquired BetaCo | "Need to unify CRM systems — [product] does this in 30 days" | This week (integration planning starts immediately) |
451 
452### Adjacent Connections (X entities)
453| Entity | News | Angle | Timing |
454|--------|------|-------|--------|
455| MedTech Inc | Expanding to EMEA | "Localized [function] becomes a requirement — [product] supports 15 languages" | This month |
456 
457### Thematic Connections (X entities)
458| Entity | News | Angle | Timing |
459|--------|------|-------|--------|
460| HealthCo | Industry report on [trend] | "They're likely evaluating [category] solutions" | Flexible |
461 
462Approve these angles before we find contacts?
463```
464 
465---
466 
467## Step 4: Find Relevant People
468 
469**Purpose:** For each qualified entity with a connection angle, find the right people to contact.
470 
471### Input Contract
472 
473```
474connection_angles: [...] # From Step 3 output
475buyer_titles: string[] # From config
476champion_titles: string[] # From config
477user_titles: string[] # From config
478max_contacts_per_company: integer # Default: 3-5
479```
480 
481### Process
482 
4831. **If the entity is already a person** (Mode C or person mentioned in news):
484 - They're the primary contact. Still find 1-2 additional contacts at their company (buyer if they're a champion, champion if they're a buyer) for multi-threading.
485 
4862. **If the entity is a company:**
487 - Use configured `contact_tool` to find people matching `buyer_titles`, `champion_titles`, `user_titles`
488 - Prioritize people whose role is closest to the news event:
489 
490 | News Category | Prioritize These Contacts |
491 |--------------|--------------------------|
492 | Regulation / Compliance | Legal, Compliance, Operations leadership |
493 | Acquisition / Merger | COO, CTO, VP Operations, Integration leads |
494 | Market expansion | VP Sales, VP Marketing, Country/Regional leads |
495 | Cost cutting / Layoffs | COO, CFO, VP Operations |
496 | Product launch | CTO, VP Product, VP Engineering |
497 | Crisis / Incident | CISO, VP Engineering, CTO (for security), CEO/COO (for operational) |
498 | General growth | Default to `buyer_titles` from config |
499 
5003. **For each contact, note their relevance to the news:**
501 - Are they directly affected by the news? (Their department, their function)
502 - Are they the decision-maker for the response to this news?
503 - Are they the person who will feel the pain this news creates?
504 
505### Output Contract
506 
507```
508contacts: [
509 {
510 person: {
511 full_name: string
512 first_name: string
513 last_name: string
514 title: string
515 email: string | null
516 linkedin_url: string | null
517 role_type: "buyer" | "champion" | "user"
518 news_relevance: string # Why THIS person for THIS news
519 }
520 company: {
521 name: string
522 domain: string
523 }
524 connection: {
525 specific_angle: string
526 connection_strength: string
527 urgency_reason: string
528 }
529 news: {
530 headline: string
531 event_category: string
532 source_url: string | null
533 }
534 }
535]
536```
537 
538### Human Checkpoint
539 
540```
541## Contacts Found
542 
543### Acme Corp — "Acquired BetaCo" (Direct connection)
544| Name | Title | Role | Why This Person |
545|------|-------|------|----------------|
546| Sarah Kim | COO | Buyer | Owns post-acquisition integration |
547| David Park | VP Operations | Champion | Will manage unified workflows |
548| Amy Chen | Director of Sales Ops | User | Directly affected by CRM unification |
549 
550### MedTech Inc — "Expanding to EMEA" (Adjacent connection)
551| ... |
552 
553Total: X contacts across Y companies
554 
555Approve before we draft emails?
556```
557 
558---
559 
560## Step 5: Draft Personalized Outreach
561 
562**Purpose:** Draft outreach where the news event is the hook, your product is the solution, and the email demonstrates you understand their specific situation. Pure LLM reasoning — inherently tool-agnostic.
563 
564### Input Contract
565 
566```
567contacts: [...] # From Step 4 output
568your_company: {
569 description: string
570 pain_point: string
571 product_outcomes: string[]
572 proof_points: string[]
573}
574sequence_config: {
575 touches: integer # Default: 3
576 timing: integer[] # Default varies by connection strength (see below)
577 tone: string # Default: "casual-direct"
578 cta: string # Default: "15-min call"
579}
580```
581 
582### Process
583 
5841. **Adjust sequence timing by connection strength:**
585 
586 | Strength | Timing | Rationale |
587 |----------|--------|-----------|
588 | **Direct** | Day 1 / 3 / 7 | Urgency is real — they're actively dealing with this |
589 | **Adjacent** | Day 1 / 5 / 12 | Standard timing — urgency is implied, not immediate |
590 | **Thematic** | Day 1 / 7 / 14 | Slower cadence — this is awareness, not crisis response |
591 
5922. **Build the email around the news, not the product:**
593 
594 The news is the subject. Your product is the punchline. Never lead with the product.
595 
596 | Element | Source | How to Use |
597 |---------|--------|-----------|
598 | News hook | Step 1 `news.headline` | Open with what happened — show you're informed |
599 | Impact on them | Step 3 `connection.urgency_reason` | Explain what this means for their specific role |
600 | Your angle | Step 3 `connection.specific_angle` | Connect the dots to your product naturally |
601 | Proof | Config `proof_points` | Show a peer who faced a similar situation |
602 | CTA | Config | Low-friction ask |
603 
6043. **Email structure by connection strength:**
605 
606 **Direct connection (Signal-Proof-Ask):**
607 ```
608 Hook: Reference the specific news event
609 Impact: What this means for them (1 sentence)
610 Proof: A peer who faced the same situation and used your product
611 Ask: Soft CTA
612 ```
613 
614 **Adjacent connection (PAS):**
615 ```
616 Problem: The downstream challenge the news creates
617 Agitate: What happens if they don't address it (1 sentence)
618 Solve: How your product helps, with a proof point
619 Ask: Soft CTA
620 ```
621 
622 **Thematic connection (AIDA):**
623 ```
624 Attention: Reference the news/trend
625 Interest: How it relates to their company specifically
626 Desire: What your product does in this context
627 Action: Soft CTA
628 ```
629 
6304. **Personalization layers:**
631 
632 | Layer | What Gets Personalized | Source |
633 |-------|----------------------|--------|
634 | News reference | The specific event and its relevance | Step 1 news data |
635 | Company context | What their company does, their industry, their situation | Step 2 ICP research |
636 | Role context | Why THIS person cares about this news | Step 4 `news_relevance` |
637 | Your company fit | How your product specifically helps in this scenario | Step 3 connection angle |
638 
6395. **Follow `email-drafting` skill hard rules.** Additionally:
640 - **Never sensationalize negative news.** If the signal is a layoff, breach, or crisis, be empathetic, not opportunistic. "I know this is a challenging time" not "Your layoffs mean you need our tool!"
641 - **Don't pretend you just happened to see the news.** Be direct: "Saw the news about [event]" not "I came across an interesting article."
642 - **If the news is about a crisis, wait 48-72 hours before reaching out.** Immediate outreach during a crisis looks predatory.
643 
644### Output Contract
645 
646```
647email_sequences: [
648 {
649 contact: { full_name, email, title, company_name, role_type, news_relevance }
650 news_context: { headline, event_category, source_url }
651 connection: { specific_angle, connection_strength }
652 sequence: [
653 {
654 touch_number: integer
655 send_day: integer
656 subject: string
657 body: string
658 framework: string
659 personalization_elements: {
660 news_reference: string # How the news was referenced
661 company_context: string # How their company situation was used
662 role_context: string # How their specific role was leveraged
663 product_connection: string # How the product was positioned
664 }
665 word_count: integer
666 }
667 ]
668 }
669]
670```
671 
672### Human Checkpoint
673 
674Present samples grouped by connection strength:
675 
676```
677## Sample Outreach for Review
678 
679### Direct Connection: Sarah Kim, COO @ Acme Corp
680News: Acme acquired BetaCo | Angle: CRM unification | Framework: Signal-Proof-Ask
681 
682**Touch 1 — Day 1**
683Subject: Unifying Acme + BetaCo systems
684> Hi Sarah — saw the BetaCo acquisition. Congrats. The integration
685> sprint typically surfaces a CRM unification challenge fast —
686> two systems, overlapping data, different workflows.
687>
688> [Peer company] faced the same thing after their acquisition last year.
689> [Product] had both systems unified in 30 days. Happy to share how.
690>
691> Worth a 15-minute call?
692 
693**Touch 2 — Day 3**
694> [New angle — data migration complexity, with a specific metric]
695 
696**Touch 3 — Day 7**
697> [Breakup with offer to share the integration playbook]
698 
699---
700 
701### Adjacent Connection: Dr. Lee, VP Product @ MedTech Inc
702News: EMEA expansion | Angle: Localization needs | Framework: PAS
703 
704**Touch 1 — Day 1**
705Subject: EMEA expansion + [function] localization
706> [full email]
707 
708---
709 
710Approve these samples? I'll generate the rest in the same style.
711```
712 
713---
714 
715## Step 6: Handoff to Outreach
716 
717Identical to the other signal composites. Package contacts + email sequences for the configured outreach tool.
718 
719### Output Contract
720 
721```
722campaign_package: {
723 tool: string
724 file_path: string
725 contact_count: integer
726 sequence_touches: integer
727 estimated_send_days: integer
728 next_action: string
729}
730```
731 
732### Human Checkpoint
733 
734```
735## Campaign Ready
736 
737Tool: [configured tool]
738Signal type: News-triggered
739News event: [headline]
740Connection strengths: X direct, Y adjacent, Z thematic
741Contacts: N people across M companies
742Sequence: 3 touches (timing varies by connection strength)
743 
744Ready to launch?
745```
746 
747---
748 
749## Execution Summary
750 
751| Step | Tool Dependency | Human Checkpoint | Typical Time |
752|------|----------------|-----------------|--------------|
753| 0. Config | None | First run only | 5 min (once) |
754| 1. Parse & Extract | Web fetch (for URLs) or none (for text) | Review extracted entities | 2-3 min |
755| 2. Qualify ICP | Web search (for company research) | Approve qualified list | 2-3 min |
756| 3. Connection Angle | None (LLM reasoning) | Approve angles + strength ratings | 3-5 min |
757| 4. Find People | Configurable (Apollo, LinkedIn, etc.) | Approve contact list | 2-3 min |
758| 5. Draft Emails | None (LLM reasoning) | Review samples, iterate | 5-10 min |
759| 6. Handoff | Configurable (Smartlead, CSV, etc.) | Final launch approval | 1 min |
760 
761**Total human review time: ~15-25 minutes**
762 
763---
764 
765## Key Difference from Other Signal Composites
766 
767| Dimension | Structured Signals (Funding, Hiring, etc.) | News Signal |
768|-----------|-------------------------------------------|-------------|
769| **Signal type** | Predefined, narrow | Arbitrary, broad — anything can be a trigger |
770| **Detection** | Targeted search (job boards, funding databases) | Open-ended (any news source) |
771| **Extra step** | — | Step 3: Connection Angle identification. Other composites have obvious connections (funding = money to spend). News requires explicit reasoning about WHY this event matters for your product. |
772| **Input modes** | Companies in → signals out | Three modes: News→Companies, Companies→News, People→News |
773| **Timing** | Predictable windows (post-raise, pre-hire) | Varies wildly by event type — crisis = 48hr delay, trend = flexible |
774| **Sensitivity** | Generally positive (funding, hiring, growth) | Can be negative (layoffs, crises, failures). Requires empathy calibration. |
775 
776---
777 
778## Sensitivity Guidelines
779 
780Some news events require careful tone calibration:
781 
782| Event Type | Tone | What NOT to Do |
783|-----------|------|---------------|
784| **Layoffs** | Empathetic. "I know this is a tough time." | Don't say "your layoffs mean you need us!" |
785| **Data breach / Security incident** | Helpful, not salesy. "If you need help with [specific thing]." | Don't pile on or blame. Don't reach out same-day. |
786| **Earnings miss / Revenue decline** | Efficiency-focused. "Do more with what you have." | Don't reference the miss directly in the subject line. |
787| **Executive departure / Fired CEO** | Skip the drama entirely. Focus on the new leader or the company's direction. | Don't mention the departure unless it's public and amicable. |
788| **Lawsuit / Legal trouble** | Generally avoid unless your product directly helps with compliance/legal. | Don't reference the lawsuit. It looks ambulance-chasey. |
789| **Product failure / Recall** | Only reach out if you have a direct solution. | Don't gloat or compare. |
790 
791**Rule of thumb:** If you wouldn't bring it up in a face-to-face conversation at a conference, don't put it in a cold email.
792 
793---
794 
795## Tips
796 
797- **Direct connections are rare but powerful.** Most news creates adjacent or thematic connections. When you find a direct one, prioritize it — these convert at 2-3x the rate.
798- **Speed matters for direct connections.** The first vendor to reference a relevant news event looks informed. The fifth looks like they're running the same playbook.
799- **Don't force weak connections.** If you can't articulate the angle in one sentence, the connection is too weak. Drop it.
800- **News about competitors is gold.** If a competitor raises funding, gets acquired, has a security breach, or launches a product — their customers and prospects are suddenly open to conversations.
801- **Negative news requires a 48-72 hour cooling period.** Reaching out the day of a layoff or breach is predatory. Wait, then lead with empathy.
802- **Industry reports and trend pieces make great thematic triggers.** "The Gartner report on [category] just dropped — here's what it means for [company]" positions you as thoughtful, not reactive.
803- **Combine with other signal composites.** News often contains embedded signals: an acquisition article mentions the acquiring company is hiring 50 people (hiring signal), a new CEO is named (leadership change signal), or the company just raised funding (funding signal). Route these to the appropriate specialist composite for better outreach.
804 

Discussion

Alternatives

Also in Blog & articles