Navin

Marketing actions - 17 cards

Studio #/marketing has two surfaces and one book. Prefer the desk tool for anything the loop must measure.

Desk tool / HTTP / CLI

POST /api/marketing?action= or marketing tool or navin marketing <action>.

Heartbeat may only run the first three.

ActionRole
status / snapshotFull desk: brand, product, campaigns, content, creatives, analytics, loop (peek_loop), journal, KPIs, armed
watchSilent winner / competitor pass. Deduped. Optional notify
brandBrand Memory (company, tone, audience, colors, ...)
settingsexecution_mode, auto_publish (stored, never auto-publishes), winner_multiple, optional notify channels
understand / productScan workspace or accept a product brief. A live site URL still harvests.
harvestFetch a live URL, parse title / one-liner / headings / CTAs / colors / fonts / images / social links, apply to brand + creatives, then fill_from_site
positionPositioning + ICP from the product
researchCompetitive map. Accepts injected hits. Does not invent live traffic
competitorUpsert a named competitor
plan / campaign30-day (or days) campaign for a signup target. Upserts a matching draft / planned row
approveApprove campaign id, then fill content + creatives
contentChannel variants (harvest headings / CTAs + brand). Upserts per channel + campaign. Optional hook
creativeImage / video / audio / banner briefs (status=brief)
produce / generateWrite real assets. Optional pack=brand / pack=posts or creative_id. Skips video / speech without a provider
seoBuild keywords / pages from harvest + research. Optional measured ranking (keyword, url, position) via ingest_ranking
visionHuman PASS / WARN / BLOCK on a creative id
metrics / analyticsIngest traffic, leads, signups, revenue, by_content
improveScoreboard, winners, variants
launchLaunch kit: JSON plus Markdown files under launch/
pipelineUnderstand → position → research → plan → content → creative → launch
startArm the growth loop. Optional schedule, run_now, tz
stopPause
scheduleChange hours
tickOne cycle (force default true on HTTP)

Unknown actions return MarketingError. Invalid days / score return 400.

Chat cards (/campaign)

Each card still seeds /campaign with a precise spec. Persist the result with marketing action=plan / content / creative when the loop should own it.

Creative

ActionDelivers
Product imagesStudio packshot, lifestyle, social variants via image tools. Visual QA after generation.
Ad video15-30s script, storyboard, voiceover, generated video when a provider is set.
Open Montage studioBridge to #/montage. Never auto-publish.
Social media visualsSquare / vertical / landscape set.
Brand kitLogo directions, palette, type, voice.

Design

ActionDelivers
Poster / key visual4:5 hero plus 9:16 and 1:1 crops, gated by visual_qa.
Display banner packMaster declined into six ad-network sizes.
3D product pageInteractive orbit page with a still fallback.
Carousel design5-7 slide 1080x1350 narrative.

Content

ActionDelivers
Social postsLinkedIn, X, Instagram, TikTok script: hooks, hashtags, CTA.
Blog articleOutline, body, meta, promo snippets.
Email sequence5 emails with A/B subjects.
Landing page copyHero, benefits, proof, FAQ, CTA. Super render uses ui-ux-pro-max (designed 3D, not wallpaper).

Strategy

ActionDelivers
360 campaignMessage house, channel plan, then every deliverable.
Customer personaICP with sourced claims.
30-day content planWeekly themes mapped to funnel stages.
Competitor analysisPublic pages only. Store names with marketing action=competitor.

Never invent ROAS / CPC. Label estimates. Paid-account reads go to #/ads.