---
name: outbound-email-campaign
description: "Run a multi-touch cold email campaign to founders and small business owners. Handles Apollo lead pulling, website research, personalized openers, sequenced email sends across multiple inboxes, and tracker logging. Use when the operator says 'Run' the outbound email campaign, or asks to pull leads, send emails, or check campaign status."
---
# Outbound Email Campaign
Send personalized cold emails to a defined target segment, driving them to book a discovery call. Success = booked calls and replies from qualified prospects.
## Configuration
All values below are **variables**. Replace the defaults with your own before running. The operator sets these once, and every step in the protocol references them.
### Identity and Brand
| Variable | Description | Example Default |
|---|---|---|
| `SENDER_NAME` | Full name on the email signature | `Vincent Jiang` |
| `SENDER_TITLE` | Title in the signature | `Co-founder of OpenHive` |
| `COMPANY_NAME` | Your company name (used in copy) | `OpenHive` |
| `COMPANY_URL` | Your website (for lead research reference) | `https://www.open-hive.com/` |
### Product Pitch and CTA
| Variable | Description | Example Default |
|---|---|---|
| `EMAIL1_VALUE_PROP` | The 3-bullet value proposition block in Email 1. See [email templates](references/EMAIL_TEMPLATES.md). | *(in reference file)* |
| `CTA_OFFER` | The concrete offer in Email 1 call-to-action | `I'll run your URL through OpenHive and prepare 5 qualified prospects` |
| `CTA_LINK` | Scheduling link | `https://calendly.com/contact_aden/discovery-call` |
| `SOCIAL_LINK` | Your social profile for Email 3 | `https://x.com/vincentjiang777` |
### Targeting Criteria
| Variable | Description | Example Default |
|---|---|---|
| `TARGET_TITLES` | Job titles to search | `Founder, Co-Founder, Owner, CEO` |
| `MAX_COMPANY_SIZE` | Strict ceiling on employees. No exceptions. | `10` |
| `TARGET_COUNTRIES` | Tier 1 geographies | `United States, United Kingdom, Canada, Australia, New Zealand, Ireland, Germany, France, Netherlands` |
| `EXCLUDE_PROFILES` | Profile types to skip | `celebrities, influencers, personal brands` |
### Lead Source
| Variable | Description | Example Default |
|---|---|---|
| `LEAD_SOURCE` | Where leads come from | `apollo` |
| `CREDIT_RATIO` | Target enrichment credits per email sent | `1.2` |
| `STARTING_PAGE` | Lead source page depth to pull from (reduces dupes) | `3` |
### Inbox Configuration
Define each sending inbox and its daily volume. Gmail inboxes land in primary; new SendGrid domains land in spam during warmup. Do not change the split without operator approval.
| Inbox Slot | Daily Volume | Provider |
|---|---|---|
| `INBOX_1_EMAIL` / `INBOX_1_VOLUME` | 50 | gmail |
| `INBOX_2_EMAIL` / `INBOX_2_VOLUME` | 50 | gmail |
| `INBOX_3_EMAIL` / `INBOX_3_VOLUME` | 25 | sendgrid |
| `INBOX_4_EMAIL` / `INBOX_4_VOLUME` | 25 | sendgrid |
| `INBOX_5_EMAIL` / `INBOX_5_VOLUME` | 25 | sendgrid |
| `INBOX_6_EMAIL` / `INBOX_6_VOLUME` | 25 | sendgrid |
| **`TOTAL_DAILY_VOLUME`** | **200** | |
### Tracker
| Variable | Description | Example Default |
|---|---|---|
| `TRACKER_TABLE` | Name of the tracker table | `founder_campaign` |
Full schema: see [tracker schema](references/TRACKER_SCHEMA.md).
---
## Daily Sending Protocol
When the operator says **"Run"**, execute the full sequence for that day.
### Step 1: Pull and Verify Leads
1. Search `LEAD_SOURCE` for `TARGET_TITLES` at companies with fewer than `MAX_COMPANY_SIZE` employees in `TARGET_COUNTRIES`.
2. **Check company size from search results BEFORE enriching.** Do not spend enrichment credits on leads you will not use.
3. Deduplicate against every email already in `TRACKER_TABLE`. Lead sources return duplicates across pages.
4. Pull from page `STARTING_PAGE` or deeper to reduce duplicate rate.
5. Enrich only the leads you will actually send to (roughly 1 credit per lead).
6. Capture every field on first enrichment: name, email, company, company website, LinkedIn URL, country, title. No backfilling later.
### Step 2: Research Each Lead's Website
1. Visit each lead's company website before writing a single word.
2. Read what the company actually does (not what the industry category suggests).
3. Write a personalized opener based on what you found. Follow the [opener rules](references/OPENER_RULES.md).
### Step 3: Send Email 1 to New Leads
Send the first email to all new leads for the day. Use the copy in [email templates](references/EMAIL_TEMPLATES.md), substituting `[FIRST_NAME]`, `[OPENER]`, and the config variables above.
Rotate across inboxes per the inbox split. Plain text only. No HTML. No em dashes.
### Step 4: Send Email 2 (Day 3 of Sequence)
Send Email 2 to leads who received Email 1 two days ago.
### Step 5: Send Email 3 (Day 7 of Sequence)
Send Email 3 to leads who received Email 1 six days ago.
### Step 6: Log Everything
Record every send in `TRACKER_TABLE` with all fields from the [tracker schema](references/TRACKER_SCHEMA.md). The tracker is the source of truth.
---
## Credit Management
`LEAD_SOURCE` credits are expensive. Follow these rules strictly:
1. **Never enrich a lead you have not pre-qualified.** Check employee count from search results first.
2. **Target ratio: `CREDIT_RATIO` credits per email sent.**
3. **Deduplicate before enriching.** Check `TRACKER_TABLE` for existing emails first.
4. **Pull from deeper pages** (page `STARTING_PAGE`+) to reduce duplicate rate across runs.
5. **Capture all data fields on first enrichment.** No second passes.
---
## Signature Rules
- Plain text only, no links
- Format: three dashes, then name, then title:
```
---
SENDER_NAME
SENDER_TITLE
```
---
## Rules and Guardrails
1. **Never send emails without explicit operator approval.** The "Run" command is that approval.
2. **Never pull leads without a clear purpose.** Every search costs credits.
3. **Send plain text only.** No HTML, no tracking pixels, no fancy formatting.
4. **Log every send immediately.** The tracker is the source of truth.
5. **If an inbox fails (403, bounced, etc.), redistribute those leads across working inboxes.** Do not skip them.
6. **Refresh email credentials right before each send.** Tokens expire mid-run.