🔍 Research Agent

Automation Level: 90% AUTO

Runs fully autonomously after 03-Lead-Sourcing-Agent delivers a scored batch. Output is reviewed by humans at [[07-Human-Review-Gates|Gate #1]] alongside sourcing output.

Manifest Stage: S2 → See 01-Process-Manifest Input: lead_batch.json from 03-Lead-Sourcing-Agent Output: lead_intelligence_pack.json → handed to [[07-Human-Review-Gates|Gate #1]] for review, then to 06-Personalization-Agent


🎯 Agent Objective

agent:
  name: ResearchAgent
  version: 1.0.0
  objective: >
    For each approved lead, build a structured intelligence dossier
    that gives the PersonalizationAgent enough context to write a
    genuinely relevant, non-generic email hook.
  depth: per_lead
  run_mode: parallel                # researches all leads in batch simultaneously
  output_format: JSON

🔎 Research Targets Per Lead

For every lead in the batch, the agent collects:

research_targets:
  company_level:
    - recent_news:          # press releases, funding, product launches, 30d
        source: Google News, company blog, PR Newswire
        max_items: 3
 
    - leadership_changes:   # new C-suite, VPs hired in 90d
        source: LinkedIn company page, Crunchbase
 
    - job_postings:         # active hiring signals
        source: LinkedIn Jobs, Greenhouse, Lever
        relevant_roles: [SDR, AE, RevOps, Growth, Sales Ops]
 
    - product_launches:     # new features, integrations, pricing changes
        source: ProductHunt, company blog, changelog
 
    - competitor_signals:   # if they mentioned a competitor, note it
        source: G2, Capterra, LinkedIn posts
 
  person_level:
    - linkedin_posts:       # last 3 posts (topics, tone, interests)
        source: LinkedIn
        max_items: 3
 
    - linkedin_activity:    # comments, likes — what do they engage with?
        source: LinkedIn
        recency_days: 30
 
    - speaking_events:      # podcasts, conferences, webinars
        source: Google, LinkedIn Events
 
    - shared_content:       # articles they've written or shared
        source: LinkedIn, Medium, Substack
 
    - mutual_connections:   # optional — if relevant
        source: LinkedIn
        use_in_hook: false  # privacy-sensitive, disabled by default

📋 Execution Logic

flowchart TD
    A["Receive lead_batch<br/>from Lead Sourcing Agent"]
    A --> B["For each lead — run in parallel"]
    B --> C1["Scrape company news<br/>30 days"]
    B --> C2["Scrape LinkedIn profile<br/>+ recent posts"]
    B --> C3["Check job postings<br/>LinkedIn Jobs"]
    B --> C4["Get funding data<br/>Crunchbase"]
    C1 & C2 & C3 & C4 --> D["Synthesize<br/>Intelligence Dossier"]
    D --> E{"Enough context<br/>for personalization?"}
    E -->|"≥ 2 signals found"| F["Mark: READY"]
    E -->|"< 2 signals"| G["Mark: LOW_CONTEXT<br/>use fallback hook"]
    F & G --> H["Output: lead_intelligence_pack.json<br/>→ Human Gate 1"]

📤 Output Schema

{
  "lead_id": "lead_001",
  "research_status": "READY",
  "researched_at": "2026-04-01T11:30:00Z",
  "company_intel": {
    "recent_news": [
      {
        "headline": "Acme SaaS raises $5M Series A",
        "source": "TechCrunch",
        "date": "2026-03-15",
        "relevance": "funding_event",
        "hook_potential": "high"
      }
    ],
    "hiring_signals": [
      {
        "role": "Senior SDR",
        "posted": "2026-03-28",
        "implication": "scaling outbound sales team"
      }
    ],
    "product_news": [],
    "leadership_changes": []
  },
  "person_intel": {
    "recent_posts": [
      {
        "topic": "Why outbound is dead (and what replaced it)",
        "date": "2026-03-20",
        "engagement": "high",
        "hook_angle": "reference their POV, offer counterpoint"
      }
    ],
    "speaking": [],
    "written_content": []
  },
  "personalization_signals": [
    "recent_funding_round",
    "hiring_SDR",
    "posted_about_outbound"
  ],
  "suggested_hook_angle": "scaling_outbound_with_AI",
  "fallback_hook": "generic_pain_point_sequence",
  "context_richness_score": 82
}

📊 Agent Performance KPIs

Tracked in 09-Metrics-and-Self-Improvement.

MetricTargetAlert Threshold
Leads with ≥2 personalization signals≥75%<50%
Avg context richness score≥70<50
Research completion rate100%<90%
Runtime per batch of 50≤4 hours>6 hours
Personalization-to-reply rate lift≥2× vs fallback<1.5×

Key Insight

Leads with context_richness_score ≥ 80 consistently generate 2–3× higher reply rates when combined with personalization. The improvement loop tracks this in 09-Metrics-and-Self-Improvement.


⚠️ Error Handling

error_rules:
  - condition: linkedin_rate_limit
    action: use_cached_profile_if_available, else mark LOW_CONTEXT
    fallback: generic_hook_from [[05-Email-Sequence-Engine]]
 
  - condition: no_company_news_found
    action: try_alternative_sources (Product Hunt, G2, blog)
    fallback: mark LOW_CONTEXT
 
  - condition: research_runtime > 6h
    action: alert_COO, submit partial results