campaign-brief
Produces a campaign brief that an empowered team can execute without needing a follow-up meeting. Every brief is anchored to one phase of the customer journey (Before/During/After) using Allan Dib's 1-Page Marketing Plan. Phase determines channels, assets, and success metrics - not the other way around.
When to use
- "Plan a campaign for our Q3 launch"
- "Build a GTM plan for "
- "Brief a demand gen campaign targeting CMOs"
- "Write the launch plan for the integration with X"
- "We need a marketing plan for <event/feature/audience>"
Framework: Before/During/After (Allan Dib, The 1-Page Marketing Plan)
Every campaign primarily serves one phase. Force the choice before building anything else.
BEFORE - Prospects who don't know you exist.
- Goal: get strangers to raise their hand
- Focus: reach, awareness, USP clarity
- Channels: paid social, SEO, PR, cold outreach, events, partner content
- Success metrics: reach, impressions, hand-raisers (leads generated), CPL
DURING - Leads who know you but haven't bought.
- Goal: convert interest into purchase
- Focus: lead capture, nurture, trust-building, sales conversion
- Channels: email sequences, retargeting, demos, webinars, case studies
- Success metrics: MQLs, SQLs, demo bookings, trial starts, conversion rate
AFTER - Customers who have already bought.
- Goal: create raving fans who expand and refer
- Focus: world-class experience, upsell, cross-sell, referrals
- Channels: customer comms, CSM touchpoints, loyalty programs, referral incentives
- Success metrics: NPS, expansion revenue, referrals generated, churn rate, LTV
A campaign cannot serve all 3 phases at once. If the user wants all 3, split it into 3 campaigns.
Inputs needed
Walk the user through these one at a time. Do not skip.
- Campaign phase: Before, During, or After? If the user isn't sure, ask: "Are you trying to reach new people, convert known leads, or grow existing customers?" Force a single answer.
- Campaign goal: one sentence, tied to the phase.
- Primary KPI: the one number that defines success. With a target.
- Audience: which persona from
knowledge/icp/personas.md. If multiple, force-rank.
- Window: start date, end date (DD-MM-YYYY).
- Budget: total, or "no paid budget".
- Constraints: legal, brand, channel restrictions, dependencies on other teams.
- What's already decided: any creative, channel, or partner choices the user has locked in.
Process
Load context. Read all reads: files. If knowledge/icp/personas.md is missing, stop and run /brand-context.
Identify the phase. Before generating any brief content, confirm the Before/During/After phase with the user. State it explicitly: "This is a BEFORE campaign. The goal is to generate hand-raisers from people who don't yet know us."
Check knowledge/learnings.md for any relevant past campaign retros. Reference them in the brief.
Generate the brief in this format:
# <Campaign name>
**Phase**: BEFORE | DURING | AFTER (Allan Dib framework)
**Phase goal**: <get hand-raisers | convert leads | grow customers>
**Campaign goal**: <one sentence, single-objective>
**Primary KPI**: <metric> -> target <number> by <DD-MM-YYYY>
**Window**: DD-MM-YYYY to DD-MM-YYYY
**Budget**: $<amount> or <none>
**Owner**: <person, ask the user>
**Status**: draft
## Audience
- **Primary persona**: <from knowledge/icp/>
- **Top 3 pains we are speaking to**:
1. ...
2. ...
3. ...
- **Where they are**: channels, communities, publications
## Message
- **Core message** (one sentence the audience should remember):
- **Proof points** (3 max). Each must be lifted from `knowledge/company.md` verified proof points
with the source named inline. If fewer than three verified proof points exist, ship fewer: write
[NO VERIFIED PROOF POINT] and move it to Open questions. Never generate a proof point -
these flow straight into /linkedin-post and /landing-page-writer and become public claims:
1. ...
2. ...
3. ...
- What we are NOT saying: explicit anti-messages to avoid scope creep
Strategy
- Why now (timing rationale):
- Differentiation vs (how this plays where we win):
- What we learned from (from knowledge/learnings.md):
Channel mix
Channels must match the campaign phase. BEFORE = reach channels. DURING = conversion channels. AFTER = retention channels.
| Channel |
Role |
Asset count |
Spend |
Owner |
| LinkedIn organic |
Awareness |
8 posts |
$0 |
|
| LinkedIn ads |
Demand |
3 ad sets |
$X |
|
| Email nurture |
Conversion |
5-email sequence |
$0 |
|
| ... |
|
|
|
|
Assets needed
Group by team. Be specific.
- Content: 1 pillar article (1800w), 8 LinkedIn posts, 3 quote graphics
- Design: 1 landing page hero image, 3 ad creatives, 1 email header
- Video: 1 explainer (60s)
- Sales enablement: 1 one-pager, 1 deck update
- Web: 1 landing page
Timeline
Working backward from launch date.
| Week |
Milestone |
Owner |
| -4 |
Brief approved, assets briefed |
|
| -3 |
First drafts in review |
|
| -2 |
Final assets, landing page live |
|
| -1 |
Soft launch, internal alignment |
|
| 0 |
Launch |
|
| +1 |
First metrics review |
|
| +4 |
Campaign retro |
|
Success metrics
Phase-specific. Do not mix metrics from other phases.
BEFORE campaigns:
- Primary: <reach | CPL | hand-raisers generated> =
- Secondary: impressions, CTR, email sign-ups
- Leading indicators (visible by week 1): ad CTR, organic post reach
- Lagging indicators (visible by week 4): total leads captured, CPL
DURING campaigns:
- Primary: <MQLs | SQLs | demo bookings | trials> =
- Secondary: email open rate, demo-to-close rate
- Leading indicators (visible by week 1): email opens, landing page CVR
- Lagging indicators (visible by week 4): total SQLs, pipeline generated
AFTER campaigns:
- Primary: <NPS | referrals | expansion revenue | churn rate> =
- Secondary: product usage, upsell conversion, CSAT
- Leading indicators (visible by week 1): feature adoption, support tickets
- Lagging indicators (visible by week 4): NPS score, referrals, expansion ARR
Risks and mitigations
Open questions
- List anything you do not have an answer to. Do not invent.
Approvals
5. **Self-check**:
- Phase is declared and all elements serve that phase
- Channels match the phase (no conversion channels in a BEFORE campaign, no awareness channels in an AFTER campaign)
- Single primary KPI - not three
- Specific persona, not "marketers"
- Working-backward timeline, not aspirational
- Concrete assets list with counts
- References at least one prior learning if `knowledge/learnings.md` exists
- Phase-specific success metrics only
6. **Save** to `output/campaign-brief/<DD-MM-YYYY>-<slug>.md` with frontmatter:
```yaml
---
format: campaign-brief
campaign: <name>
phase: <before|during|after>
goal: <awareness|demand|expansion|retention|recruitment>
start: DD-MM-YYYY
end: DD-MM-YYYY
primary-kpi: <metric>
target: <number>
budget: <amount or none>
created: DD-MM-YYYY
---
- Offer next actions:
- Generate the asset list as individual skill calls (
/linkedin-post x 8, /landing-page-writer x 1, etc.)
- Build the launch deck (
/ppt-maker)
- Remind the user: "Set a calendar reminder to run
/retro on [launch date + 28 days] to capture learnings."
Rules
- Declare the phase before writing a single line of the brief. Phase determines everything else.
- One primary KPI. If the user names three, force them to rank and pick one.
- Channel mix must match the phase. A BEFORE campaign with a demo CTA is a contradiction. Call it out.
- Never copy a previous campaign brief without reading
knowledge/learnings.md first. Past failures should change current plans.
- If budget is zero, do not propose paid channels. Reallocate to organic.
- Timeline must be working backward from launch. If the user gives a launch date, derive milestones from it. If not, ask.
- If the user wants to run a BEFORE and DURING campaign simultaneously, produce two separate briefs. Mixed-phase campaigns are unfocused campaigns.
Handling [UNVERIFIED] and [NEEDS INPUT] tags
brand-context tags any number the user was unsure of as [UNVERIFIED], and several skills tag
gaps as [NEEDS INPUT]. Those tags are a contract, and it only works if this skill honours it.
- Carry the tag forward. If a baseline, benchmark or proof point arrives tagged, every figure
derived from it is tagged too. A target built on an unverified baseline is an unverified target.
- Never silently promote. Do not drop the tag because the number looked confident in the
source file.
- Say it in the output. List every tagged input in its own line near the top, so a reader
knows which numbers are measured and which are estimates before they act on them.
- A decision that would change if the tagged number were wrong must say so explicitly.
The Before / During / After model (Allan Dib)
Allan Dib's The 1-Page Marketing Plan splits a campaign into three phases with different jobs,
different audiences and different metrics. Most failed campaigns are a During-phase tactic aimed at
a Before-phase audience.
| Phase |
Audience |
Job |
Primary metric |
Typical channels |
| Before |
They do not know you |
Earn attention and permission |
Reach, new subscribers |
Content, paid awareness, PR, partnerships |
| During |
They know you, have not bought |
Convert interest into a decision |
Conversion rate, pipeline |
Email, retargeting, demos, sales enablement |
| After |
They bought |
Retain, expand, get referrals |
Retention, expansion, referral rate |
Onboarding, community, case studies |
One campaign, one phase. A brief covering all three is a strategy document, not a campaign, and
it produces channel plans nobody can execute. Pick the phase, then choose channels that serve it.
Decision thresholds
| Signal |
Threshold |
What to do |
| Phases in scope |
More than 1 |
Split into separate briefs, sequenced |
| Primary KPIs |
More than 1 |
Pick one. The rest are supporting metrics |
| Verified proof points |
Fewer than 3 |
Ship fewer and move the gap to Open questions. Never generate one |
| Baseline for the target |
Missing or [UNVERIFIED] |
Tag the target, and state which decisions change if the baseline is wrong |
| Channels planned |
More than 4 for one phase |
Cut. Thin coverage across many channels beats nothing, but not by much |
Related skills
/brand-context owns knowledge/company.md, the source of verified proof points
/social-calendar turns the content line of this brief into a dated schedule
/kpi-review reads the results against the target set here
/retro runs after the campaign and writes reusable learnings back
/growth-experiment when a channel in the plan is unproven for this audience
What this skill cannot know
- Whether the team has capacity to produce the assets this brief plans. Ask before finalising
- Whether the budget figure is approved or aspirational
- Whether a channel worked for this audience before, unless it is in
knowledge/learnings.md
- Whether the target derived from an
[UNVERIFIED] baseline is reachable
1---2name: campaign-brief3description: Plan a marketing campaign end-to-end using Allan Dib's Before/During/After framework (The 1-Page Marketing Plan). Produces a phase-specific campaign brief with goal, audience, message, channels, assets, timeline, budget, and success metrics. Use when the user asks to plan a campaign, brief a campaign, "we need a campaign for X", launch plan, GTM plan, marketing plan for <product>, demand gen plan, or any multi-channel marketing initiative. Reads ICP, services, and KPIs from knowledge/. For a full quarterly strategy rather than one campaign, see marketing-plan scope in positioning-doc and kpi-review. For the content schedule inside the campaign, see social-calendar. For the post-campaign review, see retro.4---56# campaign-brief78Produces a campaign brief that an empowered team can execute without needing a follow-up meeting. Every brief is anchored to one phase of the customer journey (Before/During/After) using Allan Dib's 1-Page Marketing Plan. Phase determines channels, assets, and success metrics - not the other way around.910## When to use1112- "Plan a campaign for our Q3 launch"13- "Build a GTM plan for <product>"14- "Brief a demand gen campaign targeting CMOs"15- "Write the launch plan for the integration with X"16- "We need a marketing plan for <event/feature/audience>"1718## Framework: Before/During/After (Allan Dib, The 1-Page Marketing Plan)1920Every campaign primarily serves one phase. Force the choice before building anything else.2122**BEFORE** - Prospects who don't know you exist.23- Goal: get strangers to raise their hand24- Focus: reach, awareness, USP clarity25- Channels: paid social, SEO, PR, cold outreach, events, partner content26- Success metrics: reach, impressions, hand-raisers (leads generated), CPL2728**DURING** - Leads who know you but haven't bought.29- Goal: convert interest into purchase30- Focus: lead capture, nurture, trust-building, sales conversion31- Channels: email sequences, retargeting, demos, webinars, case studies32- Success metrics: MQLs, SQLs, demo bookings, trial starts, conversion rate3334**AFTER** - Customers who have already bought.35- Goal: create raving fans who expand and refer36- Focus: world-class experience, upsell, cross-sell, referrals37- Channels: customer comms, CSM touchpoints, loyalty programs, referral incentives38- Success metrics: NPS, expansion revenue, referrals generated, churn rate, LTV3940A campaign cannot serve all 3 phases at once. If the user wants all 3, split it into 3 campaigns.4142## Inputs needed4344Walk the user through these one at a time. Do not skip.45461. **Campaign phase**: Before, During, or After? If the user isn't sure, ask: "Are you trying to reach new people, convert known leads, or grow existing customers?" Force a single answer.472. **Campaign goal**: one sentence, tied to the phase.483. **Primary KPI**: the one number that defines success. With a target.494. **Audience**: which persona from `knowledge/icp/personas.md`. If multiple, force-rank.505. **Window**: start date, end date (DD-MM-YYYY).516. **Budget**: total, or "no paid budget".527. **Constraints**: legal, brand, channel restrictions, dependencies on other teams.538. **What's already decided**: any creative, channel, or partner choices the user has locked in.5455## Process56571. **Load context.** Read all `reads:` files. If `knowledge/icp/personas.md` is missing, stop and run `/brand-context`.58592. **Identify the phase.** Before generating any brief content, confirm the Before/During/After phase with the user. State it explicitly: "This is a BEFORE campaign. The goal is to generate hand-raisers from people who don't yet know us."60613. **Check `knowledge/learnings.md`** for any relevant past campaign retros. Reference them in the brief.62634. **Generate the brief in this format**:6465 ```66 # <Campaign name>6768 **Phase**: BEFORE | DURING | AFTER (Allan Dib framework)69 **Phase goal**: <get hand-raisers | convert leads | grow customers>70 **Campaign goal**: <one sentence, single-objective>71 **Primary KPI**: <metric> -> target <number> by <DD-MM-YYYY>72 **Window**: DD-MM-YYYY to DD-MM-YYYY73 **Budget**: $<amount> or <none>74 **Owner**: <person, ask the user>75 **Status**: draft7677 ## Audience78 - **Primary persona**: <from knowledge/icp/>79 - **Top 3 pains we are speaking to**:80 1. ...81 2. ...82 3. ...83 - **Where they are**: channels, communities, publications8485 ## Message86 - **Core message** (one sentence the audience should remember):87 - **Proof points** (3 max). Each must be lifted from `knowledge/company.md` verified proof points88 with the source named inline. If fewer than three verified proof points exist, ship fewer: write89 `[NO VERIFIED PROOF POINT]` and move it to Open questions. **Never generate a proof point** -90 these flow straight into `/linkedin-post` and `/landing-page-writer` and become public claims:91 1. ...92 2. ...93 3. ...94 - **What we are NOT saying**: explicit anti-messages to avoid scope creep9596 ## Strategy97 - **Why now** (timing rationale):98 - **Differentiation vs <competitor>** (how this plays where we win):99 - **What we learned from <past campaign>** (from knowledge/learnings.md):100101 ## Channel mix102 Channels must match the campaign phase. BEFORE = reach channels. DURING = conversion channels. AFTER = retention channels.103104 | Channel | Role | Asset count | Spend | Owner |105 |---|---|---|---|---|106 | LinkedIn organic | Awareness | 8 posts | $0 | <name> |107 | LinkedIn ads | Demand | 3 ad sets | $X | <name> |108 | Email nurture | Conversion | 5-email sequence | $0 | <name> |109 | ... | | | | |110111 ## Assets needed112 Group by team. Be specific.113 - **Content**: 1 pillar article (1800w), 8 LinkedIn posts, 3 quote graphics114 - **Design**: 1 landing page hero image, 3 ad creatives, 1 email header115 - **Video**: 1 explainer (60s)116 - **Sales enablement**: 1 one-pager, 1 deck update117 - **Web**: 1 landing page118119 ## Timeline120 Working backward from launch date.121 | Week | Milestone | Owner |122 |---|---|---|123 | -4 | Brief approved, assets briefed | |124 | -3 | First drafts in review | |125 | -2 | Final assets, landing page live | |126 | -1 | Soft launch, internal alignment | |127 | 0 | Launch | |128 | +1 | First metrics review | |129 | +4 | Campaign retro | |130131 ## Success metrics132 Phase-specific. Do not mix metrics from other phases.133134 **BEFORE campaigns**:135 - **Primary**: <reach | CPL | hand-raisers generated> = <target>136 - **Secondary**: impressions, CTR, email sign-ups137 - **Leading indicators** (visible by week 1): ad CTR, organic post reach138 - **Lagging indicators** (visible by week 4): total leads captured, CPL139140 **DURING campaigns**:141 - **Primary**: <MQLs | SQLs | demo bookings | trials> = <target>142 - **Secondary**: email open rate, demo-to-close rate143 - **Leading indicators** (visible by week 1): email opens, landing page CVR144 - **Lagging indicators** (visible by week 4): total SQLs, pipeline generated145146 **AFTER campaigns**:147 - **Primary**: <NPS | referrals | expansion revenue | churn rate> = <target>148 - **Secondary**: product usage, upsell conversion, CSAT149 - **Leading indicators** (visible by week 1): feature adoption, support tickets150 - **Lagging indicators** (visible by week 4): NPS score, referrals, expansion ARR151152 ## Risks and mitigations153 - **Risk**: <what could go wrong>154 **Mitigation**: <what we do about it>155156 ## Open questions157 - List anything you do not have an answer to. Do not invent.158159 ## Approvals160 - [ ] Marketing lead161 - [ ] Product162 - [ ] Sales163 - [ ] Legal (if applicable)164 ```1651665. **Self-check**:167 - Phase is declared and all elements serve that phase168 - Channels match the phase (no conversion channels in a BEFORE campaign, no awareness channels in an AFTER campaign)169 - Single primary KPI - not three170 - Specific persona, not "marketers"171 - Working-backward timeline, not aspirational172 - Concrete assets list with counts173 - References at least one prior learning if `knowledge/learnings.md` exists174 - Phase-specific success metrics only1751766. **Save** to `output/campaign-brief/<DD-MM-YYYY>-<slug>.md` with frontmatter:177 ```yaml178 ---179 format: campaign-brief180 campaign: <name>181 phase: <before|during|after>182 goal: <awareness|demand|expansion|retention|recruitment>183 start: DD-MM-YYYY184 end: DD-MM-YYYY185 primary-kpi: <metric>186 target: <number>187 budget: <amount or none>188 created: DD-MM-YYYY189 ---190 ```1911927. **Offer next actions**:193 - Generate the asset list as individual skill calls (`/linkedin-post` x 8, `/landing-page-writer` x 1, etc.)194 - Build the launch deck (`/ppt-maker`)195 - Remind the user: "Set a calendar reminder to run `/retro` on [launch date + 28 days] to capture learnings."196197## Rules198199- Declare the phase before writing a single line of the brief. Phase determines everything else.200- One primary KPI. If the user names three, force them to rank and pick one.201- Channel mix must match the phase. A BEFORE campaign with a demo CTA is a contradiction. Call it out.202- Never copy a previous campaign brief without reading `knowledge/learnings.md` first. Past failures should change current plans.203- If budget is zero, do not propose paid channels. Reallocate to organic.204- Timeline must be working backward from launch. If the user gives a launch date, derive milestones from it. If not, ask.205- If the user wants to run a BEFORE and DURING campaign simultaneously, produce two separate briefs. Mixed-phase campaigns are unfocused campaigns.206207## Handling [UNVERIFIED] and [NEEDS INPUT] tags208209`brand-context` tags any number the user was unsure of as `[UNVERIFIED]`, and several skills tag210gaps as `[NEEDS INPUT]`. Those tags are a contract, and it only works if this skill honours it.2112121. **Carry the tag forward.** If a baseline, benchmark or proof point arrives tagged, every figure213 derived from it is tagged too. A target built on an unverified baseline is an unverified target.2142. **Never silently promote.** Do not drop the tag because the number looked confident in the215 source file.2163. **Say it in the output.** List every tagged input in its own line near the top, so a reader217 knows which numbers are measured and which are estimates before they act on them.2184. **A decision that would change if the tagged number were wrong must say so explicitly.**219220## The Before / During / After model (Allan Dib)221222Allan Dib's *The 1-Page Marketing Plan* splits a campaign into three phases with different jobs,223different audiences and different metrics. Most failed campaigns are a During-phase tactic aimed at224a Before-phase audience.225226| Phase | Audience | Job | Primary metric | Typical channels |227|---|---|---|---|---|228| **Before** | They do not know you | Earn attention and permission | Reach, new subscribers | Content, paid awareness, PR, partnerships |229| **During** | They know you, have not bought | Convert interest into a decision | Conversion rate, pipeline | Email, retargeting, demos, sales enablement |230| **After** | They bought | Retain, expand, get referrals | Retention, expansion, referral rate | Onboarding, community, case studies |231232**One campaign, one phase.** A brief covering all three is a strategy document, not a campaign, and233it produces channel plans nobody can execute. Pick the phase, then choose channels that serve it.234235## Decision thresholds236237| Signal | Threshold | What to do |238|---|---|---|239| Phases in scope | More than 1 | Split into separate briefs, sequenced |240| Primary KPIs | More than 1 | Pick one. The rest are supporting metrics |241| Verified proof points | Fewer than 3 | Ship fewer and move the gap to Open questions. Never generate one |242| Baseline for the target | Missing or `[UNVERIFIED]` | Tag the target, and state which decisions change if the baseline is wrong |243| Channels planned | More than 4 for one phase | Cut. Thin coverage across many channels beats nothing, but not by much |244245## Related skills246247- `/brand-context` owns `knowledge/company.md`, the source of verified proof points248- `/social-calendar` turns the content line of this brief into a dated schedule249- `/kpi-review` reads the results against the target set here250- `/retro` runs after the campaign and writes reusable learnings back251- `/growth-experiment` when a channel in the plan is unproven for this audience252253## What this skill cannot know254255- Whether the team has capacity to produce the assets this brief plans. Ask before finalising256- Whether the budget figure is approved or aspirational257- Whether a channel worked for this audience before, unless it is in `knowledge/learnings.md`258- Whether the target derived from an `[UNVERIFIED]` baseline is reachable