πŸ€– Lead Sourcing Agent

Automation Level: 95% AUTO

This agent runs without human involvement. The only human touch is at [[07-Human-Review-Gates|Gate #1]] after it completes.

Manifest Stage: S1 β†’ See 01-Process-Manifest Input: ICP Specification v1.0 Output: Scored lead batch (JSON) β†’ handed to 04-Research-Agent


🎯 Agent Objective

agent:
  name: LeadSourcingAgent
  version: 1.0.0
  objective: >
    Source a batch of leads that match the ICP specification,
    deduplicate against CRM, score each lead, and produce a
    ranked list ready for deep research.
  batch_size: 50                  # leads per run
  run_cadence: twice_per_week     # Mon + Thu
  output_format: JSON

πŸ”§ Tools & Integrations

tools:
  - name: Apollo.io
    action: search_people
    filters: "mapped from [[02-ICP-Definition]] firmographics + contact spec"
    output: raw_lead_list
 
  - name: LinkedIn Sales Navigator
    action: search_leads
    filters: "seniority, function, company size, recent activity"
    output: linkedin_profiles
 
  - name: HubSpot CRM
    action: check_existing_contacts
    purpose: deduplicate β€” never contact existing CRM records
    output: already_in_crm_flag
 
  - name: Hunter.io / ZeroBounce
    action: verify_email
    purpose: remove invalid emails before scoring
    output: email_verified_flag
 
  - name: Crunchbase API
    action: get_funding_data
    purpose: detect recent raises as intent signal
    output: funding_event_flag

πŸ“‹ Execution Steps

flowchart TD
    A["Read ICP Definition"] --> B["Query Apollo.io<br/>+ LinkedIn Nav"]
    B --> C["Deduplicate<br/>vs. HubSpot CRM"]
    C --> D["Verify emails<br/>Hunter / ZeroBounce"]
    D --> E["Enrich intent signals<br/>Crunchbase, job boards"]
    E --> F["Score each lead<br/>0 – 100"]
    F --> G{"Score β‰₯ 40?"}
    G -->|Yes| H["Add to batch"]
    G -->|No| I["Discard + log reason"]
    H --> J["Sort by score DESC"]
    J --> K["Output: lead_batch.json<br/>β†’ Research Agent"]

πŸ“€ Output Schema

{
  "batch_id": "2026-04-01-A",
  "generated_at": "2026-04-01T09:00:00Z",
  "total_leads": 50,
  "leads": [
    {
      "id": "lead_001",
      "score": 87,
      "score_tier": "hot",
      "first_name": "Sarah",
      "last_name": "Chen",
      "title": "VP of Sales",
      "company": "Acme SaaS Inc.",
      "company_size": 45,
      "industry": "B2B SaaS",
      "email": "sarah.chen@acmesaas.com",
      "email_verified": true,
      "linkedin_url": "linkedin.com/in/sarahchen",
      "linkedin_active_30d": true,
      "intent_signals": ["recent_funding", "hiring_SDR"],
      "icp_match": {
        "firmographic": true,
        "technographic": true,
        "seniority": true
      },
      "disqualify_flags": [],
      "crm_exists": false,
      "source": "apollo",
      "sourced_at": "2026-04-01T09:00:00Z"
    }
  ]
}

⚠️ Error Handling

error_rules:
  - condition: apollo_api_timeout
    action: retry_3x_then_alert_COO
    fallback: use_linkedin_only
 
  - condition: crm_api_unavailable
    action: pause_batch_until_restored
    reason: "Never risk re-contacting existing leads"
 
  - condition: batch_size < 20
    action: alert_COO_and_expand_ICP_filters
    reason: "ICP too narrow β€” needs human review of [[02-ICP-Definition]]"
 
  - condition: email_verify_rate < 0.7
    action: flag_batch_and_alert
    reason: "Data quality issue β€” check Apollo source quality"

πŸ“Š Agent Performance KPIs

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

MetricTargetAlert Threshold
Batch email validity rateβ‰₯85%<70%
Avg lead score (hot tier)β‰₯75<65
ICP match rateβ‰₯80%<65%
Leads rejected at Gate #1≀20%>35%
Runtime≀2 hours>4 hours

Self-Improvement

If [[07-Human-Review-Gates|Gate #1]] rejection rate exceeds 35% for two consecutive batches, this agent automatically proposes an ICP filter update to the improvement loop.