Full pipeline from signal detection to scored lead in CRM. Chains signal-scanner, lead-scorer, and crm-writer into one flow.
Detects buying signals across the web and converts them into scored, deduplicated leads in your CRM. This is the primary lead generation composite.
agency.config.json populated (ICP, services, scoring, CRM)signal-scanner -- search for buying signalslead-scorer -- score and classify leadscrm-writer -- write to CRMRead agency.config.json and determine:
Optional user overrides:
Execute signal-scanner with agency config:
For each ICP segment, generate search queries from services[].keywords + icp.segments[].markets:
Example queries for a Shopify agency targeting India D2C:
Search platforms:
Run max 3 searches concurrently. Pause 2 seconds between batches to avoid rate limits.
For each signal found, capture:
{
"company": "company name if visible",
"website": "their website if mentioned",
"person": "who posted/is hiring",
"url": "link to the signal source",
"platform": "where found",
"signal_type": "funding|hiring|community_post|gig_listing|social_post|news",
"signal_date": "when the signal appeared",
"description": "what they're looking for",
"budget": "if mentioned",
"market": "country/region",
"contact": "contact info if available",
"contact_surfaces": {
"has_email": false,
"has_linkedin": true,
"has_instagram": false,
"has_phone": false,
"has_website": true,
"channel_count": 2,
"discovery_notes": "LinkedIn from post URL. Website from company profile."
}
}
For each signal, execute lead-scorer:
scoring.platform_weightsicp.primary_keywords, icp.secondary_keywords, icp.intent_keywordsicp.negative_keywords (score = 0)scoring.budget_tiersscoring.recency_bonusesscoring.market_boostsscoring.contact_surface_bonus (channels_3_plus: +15, channels_2: +5)Classify:
scoring.thresholds.hot (default 60)scoring.thresholds.warm (default 35)Before writing to CRM:
Present results:
SIGNAL SCAN RESULTS
---
Total signals found: N
After dedup: M new leads
Breakdown: X HOT, Y WARM, Z COOL
TOP HOT LEADS:
1. [Company] -- [Signal] -- Score: [N] -- Channels: EMAIL, LINKEDIN, WEBSITE (3) -- [URL]
2. ...
3. ...
WARM LEADS: [count]
COOL LEADS (not written to CRM): [count]
Only HOT and WARM leads are written to CRM. COOL leads are logged but not actioned.
Execute crm-writer to append HOT and WARM leads:
Tab: crm.tabs.pipeline (or crm.tabs.hawk_leads for platform-scraped leads)
Columns:
Set initial status: "NEW"
DAILY SIGNAL-TO-LEAD SUMMARY
---
Platforms scanned: [list]
Total signals: N
New leads added to CRM: M (X HOT, Y WARM)
Duplicates filtered: D
Next step: Run /lead-enrichment-pipeline to research and enrich these leads
Trigger phrases:
Daily automation:
Run at 9 AM as part of /morning-pipeline