Growth Signal Icebreaker
Growth signal detected. Personalized icebreaker written. Zero manual steps.
The Problem
Generic cold emails get ignored. Truly personalized ones take 10+ minutes each to write. AI SDR tools burn LLM budget on undeliverable emails and template copy. This system detects companies actively growing, finds matching decision-makers, generates a unique icebreaker per lead using 3 layers of context, and enrolls them in outbound. Every Monday. Zero manual steps.
Stack
Walkthrough
How It Works
The execution path
Reads targeting config from Airtable Settings and fires TWO parallel async calls to Pronto simultaneously — hiring signal and growth signal. Both are fire-and-forget.
- ·Read targeting config from Airtable Settings
- ·Fire async: companies posting sales/revenue roles (hiring signal)
- ·Fire async: companies growing headcount above threshold (growth signal)
- → Both calls deliver results to WF2 via webhook
Receives company batches and processes one at a time with a 30-second rate limit. Saves each to Airtable, gets the record ID, then submits an async lead search — passing the Airtable ID forward.
- ·Parse and normalize company payload
- ·Loop one company at a time (30s rate limit)
- ·Enrich via Pronto: LinkedIn URL, headcount, industry
- ·Save to Airtable Companies → receive record ID
- ·Look up persona UUID from Airtable Personas table
- ·Submit async lead search scoped to company domain + persona
- → Pass airtable_company_id with the search request
Filters leads by ICP title before spending enrichment credits. The critical move: passes both airtable_lead_id and airtable_company_id through Pronto's custom field so WF4 can find the right records.
- ·Parse leads array
- ·Filter: CTO, Chief Technology Officer, VP Engineering only
- ·Save qualified leads to Airtable Contacts (linked to company)
- ·Aggregate into bulk enrichment request
- ·Pass airtable_lead_id + airtable_company_id via Pronto custom field
- → Pronto echoes custom field back in enrichment webhook
Merges 3 data layers — lead context, company signal, and product knowledge base — before Claude writes. Email is a hard gate: if no deliverable email, Claude never fires. Zero wasted LLM spend.
- ·Receive enriched contact + custom IDs from Pronto
- ·Fetch lead details from Airtable using airtable_lead_id
- ·Fetch company details from Airtable using airtable_company_id
- ·Fetch knowledge base + LGM audience ID from Airtable Settings
- ·Merge: lead context + company signal + knowledge base
- ·Claude writes icebreaker (1–2 sentences, never starts with "I" or lead name)
- ·Update Airtable: icebreaker saved, Enrichment Status = "Enriched"
- ·POST to LaGrowthMachine: enroll in outbound sequence
- ·Update Airtable: LGM Status = "Enrolled", LGM Enrolled At = today
Key Design Decisions
By The Numbers