---
name: campaign-builder
description: >
  Generate a complete cold email campaign from a set of input variables.
  Use this skill whenever the user specifies campaign parameters such as
  value_proposition, campaign_type, leads_source, capacity, or geography.
  Also use when the user asks to "set up a campaign", "build a sequence",
  or references any value-prop module by name (e.g. "dev-team-satisfaction",
  "referral-program", "tech-audit"). Always load the relevant value-prop
  module from sales/value-props/ before generating output.
  Output ALL FOUR artifacts every time a campaign is generated.
---

# Campaign Builder — Agilie

## Overview

This skill turns a set of campaign variables into four ready-to-use artifacts:
1. Lead profile & source filters
2. Smartlead configuration block
3. Email sequence with A/B subject lines
4. Campaign analytics & timeline

Always read `global/agilie.md` and `sales/base.md` first.
For objection handling → `sales/objections.md`

---

## Input variables

```
# --- Universal (required — ask if missing) ---
value_proposition:    [module name from sales/value-props/]
leads_source:         apollo.io | sales_navigator | linkedin | apify
capacity:             [contacts/day]
available_emails:     [number of sending email accounts]
emails_per_account:   [daily send limit per account — e.g. 30]
start_date:           [YYYY-MM-DD]

# --- Universal (defaults — apply silently, do not ask) ---
campaign_type:        aggressive | standard | nurture   (default: aggressive)
geography:            Rich | [custom list] | [single country]  (default: Rich)

# --- VP-specific (see ## Required campaign inputs in each VP file) ---
[e.g. typeform_url, report_sender_name, offer_details — flag as PLACEHOLDER if missing]
```

**If any required universal input is missing → ask before generating.**
**VP-specific inputs missing → flag as [PLACEHOLDER] and proceed.**
**segment → never ask, always infer from VP module.**

### Geography — "Rich" default list

When geography = Rich (or not specified), target these countries:

Andorra, United Arab Emirates, Austria, Australia, Belgium, Bahrain,
Canada, Switzerland, Cyprus, Czechia, Germany, Denmark, Spain, Finland,
France, United Kingdom, Greenland, Greece, Hong Kong, Ireland, Israel,
Italy, Liechtenstein, Luxembourg, Monaco, Malta, Netherlands, Norway,
New Zealand, Portugal, Qatar, Saudi Arabia, Sweden, Slovenia, Slovakia,
United States, Virgin Islands (U.S.), British Virgin Islands,
Wallis and Futuna, Yemen

---

## Step 1 — Load the value proposition module

Read `sales/value-props/[value_proposition].md` before generating anything.
That file defines: target persona, pain hooks, offer mechanics, CTA,
proof points, segment, and VP-specific required inputs.

If the module doesn't exist → tell the user and stop.

---

## ARTIFACT 1 — Lead Profile & Source Filters

Output a structured lead profile ready to paste into the chosen lead source.

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ARTIFACT 1 — LEAD PROFILE & FILTERS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Target persona:    [from VP module]
Company size:      [from VP module]
Industry:          [from VP module]
Geography:         [Rich / custom]
Tech signals:      [from VP module, if any]
Exclude:           [from VP module]

[APOLLO.IO — if leads_source = apollo.io]
Person title (contains):  [exact strings]
Company headcount:         [range]
Location:                  [country list]
Keywords:                  [optional]
Estimated pool size:       [your estimate based on filters]

[SALES NAVIGATOR — if leads_source = sales_navigator]
Job title:         [exact titles]
Geography:         [LinkedIn geography values]
Company size:      [LinkedIn headcount range]
Industry:          [LinkedIn industry categories]
Estimated pool:    [your estimate]

[APIFY — if leads_source = apify]
Recommended actor: [actor name]
Search parameters: [key params to configure]
```

---

## ARTIFACT 2 — Smartlead Configuration

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ARTIFACT 2 — SMARTLEAD CONFIGURATION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Sequence name:      ICP_[VP name slug]_[campaign_type]_[YYYY-MM]
Sending days:       Monday – Friday
Sending window:     11:00–17:00 London time
Available accounts: [available_emails]
Limit per account:  [emails_per_account]/day
Total send capacity:[available_emails × emails_per_account]/day
Contacts/day:       [capacity — must be ≤ total send capacity]
Auto-pause on:      Reply received
Unsubscribe:        Include in footer (GDPR)
Tracking:           Open OFF | Click OFF

Ramp-up schedule:
  Week 1 (from [start_date]):          [20% of capacity]/day
  Week 2 (from [start_date +7]):       [40% of capacity]/day
  Week 3 (from [start_date +14]):      [70% of capacity]/day
  Week 4+ (from [start_date +21]):     [100% of capacity]/day
```

**Capacity check:** If capacity > available_emails × emails_per_account,
flag the conflict and suggest either adding accounts or reducing contacts/day.

---

## ARTIFACT 3 — Email Sequence

### Sequence structure by campaign_type

| Type       | Emails | Span    | Tone |
|------------|--------|---------|------|
| aggressive | 3      | 7 days  | Direct, sharp, minimal |
| standard   | 4      | 14 days | Value-first, measured |
| nurture    | 5      | 21 days | Educational, low-pressure |

### Touch point structure

**Aggressive (3 emails):**
- Email 1 — Day 1:  Hook + offer (observation anchor + value prop + soft CTA)
- Email 2 — Day 3:  Proof + direct CTA (one concrete proof point)
- Email 3 — Day 7:  Breakup (short, respectful, door open)

**Standard (4 emails):**
- Email 1 — Day 1:  Hook + offer (observation anchor + value prop + soft CTA)
- Email 2 — Day 4:  Proof (case study or benchmark data)
- Email 3 — Day 9:  Direct CTA (explicit ask)
- Email 4 — Day 14: Breakup

**Nurture (5 emails):**
- Email 1 — Day 1:  Hook + context (frame the problem)
- Email 2 — Day 5:  Education (insight or framework, no sell)
- Email 3 — Day 10: Proof (case study or benchmark)
- Email 4 — Day 16: Direct CTA (explicit ask)
- Email 5 — Day 21: Breakup

### Output format per email

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ARTIFACT 3 — EMAIL SEQUENCE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

EMAIL 1 — [Label]  |  Day 1
─────────────────────────────
Subject A: [variant A]
Subject B: [variant B]

[Body]

---

EMAIL 2 — [Label]  |  Day [N]
...
```

### Personalisation anchors (Email 1)

Pull from VP module `trigger_signals`. Use patterns:
- `Noticed [signal] at [Company] — [insight].`
- `[Company] just [signal]. That usually means [pain].`

### Geography tone (apply per email)

**US / CA / AU / NZ:** Speed, ROI, competitive edge. Bold outcomes.
**DE / NO / CH / AT / NL / SE / DK / FI:** Process rigor, GDPR, reliability, long-term.
**IL:** Peer-level, technically literate, zero fluff.
**GCC (UAE / QA / SA / BH):** Relationship-aware, vision-forward, reference regional growth.
**Mixed/Rich:** Default to US tone, soften for EU names where detectable.

---

## ARTIFACT 4 — Campaign Analytics & Timeline

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ARTIFACT 4 — ANALYTICS & TIMELINE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Campaign:           [sequence name]
Start date:         [start_date]
Total contacts:     [estimated pool or user-defined]

SEND SCHEDULE
─────────────
Ramp-up week 1     [date range]: [N]/day × 5 days = [N] contacts
Ramp-up week 2     [date range]: [N]/day × 5 days = [N] contacts
Ramp-up week 3     [date range]: [N]/day × 5 days = [N] contacts
Full capacity from [date]:       [N]/day

Email 1 fully sent by: [date — when last contact receives Email 1]
Email 2 fully sent by: [date]
Email 3 fully sent by: [date — = campaign end for aggressive]
Campaign end date:     [date]
Total duration:        [X weeks]

REPLY RATE FORECAST
───────────────────
Benchmark (cold B2B CXO outreach, no personalisation): 1–2%
Expected (with trigger signal personalisation):         3–6%
Optimistic (strong VP fit + warm geography):            7–10%

At [capacity]/day over [duration]:
  Total contacts reached:     [N]
  Expected replies (base 3%): [N]
  Expected replies (opt. 7%): [N]
  Estimated positive replies: [~30% of total replies = N]

ASSUMPTIONS
───────────
- Delivery rate: ~85% (after bounces, spam filters)
- Open rate not tracked (tracking OFF) — inferred from replies
- Reply rate is highest on Email 1 and Email 2; Email 3 (breakup) typically
  generates 20–30% of total replies
- Geography: [applied geography] — [tone note]
- VP fit assessment: [your qualitative assessment of this VP for this audience]

RISKS & RECOMMENDATIONS
────────────────────────
[Flag if: capacity > email account capacity, pool size too small to sustain
full duration, geography mismatch, Typeform URL missing before launch, etc.]
```

---

## Step 5 — Verification checklist

Before output, confirm:

- [ ] All 4 artifacts generated
- [ ] VP module loaded and all VP-specific inputs resolved or flagged
- [ ] Capacity ≤ available_emails × emails_per_account
- [ ] Sequence name follows ICP_ convention
- [ ] Email 1 opens with observation, not intro
- [ ] A/B subjects on every email
- [ ] CTA appears at correct touch point
- [ ] All dates calculated from start_date
- [ ] Ramp-up schedule includes actual dates
- [ ] Geography tone applied correctly

---

## Example invocation

```
value_proposition:  dev-team-satisfaction
leads_source:       apollo.io
capacity:           20/day
available_emails:   3
emails_per_account: 30
start_date:         2025-07-01
```

Defaults: campaign_type = aggressive, geography = Rich
VP-specific: typeform_url = [PLACEHOLDER]

Output: 4 artifacts as above.
