Campaign Manager
Turn strategy into a shipped campaign: brief, message house, calendar, assets, launch checklist, report. Senior bar: measurable KPIs, UTM hygiene, no invented ROAS.
AWS media templates + Montage tools
If the turn includes media references (runtime context MEDIA TEMPLATE (AWS) or MEDIA REFERENCES (AWS), up to 6 per turn):
- Use the local files as the brand / product visual base (family + tag + format).
- With several references, COMBINE them into one output: each plays the role of its family (style = look, character = face, color = palette, element = product, location = set, structure = layout, camera = lens, effects = finish, stock = subject). Never produce one output per reference.
- Pass the downloaded files to
generate_image (reference_images) / generate_video (reference_image), and keep the reference aspect ratio.
- The files are ALREADY materialized under
.navin/resources/media-templates/ (see the runtime context local paths). Never re-download the s3 urls yourself.
- If the AWS master is missing, the runtime auto-falls back to the official preview still (
<id>-preview.jpg): use that still as the reference. NEVER fabricate placeholder media (ffmpeg lavfi, solid colors, drawtext).
- If even the preview is unavailable, STOP the visuals that depend on it: tell the user the AWS object is missing, NEVER generate placeholder/substitute media (no ffmpeg color cards, no drawtext), and never assemble a deliverable from placeholders.
Marketing produces the campaign (offer, ICP, CTA, channels). For pixels and motion, call Montage generation tools: generate_image, generate_video, generate_music, generate_speech, montage(action=assemble|package|render|stock_search). Gate every final still with visual_qa before delivery. Never claim those tools are unavailable.
When to use
- Coordinated launches or always-on campaigns across channels
- 360° studio requests that need a plan + assets
When not to use
- Single ad creative with no plan (
ad-creative-generator)
- Pure brand voice definition (
brand-voice-manager)
Campaign brief (always first)
## Campaign: <name>
- Objective + KPI target (metric, baseline, target, window)
- Audience / persona
- Offer + CTA
- Key message / message house (promise, proof, CTA)
- Funnel role per channel (TOFU/MOFU/BOFU)
- Channels + why each exists
- Budget / resources (or "organic only")
- Dates: start / end
- Assets needed: [list with owners]
- Tracking: UTM plan + landing URL
Validate with:
python navin/skills/campaign-manager/scripts/check_campaign_brief.py marketing/campaigns/<name>-brief.md
Message house
| Layer |
Content |
| Promise |
one-sentence value |
| Pillars |
3 proof themes |
| Proof |
case, number, demo (real only) |
| CTA |
single primary action |
Workflow
- Write the brief; run the checker; get user validation when stakes are high.
- Build editorial calendar: channel × date × asset (
marketing/campaigns/<name>.md).
- Produce assets via specialists:
copywriting-agent, social-media-manager, ad-creative-generator, email-marketing, image/video tools. Pages use the Marketing super render stack (ui-ux-pro-max: Motion + Lenis + Embla + Lucide + Three.js / R3F / drei, --stack threejs, designed scene). Decks use presentation-designer (no extra npm, no WebGL). Never GSAP, Locomotive, Spline, Lottie spam, particles, Three.js wallpaper, Theatre, Barba.
- Pre-flight: UTMs, landing live, brand voice, legal claims, then
visual_qa
with placement sizes, ratio, safe zones and authoritative product/brand
references. Rework WARN/BLOCK and never auto-deliver BLOCK assets.
- During: note what to monitor (user supplies ad accounts/analytics); do not invent live metrics.
- Post-mortem within a week of end: results vs target (from user data), what worked, reusable assets.
Calendar format
| Date | Channel | Asset | Funnel | Status | Owner | UTM / Link | KPI |
Rules
- Every outbound link carries UTM (source/medium/campaign[/content]).
- No channel joins without a specific goal and KPI.
- Never invent CPC/ROAS/CVR; label estimates or require Ads/GA exports.
- Archive post-mortems for the next campaign.
Anti-patterns
- Channel laundry lists with no message house
- Assets without CTA or landing
- "Awareness" with no measurable proxy
1---2name: campaign-manager3description: Plan and run multichannel campaigns with an editorial calendar, asset tracking, and post-mortems. Use for any coordinated marketing push across channels.4---56# Campaign Manager78Turn strategy into a shipped campaign: brief, message house, calendar, assets, launch checklist, report. Senior bar: measurable KPIs, UTM hygiene, no invented ROAS.910## AWS media templates + Montage tools1112If the turn includes media references (runtime context `MEDIA TEMPLATE (AWS)` or `MEDIA REFERENCES (AWS)`, up to 6 per turn):1314- Use the local files as the brand / product visual base (family + tag + format).15- With several references, COMBINE them into one output: each plays the role of its family (style = look, character = face, color = palette, element = product, location = set, structure = layout, camera = lens, effects = finish, stock = subject). Never produce one output per reference.16- Pass the downloaded files to `generate_image` (`reference_images`) / `generate_video` (`reference_image`), and keep the reference aspect ratio.17- The files are ALREADY materialized under `.navin/resources/media-templates/` (see the runtime context local paths). Never re-download the s3 urls yourself.18- If the AWS master is missing, the runtime auto-falls back to the official preview still (`<id>-preview.jpg`): use that still as the reference. NEVER fabricate placeholder media (ffmpeg lavfi, solid colors, drawtext).19- If even the preview is unavailable, STOP the visuals that depend on it: tell the user the AWS object is missing, NEVER generate placeholder/substitute media (no ffmpeg color cards, no drawtext), and never assemble a deliverable from placeholders.2021Marketing produces the campaign (offer, ICP, CTA, channels). For pixels and motion, call Montage generation tools: `generate_image`, `generate_video`, `generate_music`, `generate_speech`, `montage(action=assemble|package|render|stock_search)`. Gate every final still with `visual_qa` before delivery. Never claim those tools are unavailable.2223## When to use2425- Coordinated launches or always-on campaigns across channels26- 360° studio requests that need a plan + assets2728## When not to use2930- Single ad creative with no plan (`ad-creative-generator`)31- Pure brand voice definition (`brand-voice-manager`)3233## Campaign brief (always first)3435```markdown36## Campaign: <name>37- Objective + KPI target (metric, baseline, target, window)38- Audience / persona39- Offer + CTA40- Key message / message house (promise, proof, CTA)41- Funnel role per channel (TOFU/MOFU/BOFU)42- Channels + why each exists43- Budget / resources (or "organic only")44- Dates: start / end45- Assets needed: [list with owners]46- Tracking: UTM plan + landing URL47```4849Validate with:5051```bash52python navin/skills/campaign-manager/scripts/check_campaign_brief.py marketing/campaigns/<name>-brief.md53```5455## Message house5657| Layer | Content |58|-------|---------|59| Promise | one-sentence value |60| Pillars | 3 proof themes |61| Proof | case, number, demo (real only) |62| CTA | single primary action |6364## Workflow65661. Write the brief; run the checker; get user validation when stakes are high.672. Build editorial calendar: channel × date × asset (`marketing/campaigns/<name>.md`).683. Produce assets via specialists: `copywriting-agent`, `social-media-manager`, `ad-creative-generator`, `email-marketing`, image/video tools. Pages use the Marketing super render stack (`ui-ux-pro-max`: Motion + Lenis + Embla + Lucide + Three.js / R3F / drei, `--stack threejs`, designed scene). Decks use `presentation-designer` (no extra npm, no WebGL). Never GSAP, Locomotive, Spline, Lottie spam, particles, Three.js wallpaper, Theatre, Barba.694. Pre-flight: UTMs, landing live, brand voice, legal claims, then `visual_qa`70 with placement sizes, ratio, safe zones and authoritative product/brand71 references. Rework WARN/BLOCK and never auto-deliver BLOCK assets.725. During: note what to monitor (user supplies ad accounts/analytics); do not invent live metrics.736. Post-mortem within a week of end: results vs target (from user data), what worked, reusable assets.7475## Calendar format7677```markdown78| Date | Channel | Asset | Funnel | Status | Owner | UTM / Link | KPI |79```8081## Rules8283- Every outbound link carries UTM (source/medium/campaign[/content]).84- No channel joins without a specific goal and KPI.85- Never invent CPC/ROAS/CVR; label estimates or require Ads/GA exports.86- Archive post-mortems for the next campaign.8788## Anti-patterns8990- Channel laundry lists with no message house91- Assets without CTA or landing92- "Awareness" with no measurable proxy