All playbooks

Multi-Agent Outreach: From Raw Prospect to Personalized Sequence

TLDR

A 5-agent pipeline that takes a list of prospect names and produces fully personalized outbound sequences ready to send. Each agent handles one job: enrich the prospect, score them against your ICP, write personalized copy, assemble multi-touch sequences, and sync to your sending tool.

I was spending 4 hours a day doing what this pipeline does in 20 minutes. Research a company. Find the right contact. Check if they fit. Write a personalized email. Repeat. The agents aren't magic — they just follow the same process I was doing manually, except they don't get tired and they don't skip steps when it's 4 PM and the brain is fried. The 11-play signal system now runs across hundreds of prospects per batch. Every email references something specific — their recent funding, their tech stack, a blog they haven't updated in months.

What you get:

  • Automated prospect enrichment from LinkedIn + web sources
  • 100-point lead scoring framework with weighted ICP criteria
  • Signal-based personalization (different pitch for "just raised Series A" vs. "blog hasn't been updated in 6 months")
  • Multi-touch sequences with A/B variants
  • Output formatted for Instantly, Mailgun, or your preferred sending tool
<!-- INSERT IMAGE: ARCHITECTURE DIAGRAM — 5-agent pipeline with fan-out/fan-in and ICP config bar (see prompts/multi-agent-outreach-visuals.md #1) -->

Not building this yourself? I build production versions of this pipeline — ICP scoring calibrated, signal detection running, sequences personalized — for a flat fee. Book a 30-minute scoping call to get a build spec. Or keep reading for the full breakdown.


Step 0: ICP Config

The pipeline is only as good as your targeting. Define who you're going after before automating anything. YAML keeps targeting decisions separate from pipeline logic — your ICP will change, and editing a config file beats editing code.

# config/icp.yaml
icp:
  company:
    size_range: [15, 1000] # employees
    sweet_spot: [50, 200]
    funding_stages: ["series_a", "series_b", "series_c", "profitable"]
    industries: ["b2b_saas", "fintech", "devtools", "martech"]
    disqualify: ["agency", "consulting", "staffing", "recruiting", "nonprofit"]

  buyer_personas:
    - title: "VP Marketing"
      priority: 1
    - title: "Head of Demand Gen"
      priority: 2
    - title: "Director of Content"
      priority: 3
    - title: "Marketing Ops Lead"
      priority: 4
    - title: "Head of Growth"
      priority: 5

  scoring_weights:
    company_fit: 40 # out of 100
    trigger_quality: 20
    pain_alignment: 20
    individual_fit: 20

  qualification_threshold: 60 # minimum score to outreach

Why YAML? Because when your VP of Sales says "we're pivoting upmarket, target 200-2000 employees now," you change two numbers in a config file. Not a codebase.


Step 1: Enrichment Agent

This agent takes a company domain and builds a rich profile. Two-level architecture: research the company once, then find individual buyers at that company. This prevents redundant API calls when a company has 3+ relevant contacts.

Agent prompt:

You are an enrichment agent for a B2B outbound pipeline.

INPUT: A company domain (e.g., "acme.com").

TASK:
1. COMPANY RESEARCH: Pull company name, employee count, industry, funding stage,
   tech stack, recent news, and LinkedIn URL.
   - Sources: Apollo (primary), company website, Crunchbase, LinkedIn.
2. BUYER IDENTIFICATION: Find individuals matching the buyer personas in the ICP config.
   - Sources: Hunter domain search (primary), Apollo people search (fallback).
   - For each buyer: name, email, title, LinkedIn URL.
3. PERSONALIZATION HOOKS: For each buyer, find 1-2 specific hooks:
   - Recent LinkedIn posts or activity
   - Company blog posts they authored
   - Conference talks or podcast appearances
   - Job postings their team has open

OUTPUT: Structured JSON with company profile + array of buyer profiles with hooks.

RULES:
- Don't fabricate data. If you can't find a field, return null.
- Prefer verified emails over guessed patterns.
- Flag companies that match any disqualify criteria from the ICP config.

Tool options: Apollo for company + contact enrichment. Hunter for email finding as fallback. Exa for web search (recent news, blog staleness). In the production build, this agent saves 15-20 minutes per duplicate company by caching company-level research.

<!-- INSERT IMAGE: ENRICHMENT WATERFALL — Apollo → Hunter → manual fallback chain (see prompts/multi-agent-outreach-visuals.md #6) -->

Step 2: Scoring Agent

Score every prospect against your ICP with a 100-point framework. This isn't binary qualify/disqualify — granular scoring tells you which dimension is weakest, and that shapes the outreach angle.

100-point scoring framework:

CategoryMax PointsWhat It Measures
Company Fit40Size (sweet spot = 20, in range = 10), industry match (+10), funding stage (+10)
Trigger Quality20Signal strength — hand raiser (20), fresh money (18), competitor disruption (17), hiring spree (16)
Pain Alignment20Keywords from job posts, website copy, or tech stack gaps that suggest manual processes
Individual Fit20Title match to buyer persona priority list (VP Marketing = 20, Head of Growth = 8)

Tier definitions:

TierScoreAction
HOT90-100Outreach immediately. High priority.
WARM80-89Outreach within 48 hours.
QUALIFIED70-79Queue for next batch.
MARGINAL60-69Outreach only if pipeline is thin.
DEPRIORITIZE<60Skip or save for later.

Agent prompt:

You are a lead scoring agent.

INPUT: Enriched company profile, prospect profile, signal type, ICP config (YAML).

TASK: Score this prospect on the 100-point framework. Return:
- company_fit (0-40)
- trigger_quality (0-20)
- pain_alignment (0-20)
- individual_fit (0-20)
- total score
- tier assignment (HOT/WARM/QUALIFIED/MARGINAL/DEPRIORITIZE)
- disqualification flag + reason (if applicable)
- weakest dimension (used by personalization agent to shape the angle)

RULES:
- Be conservative. A score of 75 means "solid prospect." Don't grade-inflate.
- If any disqualify criteria match, return disqualified: true immediately.
- The weakest dimension matters — flag it explicitly for the personalization agent.
<!-- INSERT IMAGE: SCORING FRAMEWORK DASHBOARD — Gauge showing the 4 categories (40/20/20/20) with tier bars (see prompts/multi-agent-outreach-visuals.md #2) -->

Step 3: Personalization Agent

This is where generic outbound dies and signal-based outreach lives. The personalization agent reads the enrichment data, the scoring context, and the specific signal — then writes copy that speaks to their exact situation.

Agent prompt (this is the star of the show):

You are writing a cold email for a B2B GTM automation consultant.

PROSPECT CONTEXT:
- Name: {name}
- Title: {title}
- Company: {company_name} ({company_size} employees, {industry})
- Signal: {signal_type} — {signal_detail}
- Score: {score}/100 ({tier})
- Weakest dimension: {weakest_dimension}
- Personalization hooks: {hooks}

RULES (non-negotiable):
1. Under 120 words. They won't read more from a stranger.
2. First line references their specific situation (the signal). NOT "hope you're doing well."
3. Share an insight or observation, not a pitch. Give before you ask.
4. One CTA. Specific. "Worth a 15-min call Thursday?" not "Let me know if you're interested."
5. Conversational. Read it aloud. If it sounds like a template, rewrite it.
6. No buzzwords: "leverage," "synergy," "game-changing," "innovative," "cutting-edge."
7. No fake familiarity: "I've been following your company" (you haven't).
8. You are NOT selling. You're sharing what you've seen work for similar companies.
9. If the weakest dimension is pain_alignment, lean harder on the pain angle.
   If it's company_fit, lead with a relevant case study from a similar company.

SIGNAL-SPECIFIC ANGLES:
- content_hire: "Before you fill that role, build the system first. Makes the hire 3x more effective."
- fresh_money: "Post-raise GTM is the bottleneck. Pipeline needs to scale but the team isn't built yet."
- content_gap: "Your blog hasn't been updated in {months} months. Competitors are publishing weekly."
- hiring_spree: "{count} open marketing roles means real budget. Automation handles 2-3 of those headcount plans."
- competitor_disruption: "With the news about {tool}, worth exploring a setup you own."
- hand_raiser: "No pitch. Saw your post and wanted to share what worked for a similar company."

Write the email. Subject line first, then body.

Signal-specific angles table:

SignalSourceAngleWhy It Works
Content HireLinkedIn job posts"Build the system before you fill the role"Budget is approved. You're faster than a 3-month hire.
Fresh MoneyFunding announcements (Exa)"Post-raise is when GTM becomes the bottleneck"Spending mode. GTM is always the constraint.
Launch DayShow HN, Product Hunt"The spike fades fast. Build sustained distribution."Day 3 reality hits. They need pipeline, not a moment.
Content GapBlog staleness (Exa)"Your blog hasn't been updated in N months"Specific. Painful. Shows you did the homework.
Hand RaiserReddit, HN posts"No pitch — saw your post"They asked for help. Zero cold.
Hiring Spree3+ marketing roles"Automation handles 2-3 of those headcount plans"Real budget, real urgency.
Tool AdoptionTech stack + stale blog"You've got the tools but nobody's running the playbooks"Shelfware pain.
Revenue MilestoneARR announcements"That's the inflection where manual GTM breaks"Growth creates bottlenecks.
Competitor DisruptionLayoffs, outages"Before you sign another annual contract..."Vendor gave them a reason to switch.
<!-- INSERT IMAGE: SIGNAL MATRIX — Visual grid of 9 signals with icons (see prompts/multi-agent-outreach-visuals.md #3) -->

Step 4: Sequence Assembly

One email isn't a sequence. Build 3-touch cadences with A/B variant generation.

3-touch structure:

TouchDayPurposeWhat It Contains
InitialDay 1Signal-based outreachPersonalized email referencing their specific situation. Two A/B variants.
Follow-upDay 3Value-add, no askShare an insight, article, or observation. "Thought this might be relevant. No response needed." Under 60 words.
BreakupDay 7Respectful close"If the timing's off, totally get it. Happy to reconnect down the road."

Breakup email template:

Subject: closing the loop

Hey {first_name} — if the timing's off, totally get it. Happy to reconnect
down the road if things shift.

Best,
[Your name]

Why only 3 touches? Three-plus is spam. Full stop. You get one shot to be relevant, one follow-up to add value, and one breakup to close the loop gracefully. Anything more damages your domain reputation and your brand.

<!-- INSERT IMAGE: SEQUENCE TIMELINE — Day 1 → Day 3 → Day 7 visual with purpose labels (see prompts/multi-agent-outreach-visuals.md #4) -->

Step 5: Outbox Sync

Push assembled sequences to your sending infrastructure. Before you send a single email:

Deliverability checklist:

  • Use a dedicated sending domain (NOT your main domain — protect it)
  • SPF record configured
  • DKIM signing enabled
  • DMARC policy set (start with p=none, monitor, then tighten)
  • Domain warmed for 2+ weeks (start at 10/day, increase by 10 every 3 days)
  • Unsubscribe link in every email (CAN-SPAM)
  • Bounce handling configured (remove hard bounces immediately)

Use a dedicated domain. Not negotiable. If your cold outreach domain gets blacklisted, your main domain stays clean. Buy a similar domain — if your site is acme.com, send from acme-outreach.com. Daily send limits matter too: start at 50/day and scale gradually.


Cold Email Rules

These are non-negotiable. Break them and your reply rate drops to zero.

  1. Under 200 words. They won't read an essay from a stranger.
  2. No buzzwords. "Executed key initiatives" = meaningless. "Increased ARR by $1M in 3 months" = concrete.
  3. One clear CTA. "Worth a 15-min call?" Pick one. Not three.
  4. Be specific to THEM. If your email could be sent to anyone, rewrite it.
  5. Don't fake personalize. "I've been following your company" when you Googled them 5 minutes ago. People can tell.
  6. Share an insight, not a pitch. Give them something useful first.
  7. Conversational tone. Read it aloud. If it sounds like a template, it is one.
  8. Make it about them. You get 1-2 sentences about yourself. Max.
  9. Max 1-2 follow-ups. Three-plus is spam. Full stop.
  10. Speed matters. When they reply, respond within hours. Not days.

Before:

Hi Sarah, I hope this message finds you well! I wanted to reach out because I believe our innovative AI-powered GTM automation platform could really help leverage your team's content marketing efforts to drive synergistic growth outcomes.

After:

Sarah — saw you're hiring a Content Marketing Manager. Before you fill the seat: I built an automated content pipeline for a similar-sized SaaS company that handles 80% of what that role would do. Made the eventual hire 3x more effective when they started. Worth a 15-min call to see if something similar fits?


What the Playbook Doesn't Cover

This playbook gives you the architecture. You could build it yourself.

Here's what the playbook doesn't give you:

  • Signal detection infrastructure. The 11-play signal system requires scrapers, APIs, and monitoring pipelines running continuously. The playbook describes the signals — the production version detects them automatically.
  • ICP scoring calibration. The 100-point framework is the structure. Calibrating the weights for YOUR market — which signals matter most for your buyers — takes testing across hundreds of real prospects.
  • Deliverability engineering. Domain warming, reputation management, bounce handling, blacklist monitoring. One mistake here burns your sending domain.
  • CRM sync. Pushing enriched, scored, sequenced prospects into your CRM with proper stage mapping, ownership rules, and activity logging.

Most teams that attempt this spend 80-120 hours building a system that handles 3-4 signals. The production version handles 11 and runs on autopilot.

I build production outbound pipelines for $5,000-$12,000, flat fee. You own everything. That's less than 2 months of an SDR's salary for a system that runs indefinitely. The scoping call is free — you'll walk away with a build spec and a quote, even if you never hire me.

Currently booking for March 2026. I take on 2-3 builds per month.

Book a 30-minute scoping call →


Pro Tips & Pitfalls

Test your ICP config on 20 prospects before automating. Score them manually. If the scoring doesn't match your gut on who's a good prospect, adjust weights before running the pipeline on thousands.

Don't over-enrich. You need 5 good data points, not 50: company size, funding stage, the signal, their title, and one personalization hook. More data = more API costs and slower processing.

The personalization agent needs guardrails. Without explicit word limits and forbidden phrases in the prompt, it writes 300-word essays nobody reads. The prompt template constraints are critical.

Signal freshness matters. A Series A from 3 days ago is different from one 6 months ago. Weight recency in your scoring.

Separate your sending domain. Cold outreach carries deliverability risk. If your outreach domain gets flagged, your main domain stays clean.


Tools & Links

ToolPurposePricing
ApolloCompany + contact enrichmentFree tier / $49+/mo
HunterEmail finding (fallback)Free tier / $49+/mo
ExaWeb search for signalsUsage-based
ApifyLinkedIn job scraping$5-10/mo
MailgunCold email sendingPay-per-email
InstantlyEmail sequence automation$37+/mo
Anthropic APILLM personalization (Claude)Usage-based

The Math

<!-- INSERT IMAGE: BEFORE/AFTER — "Manual SDR day" vs. "Automated pipeline" comparison (see prompts/multi-agent-outreach-visuals.md #5) -->

Time Savings

TaskManual (per prospect)Automated
Company research15-20 min30 sec
Contact finding10-15 min15 sec
ICP qualification5-10 min2 sec
Email personalization15-20 min10 sec
Sequence assembly10 min5 sec
Total55-75 min~1 min

At 20 prospects/day, that's 18-25 hours of manual work replaced by ~20 minutes of pipeline runtime. That's where the "4 hours a day down to 20 minutes" number comes from — it's real.

Cost Per Enriched Lead

ItemMonthly CostLeads/MonthCost/Lead
Apollo$49500$0.10
Hunter$49500$0.10
LLM API~$30500$0.06
Mailgun~$151,500 emails$0.01/email
Total~$143/mo500 leads$0.29/lead

vs. Manual SDR

An SDR doing this manually: $60-80K/year, processing 15-25 prospects/day. This pipeline: ~$143/month, processing 500+ prospects/day with better personalization. The pipeline doesn't replace the SDR — it makes them 10x more effective. They spend time on conversations instead of research.


Want This Built for Your Pipeline?

500 prospects per day. $0.29 per lead. 4 hours of manual work replaced by 20 minutes. Those are real production numbers.

I build outbound pipelines like this for businesses that want signal-based personalization at scale without hiring an SDR team. Here's what the scoping call covers:

  • Your ICP and signals — which buyers, which triggers, which personalization angles matter for your market
  • A build spec — scoring framework calibrated, signal detection configured, sequence templates written
  • A flat-rate quote — $5,000-$12,000 one-time. Less than 2 months of an SDR's salary. You own everything.

The call is 30 minutes. No pitch. If I can help, I'll tell you what it costs. If I can't, I'll tell you that too.

"Julian takes clear ideas and turns them into fully executed AI go-to-market builds — with extreme ownership and zero ego." — Hannah Recker

Currently booking for March 2026. I take on 2-3 builds per month.

Book a 30-minute scoping call →

Want this built for you?

I build production versions of these systems for a flat fee. 30-minute call, build spec included.

Book a discovery call