Strategic marketing planning, growth frameworks (AARRR, ICE, RICE), positioning, OKRs, campaign planning, content pillars, and market analysis
Use this skill when the user asks to:
MANDATORY: Before generating ANY strategy content, load the brand voice configuration.
from brand_voice.config import load_brand_voice
brand = load_brand_voice()
All strategy outputs must align with brand.tone, respect brand.avoid terms, and pass anti_slop validation. Strategy documents that ignore brand voice are invalid.
The AARRR framework (Dave McClure, 500 Startups) maps the full customer lifecycle into 5 measurable stages. Use this as the primary diagnostic framework when a user needs to understand where their growth is leaking.
| Stage | Question | Example Metrics | |-------|----------|-----------------| | Acquisition | How do users find us? | Visits, signups, CAC, channel attribution | | Activation | Do they have a great first experience? | Onboarding completion, time-to-value, aha-moment rate | | Retention | Do they come back? | DAU/MAU, churn rate, cohort retention curves | | Revenue | Do they pay? | ARPU, LTV, conversion rate, MRR/ARR | | Referral | Do they tell others? | NPS, viral coefficient (k-factor), referral rate |
How to apply AARRR:
Stage-specific playbooks:
ICE (Sean Ellis) is a lightweight scoring model for rapid prioritization of growth experiments.
| Dimension | Score 1-10 | Question | |-----------|-----------|----------| | Impact | How much will this move the target metric? | 1 = negligible, 10 = 2x improvement | | Confidence | How sure are we this will work? | 1 = wild guess, 10 = proven playbook | | Ease | How easy is it to implement? | 1 = months of eng work, 10 = deploy today |
ICE Score = (Impact + Confidence + Ease) / 3
When to use ICE: For backlogs of 10-30 ideas that need quick ranking. Not suitable for strategic decisions requiring deeper analysis.
Pitfalls to avoid:
RICE (Intercom) adds Reach to create a more rigorous prioritization model.
| Dimension | Definition | Unit | |-----------|-----------|------| | Reach | How many people will this affect per time period? | Users/quarter | | Impact | How much will each person be affected? | 0.25 (minimal) to 3 (massive) | | Confidence | How confident are we in estimates? | 50%-100% | | Effort | How much work is required? | Person-months |
RICE Score = (Reach × Impact × Confidence) / Effort
When to use RICE: For roadmap prioritization with 5+ competing initiatives. Best when you have data on Reach.
Confidence calibration:
Category design (Play Bigger methodology) means defining and owning a new market category rather than competing in an existing one.
Steps:
When NOT to use: If you're entering an established category with a better/cheaper product, compete on positioning within that category instead.
JTBD (Clayton Christensen, Tony Ulwick) reframes positioning around the job the customer is hiring your product to do.
Job statement formula:
When [situation], I want to [motivation], so I can [expected outcome].
Example:
When I'm planning next quarter's content, I want to quickly generate
platform-specific posts, so I can maintain consistent presence without
spending 20 hours per week on content.
Applying JTBD to positioning:
Use this structured canvas to define positioning:
positioning:
target_customer: "[Specific persona with problem]"
category: "[Market category you compete in or create]"
key_differentiator: "[The one thing you do uniquely well]"
proof_points:
- "[Data point or case study 1]"
- "[Data point or case study 2]"
- "[Data point or case study 3]"
competitive_alternative: "[What customers use today instead]"
unique_value: "[The transformation you enable]"
Content pillars are 3-5 core themes that all content maps back to. They ensure consistency, reduce content planning overhead, and build topical authority.
Step 1: Audit your expertise zones List everything your team/product knows deeply. Group into 5-8 clusters.
Step 2: Map to audience jobs For each cluster, answer: "Does my audience actively seek information about this?" Eliminate clusters with no audience demand.
Step 3: Narrow to 3-5 pillars Criteria for a strong pillar:
Step 4: Define sub-topics per pillar Each pillar should have 10-20 sub-topics. These become individual content pieces.
Step 5: Map pillars to funnel stages
Pillar A → TOFU (awareness) + MOFU (consideration)
Pillar B → MOFU (consideration) + BOFU (decision)
Pillar C → TOFU (awareness)
pillar:
name: "[Pillar Name]"
description: "[1-2 sentence description]"
target_persona: "[Primary persona]"
funnel_stages: [awareness, consideration, decision]
sub_topics:
- name: "[Sub-topic]"
format: [blog, video, social, newsletter]
priority: [high, medium, low]
search_intent: [informational, navigational, transactional]
kpis:
- metric: "[e.g., organic traffic to pillar pages]"
target: "[e.g., 5,000 visits/month within 6 months]"
Every campaign should start with a brief that answers these questions:
campaign:
name: "[Campaign Name]"
objective: "[Single clear objective — use SMART format]"
target_audience:
primary: "[Persona with demographics and psychographics]"
secondary: "[If applicable]"
key_message: "[One sentence — what should the audience think/feel/do?]"
channels:
- channel: "[e.g., LinkedIn]"
role: "[e.g., thought leadership, lead gen]"
budget: "[If applicable]"
content_types: ["posts", "articles", "ads"]
timeline:
start: "YYYY-MM-DD"
end: "YYYY-MM-DD"
milestones:
- date: "YYYY-MM-DD"
deliverable: "[What ships]"
success_metrics:
primary: "[The ONE metric that defines success]"
secondary:
- "[Supporting metric 1]"
- "[Supporting metric 2]"
budget:
total: "[Amount]"
breakdown:
- category: "[e.g., paid ads, tools, freelancers]"
amount: "[Amount]"
risks:
- risk: "[What could go wrong]"
mitigation: "[How to prevent or respond]"
| Type | Duration | Focus | Example | |------|----------|-------|---------| | Launch | 2-4 weeks | Awareness + Activation | Product launch, feature release | | Evergreen | Ongoing | SEO + Content authority | Blog series, resource hub | | Seasonal | 1-2 weeks | Relevance + Urgency | Black Friday, industry events | | Nurture | 4-8 weeks | Education + Conversion | Email sequence, webinar series | | Referral | Ongoing | Viral + Retention | Referral program, community |
Step 1: Identify competitors
Step 2: Define comparison dimensions Choose 5-8 dimensions that matter to your target buyer. Examples:
Step 3: Score honestly Rate each competitor 1-5 on each dimension. Be honest — inflating your score undermines the exercise.
Step 4: Find your wedge The wedge is the dimension where you score highest AND competitors score lowest. This becomes your primary positioning angle.
competitive_matrix:
dimensions:
- name: "[Dimension]"
weight: [1-5] # How important to buyer
competitors:
- name: "[Competitor]"
scores:
"[Dimension]": [1-5]
positioning: "[Their main claim]"
your_wedge: "[Dimension where you win]"
messaging_angle: "[How to frame your advantage]"
Objective: Qualitative, inspirational, time-bound. Key Results: Quantitative, measurable, challenging but achievable (70% hit rate target).
Growth-stage OKR:
O: Establish [Brand] as the go-to solution for [Job-to-be-Done]
KR1: Grow organic traffic from [X] to [Y] monthly visits
KR2: Achieve [X]% trial-to-paid conversion rate (from [current]%)
KR3: Reach [X] qualified leads per month via content marketing
Retention-focused OKR:
O: Build a community of engaged users who advocate for [Brand]
KR1: Increase NPS from [X] to [Y]
KR2: Grow referral-sourced signups from [X]% to [Y]% of total
KR3: Achieve [X]% monthly active rate among paid users
Brand-building OKR:
O: Own the [Category] conversation in [Industry]
KR1: Publish [X] thought leadership pieces with [Y]+ average shares
KR2: Secure [X] media mentions or podcast appearances
KR3: Grow LinkedIn followers from [X] to [Y] with [Z]%+ engagement rate
| Level | Definition | Method | |-------|-----------|--------| | TAM (Total Addressable Market) | Total revenue opportunity if you captured 100% of the market | Top-down: industry reports. Bottom-up: # of potential customers × annual value | | SAM (Serviceable Addressable Market) | Portion of TAM you can reach with your current product and channels | TAM filtered by geography, segment, and product fit | | SOM (Serviceable Obtainable Market) | Realistic share you can capture in 1-3 years | SAM × realistic market share % based on competitive position |
tam_sam_som:
tam:
method: "[top-down or bottom-up]"
total_potential_customers: "[Number]"
average_annual_value: "[Amount per customer]"
total: "[TAM = customers × value]"
source: "[Where data came from]"
sam:
geographic_filter: "[Markets you can serve]"
segment_filter: "[Customer segments you target]"
product_fit_filter: "[Who your product actually serves]"
total: "[SAM after filters]"
som:
market_share_target: "[Realistic % — typically 1-5% for startups]"
timeline: "[1-3 years]"
total: "[SOM = SAM × share %]"
assumptions:
- "[Key assumption 1]"
- "[Key assumption 2]"
All strategy outputs must follow this format:
---
type: strategy
subtype: "[campaign | positioning | growth-model | okr | competitive-analysis | market-sizing]"
status: draft
date: "YYYY-MM-DD"
author: marketing-strategy
brand: "[from brand-voice.yaml]"
tags:
- "[relevant tags]"
---
Before finalizing any strategy document:
brand-voice.yaml → anti_slop.banned_phrasesoutput_contract:
format: markdown
required_sections:
- frontmatter:
type: string # "strategy"
subtype: string # specific strategy type
status: string # "draft" | "review" | "approved"
date: string # ISO 8601
author: string # "marketing-strategy"
- executive_summary:
max_words: 150
must_include: [objective, approach, expected_outcome]
- analysis:
frameworks_used: list # which frameworks were applied
data_sources: list # where data came from
- recommendations:
format: prioritized_list
each_item:
- action: string
- rationale: string
- priority: string # "P0" | "P1" | "P2"
- effort: string # "low" | "medium" | "high"
- expected_impact: string
- success_metrics:
format: table
columns: [metric, current, target, timeline]
- next_steps:
format: checklist
max_items: 7
validation:
anti_slop: true # must pass anti-slop scan
brand_voice: true # must align with brand-voice.yaml
min_word_count: 500
max_word_count: 5000