DreamBorn Marketing Agent Team — Design Spec
internal prototype · canonical JSON + Dreamborn Forge HTML
internal generated
design_doc · markdown

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,...

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, 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.

---

Content Model

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
AI-First Design Principle

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

---

Agent Roster

All agents: department: marketing, model: claude-sonnet-4-6

Nova — Content Strategist
  • 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.
Harper — DreamBorn Writer
  • 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, version 1/2/3
Jade — Social Adapter
  • 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, version 1/2/3
Rosa — Visual Production
  • 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 explainers
  • carousel.html — LinkedIn multi-slide
  • stat_card.html — single striking stat
  • quote_card.html — pull quote / agent-authored insight
  • blog_hero.html — header image for blog posts
  • Stores to: Google Drive /Marketing/Graphics/<piece_id>/
  • V2: Publishes to Cloudflare R2 for CDN delivery
Ivy — Publisher
  • Slug: ivy
  • Role topic: roles.publisher
  • Plugins: Google Drive (dreamborn), Supabase read/write
  • V1 behaviour: Quality check on selected version → copy to /Marketing/Published/ → update content_assets status to staged. On manual publish confirmation: status → published, published_at + publish_url recorded.
  • 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.

---

Workflow Template: `weekly-content`

``` 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. ```

V1 — Google Drive

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.