name: cold-outreach-batch-runner description: > Runs the full Wednesday outreach cadence — ICP-filtered prospecting list, personalized cold emails, pipeline logging, and follow-up scheduling. Every Wednesday morning. 45 minutes. metadata: author: "Kathryn Brown, Practice Builders" version: "1.0.0" date: "2026-04-28" sop: "Cold Outreach Batch" category: "Business Development" frequency: "Weekly" estimated-time: "45 min" trigger: "Every Wednesday morning"
Cold Outreach Batch — Runner
You are executing the Cold Outreach Batch SOP for an independent consultant. Cold outreach without a defined cadence is noise — yours and theirs. This runner converts a prospecting list into a disciplined weekly batch of personalized outreach that builds pipeline consistently, independent of referral volume or inbound activity.
Do not skip steps. Do not ask questions across multiple turns — collect everything upfront.
What you'll have when this is done: 5-10 personalized outreach messages sent and logged, each with a follow-up date recorded. Your pipeline tracker reflects this week's outreach activity, and your Wednesday cadence has held.
Step 1: Collect All Inputs
Ask the user for the following in a single prompt. Accept whatever detail level they provide. Flag gaps but keep moving.
Ideal Client Profile:
- Current ICP summary (output from the Ideal Client Profile Refiner skill, or a description of who you're targeting — industry, firm size, role, behavioral traits, disqualification triggers)
- If no formal ICP exists, ask for: industry vertical, typical firm size, role of buyer, and the top 2-3 traits that predict a good engagement
This Week's Prospecting List (5-10 targets):
For each prospect, collect:
- Name
- Company / firm
- Role / title
- Source (LinkedIn, referral, industry publication, event, etc.)
- Relevant context: recent post, article, talk, company news, shared connection, practice focus — anything specific and verifiable
- Channel for outreach (LinkedIn message, email, or other)
Your Background (for the relevance bridge):
- A brief description of your practice and who you typically serve
- 2-3 recent engagements or results you can reference when connecting your experience to a prospect's situation (anonymized is fine — need the pattern and outcome, not the name)
Pipeline Context:
- Last week's outreach log (to avoid contacting anyone already in sequence)
- Pipeline tracker location (CRM, spreadsheet, or equivalent)
If the user can't provide specific research context for a prospect, flag it: "Without a specific reference point (post, article, talk, news), the outreach loses its edge. Find one before sending."
Step 2: Filter the List Against the ICP
Review every prospect on the list against the Ideal Client Profile criteria.
2A. Qualification Check
For each prospect, assess fit:
| Prospect | Industry Match | Role Match | Behavioral Signals | ICP Fit |
|---|---|---|---|---|
| [Name] | [Yes/No/Partial] | [Yes/No/Partial] | [Any known signals] | Keep / Remove |
Keep prospects who match the profile criteria. Remove anyone who doesn't. Don't send outreach to poor-fit prospects just to hit a volume number.
2B. List Health Check
After filtering:
- 5+ qualified prospects remaining: Proceed to Step 3.
- Fewer than 5 qualified prospects: Flag it: "This week's list is thin after ICP filtering. Before sending, check whether your sourcing channels need adjustment — are you looking in the right places for the right people?" Proceed with what you have. Don't pad with bad-fit prospects.
2C. Duplicate Check
Cross-reference the filtered list against last week's outreach log. Remove anyone already in an active sequence. Note removals.
Step 3: Personalize Each Outreach Message (Cold Outreach Personalizer — Condensed)
For each qualified prospect, build a personalized cold outreach email using this structure. The email must be under 120 words total.
Message Structure
Subject line: Under 8 words. Specific to the prospect — reference their content, company, or situation. No clickbait, no emojis. Pattern: "[Specific topic] — quick thought" or "Re: your [post/talk/article] on [topic]."
The Research Hook (1-2 sentences): Open with a specific reference to something the prospect published, said, or did. A LinkedIn post, a talk, an article, a company announcement. The more specific and recent, the better. Generic openers ("I came across your profile") get archived immediately.
The Relevance Bridge (2-3 sentences): Connect their situation to your experience without pitching. Pattern: "I've been working on [similar problem] with [similar type of client], and [one specific insight or result]." This is proof of relevance, not a capability statement. Match the prospect's industry, role, or challenge to a real engagement from the user's experience.
The Micro-Ask (1 sentence): Close with a low-commitment question. Not "Can we schedule a 30-minute call?" but "Would it be worth a 10-minute conversation to see if this applies to your situation?" The goal is a response, not a booking. One ask only.
Sign-off: First name only.
Per-Message Quality Check
Run these checks on each message before including it in the batch:
| # | Check | Fix |
|---|---|---|
| 1 | Does the opening reference a specific piece of content, not a generic profile observation? | Replace with a concrete post, article, talk, or event. |
| 2 | Does the relevance bridge connect their situation to a real engagement or result? | Add a specific client type and outcome. Remove abstract capability claims. |
| 3 | Is the close a low-commitment question, not a meeting request? | Rewrite as a question that requires only a reply. |
| 4 | Is the subject line specific to this prospect? | Include their name, topic, or company. Remove anything generic. |
| 5 | Is the total email under 120 words? | Cut ruthlessly. Cold outreach that runs long doesn't get read. |
Identify the weakest element in each message. Rewrite it. Verify the rewrite landed before including the message.
Rules for Every Message
- Never open with your credentials or company description
- The research hook must reference something specific and verifiable
- No links in the first email — links trigger spam filters and add friction
- One ask only — don't give the prospect multiple options for responding
- Never use "I know you're busy"
- If a prospect has no specific research point, do not write their message — flag it for research first
Step 4: Review and Edit for Voice
Present all drafted messages to the user for review. For each message, flag:
- Anything that reads as templated (same phrasing across multiple messages)
- Any research hook that feels generic rather than specific
- Any relevance bridge that leans on credentials rather than a parallel experience
The user edits for accuracy and voice. The message should sound like them, not like a template with merge fields.
Step 5: Log and Schedule Follow-Ups
For each message the user approves, produce a pipeline tracker entry:
| Prospect | Company | Channel | Date Sent | Message Summary | Follow-Up Date |
|---|---|---|---|---|---|
| [Name] | [Company] | [LinkedIn/Email] | [Today's date] | [1-line summary of hook + ask] | [7 days from today] |
Rule: Every send gets logged, same session. Unlogged outreach creates invisible pipeline — prospects who responded positively but were never followed up because there was no record they existed.
Step 6: Assemble Final Output
Present one unified document containing:
A. ICP Filter Results
The qualification table from Step 2A showing who was kept and who was removed, with reasoning.
B. Outreach Messages
For each qualified prospect, the complete message:
Prospect: [Name], [Role], [Company] Channel: [LinkedIn / Email] Subject: [Under 8 words, specific to prospect]
[Full message text — research hook, relevance bridge, micro-ask, sign-off]
C. Pipeline Log Entries
The complete logging table from Step 5 — every message sent, channel used, date, and follow-up date.
D. Batch Summary
| Metric | Value |
|---|---|
| Prospects reviewed | [X] |
| Removed (ICP mismatch) | [X] |
| Removed (already in sequence) | [X] |
| Messages drafted | [X] |
| Messages flagged for research | [X] |
| Follow-ups scheduled | [X] for [date 7 days out] |
E. SOPs to Trigger
- [ ] Weekly Pipeline Review — update with this week's new outreach count on Monday
- [ ] Ideal Client Profile Refiner — if the prospecting list was consistently thin after ICP filtering, the profile or sourcing channels may need adjustment (run after 6+ months of client data)
- [ ] Follow-Up Sequence Activation — for any prospect who doesn't respond within 7 days of the follow-up date
Quality Check
| Check | Pass? |
|---|---|
| Every prospect from the input list appears in the qualification table — none silently dropped | |
| ICP filter applied before any messages were drafted | |
| Every message has a specific research hook — no generic openers | |
| Every relevance bridge references a real engagement or result, not abstract credentials | |
| Every close is a low-commitment question, not a meeting request | |
| Every subject line is specific to the prospect — under 8 words | |
| Every message is under 120 words | |
| No two messages use the same phrasing for the hook or bridge | |
| Every sent message is logged with date, channel, and 7-day follow-up | |
| Last week's outreach log was checked — no duplicates in this batch | |
| Prospects without specific research context flagged, not sent blind |
Rules
- Filter before you write. Never draft outreach for a prospect who hasn't passed the ICP check. Volume without targeting wastes your time and theirs. Ten well-matched prospects outperform fifty mismatched ones every time.
- Every message earns its own research hook. If you can't reference something specific the prospect said, wrote, or did, don't send the message. Flag it for research and move on.
- Under 120 words. No exceptions. Cold outreach that runs long doesn't get read. Every word earns its place or gets cut.
- No links in the first email. Links trigger spam filters and add friction. The goal is a reply, not a click.
- Log every send, same session. Unlogged outreach creates invisible pipeline. Every send gets a row in the tracker with a follow-up date 7 days out.
- One ask per message. Don't give the prospect multiple response options. One low-commitment question.
- Don't skip the duplicate check. Contacting someone already in an active sequence signals disorganization — the opposite of what your outreach is trying to prove.
- Wednesday cadence holds. The value of this SOP is the rhythm. If Wednesday gets skipped, the pipeline stops being fed on a schedule and reverts to "when I get around to it."
- Escape dollar signs as \$ for Notion compatibility.
- If the prospecting list is consistently thin after filtering, the problem is upstream. Don't lower your ICP standards — fix your sourcing channels.
Copyright (c) 2026 Kathryn Brown, Practice Builders Licensed under the Practice Builders Skill License v1.0 See https://practicebuilders.ai/license for terms.
This skill is part of the Consulting Practice SOP Manual, a Practice Builders product. Redistribution, resale, or derivative use without written permission is prohibited.