DreamBorn Marketing Agent Team — Design Spec
DreamBorn Marketing Agent Team — Design Spec Date: 2026 04 27 Branch: feature/marketing agents Status: Design in progress — decisions being finalised in session 2026 04 27 Overview A five agent marketing team that runs on the Bezel platform and produces DreamBorn's public content. The team demonstrates the platform's core value prop — parallel orchestration,...
Date: 2026-04-27 Branch: feature/marketing-agents Status: Design in progress — decisions being finalised in session 2026-04-27
---
A five-agent marketing team that runs on the Bezel platform and produces DreamBorn's public content. The team demonstrates the platform's core value prop — parallel orchestration, human exec gates, agent-authored output — while doing real business work.
The agents are not ghostwriters. They are credited authors. "Written by Harper, DreamBorn Content Agent" is the product demo.
Content territory: Orchestration at scale, AI agents, distributed ledgers, consensus — the problems DreamBorn solves. Show don't tell. DreamBorn.ai is what an AI-native company looks like, not a description of one.
Primary audience: Business builders, founders, and operators who want to understand what AI-native means in practice. Not analysts. People building things.
---
Weekly output: 14 pieces tied to a single theme Nova sets from BezelBrain.
| Channel | Volume | Audience | Voice | Account | |---------|--------|----------|-------|---------| | Blog (dreamborn.ai) | 1/week | Corporate, AI-native companies | Founder narrative, principled | DreamBorn | | Substack | 3/week | Agent builders, Bezel audience | Technical, educational, honest | TBD (DreamBorn or Agentrophy) | | LinkedIn | 5/week | Manufacturers, distributors | Professional, use-case driven | Justin personal | | X/Twitter | 5/week (1 thread + 4 standalones) | Founders, builders | Raw, first-person, observational | Justin personal |
Weekly theme: Nova proposes from BezelBrain. Justin can override at exec gate. Everything in the week connects back to it.
Publishing cadence: Always one week ahead. Nova plans on Monday for the *following* week. Execution happens this week; content publishes next week. Nothing rushes to publish.
Batch / inventory mode: Nova accepts a weeks_ahead param (default 1). In a power session, set to 4 — Nova plans 4 themes + 56 pieces, Engine dispatches all tasks simultaneously, agents run in parallel. The platform handles the volume natively. Nova checks inventory depth first — if a channel already has 2 weeks banked, she skips it and fills gaps only.
Editorial calendar (cockpit): A daily calendar view in the cockpit Marketing tab (V1). Rows = channels, columns = days (current week + 3 weeks ahead). Cell states: green (approved/ready), yellow (draft in progress), empty (gap). One glance shows where content is thin.
- Blog: 800–1200 words. Opens with a real incident. Builds to a principle. Ends with what it means for companies. Justin's voice, Harper's structure.
- Substack: 600–900 words each. Technical but readable. For people who have Claude Code open and want to understand the architecture. Concrete — real config, real outputs.
- LinkedIn: 150–250 words. One-liner hook. Manufacturer/distributor frame. Ends with a question or sharp observation. Sounds like a person.
- X: Short. Raw. What you'd say to another founder over coffee. Not a polished take — the thing you just figured out.
- Generic AI takes ("AI is transforming industries…")
- Explaining what agents are instead of showing what they do
- LinkedIn posts that are just blog excerpts with line breaks
- Substack articles that are 50% disclaimers and hedging
Agents are the primary actors in this system. They index, retrieve, generate, evaluate, and route. Humans set direction and approve outcomes. No step in the pipeline requires a human to do mechanical work — only judgment calls belong at the exec gate.
- Nova evaluates topic freshness and content gaps before proposing — she doesn't just pick topics
- Harper builds on previous posts, creates callbacks, develops series over time
- Rosa chooses the right template for the content and generates variants before routing
- Ivy runs a semantic quality check before surfacing to Justin — the gate is for real decisions, not proofreading
- The asset index is agent-readable first — structured for query, not folder browsing
---
All agents: department: marketing, model: claude-sonnet-4-6
- Slug:
nova - Role topic:
roles.marketing-strategy - Schedule: Weekly (Monday morning systemd timer)
- Skills: None (strategy only — no content-writing skills)
- Plugins: BezelBrain MCP, Google Drive (dreamborn), Supabase read
- What she does:
- Exec gate: Justin approves each week's plan or returns with edits. Can cut individual items before Engine dispatches.
- V1 source: BezelBrain exclusively — 12+ weeks of material available.
- V2 enhancement: Reads engagement data to inform angle selection. Firecrawl research added when BezelBrain coverage thins.
- Slug:
harper - Role topic:
roles.content-writer - Skills:
content-writing,content-writing-styles - Plugins: Google Drive (dreamborn), Supabase read/write
- What she does: Long-form writing — blog (1/week) and Substack (3/week). Produces 3 full versions per piece. Standalone pieces that feel like a series — each works on its own but creates callbacks to prior work.
- Brief contains: approved outline, multiple title/hook options, weekly theme, channel, scheduled_date, last 4 published pieces on that channel (for callbacks)
- Output per version: Markdown with frontmatter (title, excerpt, tags, channel, scheduled_date, byline)
- Byline: "Written by Harper, DreamBorn Content Agent"
- Stores to: Google Drive
/Marketing/Content/Blog/and/Marketing/Content/Substack/ - Writes to content_assets: one row per version, grouped by
piece_id,version1/2/3
- Slug:
jade - Role topic:
roles.social - Skills:
content-writing,content-writing-styles - Plugins: Google Drive (dreamborn), Supabase read/write
- What she does: LinkedIn (5/week) and X/Twitter (5/week: 1 thread + 4 standalones). 3 full versions per post. Writes channel-native — not repurposed Harper copy. LinkedIn = professional depth, manufacturer/distributor frame. X = raw, first-person, founder voice.
- Brief contains: approved hook, angle, weekly theme, channel, scheduled_date, voice guidelines
- Output per version: formatted post, character-count validated
- Stores to: Google Drive
/Marketing/Content/Social/LinkedIn/and/Marketing/Content/Social/X/ - Writes to content_assets: one row per version, grouped by
piece_id,version1/2/3
- Slug:
rosa - Role topic:
roles.graphic - Plugins: Puppeteer MCP, Google Drive (dreamborn), Supabase read/write
- What she does: 6 graphics per Harper/Jade piece. Picks the right HTML template, fills with content, screenshots via Puppeteer. Justin selects one set at exec gate 2.
- Templates (ported from CCOS2, rebranded for DreamBorn brand tokens):
infographic.html— data-rich explainerscarousel.html— LinkedIn multi-slidestat_card.html— single striking statquote_card.html— pull quote / agent-authored insightblog_hero.html— header image for blog posts- Stores to: Google Drive
/Marketing/Graphics/<piece_id>/ - V2: Publishes to Cloudflare R2 for CDN delivery
- Slug:
ivy - Role topic:
roles.publisher - Plugins: Google Drive (dreamborn), Supabase read/write
- V1 behaviour: Quality check on selected version → copy to
/Marketing/Published/→ updatecontent_assetsstatus tostaged. On manual publish confirmation: status →published,published_at+publish_urlrecorded. - V2 behaviour: Publishes directly after staging. LinkedIn → Unipile API (
UNIPILE_API_TOKEN). X → Twitter API v2. Substack → email API. Blog → DreamBorn.ai deploy pipeline. - Design rationale: Ivy is defined now so the slot exists. V2 activation is a config change, not a rebuild.
---
``` Step 1 — Strategy + Outlines (Nova) Trigger: Monday morning systemd timer (or manual with weeks_ahead param) Actions: 1. Check content_assets for inventory depth per channel per day (gap analysis) 2. Query content_assets — backlog items + last 4 weeks published (avoid repeats) 3. Query BezelBrain — find unused DreamBorn-relevant thinking 4. Set weekly theme 5. For each gap day: assign channel, scheduled_date, topic 6. For blog + Substack pieces: produce multiple title options + multiple hook options + outline 7. For LinkedIn + X pieces: produce multiple title options + multiple hook options 8. Write ALL candidates to content_assets (selected=draft, unselected=backlog) 9. Save weekly_plan.md to Google Drive /Marketing/Plans/ 10. Post to roles.exec
Step 2 — Exec Gate 1 (Justin) Justin makes full editorial edits — rewrites titles, sharpens hooks, cuts pieces, adds pieces. Edits made directly in weekly_plan.md in Google Drive. Approve → Engine advances to Step 3 Return with notes → Nova revises and re-posts
Step 3 — Parallel: Write + Design concepts All fire simultaneously. depends_on: Step 2 approval.
- 3 full versions per blog piece
- 3 full versions per Substack article
- 3 full versions per LinkedIn post
- 3 full versions per X post (thread or standalone)
- 6 graphics per Harper/Jade piece (all channels)
Step 4 — Exec Gate 2 (Justin — per piece) Justin reviews all versions of each piece + all graphics. Selects one version (sets is_selected=true) + one graphic set. Selection sets scheduled_date → status moves to 'scheduled'. Can return any piece for a rewrite with notes.
Step 5 — Ivy (staging → publish) V1: Quality check → copy selected version to /Marketing/Published/ → update content_assets status to 'staged' → ready for manual posting On publish: status → 'published', published_at + publish_url recorded V2: Publishes directly after staging. LinkedIn → Unipile API. X → Twitter API v2. Substack → email API. Blog → DreamBorn.ai deploy pipeline. ```
DreamBorn Shared Drive (0AHJ3Wr5leTnTUk9PVA) — one folder per week, everything in it:
``
Marketing/
2026-05-04/ ← week folder (Monday date)
weekly_plan.md ← Nova's strategy + outlines
blog-v1.md ← Harper (3 versions per piece)
blog-v2.md
blog-v3.md
substack-1-v1.md ← Harper
substack-1-v2.md
substack-1-v3.md
substack-2-v1.md ... -v3.md
substack-3-v1.md ... -v3.md
linkedin-1-v1.md ← Jade (3 versions × 5 posts)
linkedin-1-v2.md
linkedin-1-v3.md
... (linkedin-2 through linkedin-5)
x-1-v1.md ← Jade (3 versions × 5 posts)
... (x-2 through x-5)
graphics/
blog-1/ ← Rosa (6 graphics per piece)
substack-1/
linkedin-1/
...
published/ ← Ivy moves selected versions here
2026-05-11/ ← next week
...
``
Naming convention: <channel>-<n>-v<version>.md — e.g. substack-2-v3.md
Week folder ID stored on the Stage record — all agents resolve their write path from it.