Docs / agents/creative-head.md · mirrored from the repo
Namaste Ji — Creative Head (VP, Creative Content Strategy & Product)
Status: design / brainstorm. Nothing here is built yet. This is the agreed direction, captured so decisions aren’t lost. Treat it as living.
The Creative Head is the first and reference instance of the Agent Kernel and the orchestrator at the top of the orchestration topology. This doc specializes the Kernel to its job. It does not re-derive memory/loop/stop/firewall mechanics — those are the Kernel; read it first. The creative org around this agent (Content Director, generators, Judge, ingest, calendar) lives in CREATIVE-PLANE.md.
Registry identity:
agent_id: creative-head, display name “VP, Creative Content Strategy & Product” (a.k.a. Creative Head, CPO + Creative Director).
1. Purpose
The Creative Head answers one question on a schedule or on demand: “what should we make next, how much, and how should it reach users?” Concretely it:
- analyzes the current creative catalog as a navigable map (coverage / gaps / redundancy / supply×demand×occasion) — or, if no catalog exists yet, bootstraps the first set of content (§6);
- decides content strategy (what themes/occasions/locales to invest in) and product delivery (which feature gets which content, at what cadence, in which occasion window) — these move together, which is why one agent owns both;
- validates its bets with web research and a content sampler (cheap probes) before committing volume;
- emits a single, versioned Content Strategy artifact (§3) that the Content Director executes.
It runs in proposes mode by default (founder approves), or auto on a schedule, or
manual for a direct question (Kernel §6). Output is saved + versioned in the BO DB and
rendered to Notion by the Documentation Agent for human comment (CP §2).
2. It is a Kernel instance
Nothing about the Creative Head’s machinery is bespoke. It inherits, unchanged:
- the bounded reflect-loop and calibrated stop (Kernel §2, §5),
- STM (orchestrator-owned, projected to subagents, compacted on overflow — Kernel §3.1),
- LTM via
MemoryPortscoped tocreative-head + locale/deity/theme(Kernel §3.2), - the subagent-as-tool context firewall (Kernel §4),
- Langfuse-resolved prompts and Control DO governance (Kernel §6, §7).
What’s specialized is the roster (§5), the output artifact (§3), the cold-start path (§6), and the product/delivery responsibility (§7).
3. The output — one Content Strategy artifact
Decision (CH-1): the Creative Head emits a single, versioned, immutable Content Strategy artifact (
strategy@vN). It unifies what earlier drafts split into a standing “strategy” and a per-batch “brief.” Each run supersedes the prior version. It is the production contract: the Content Director pins a generation run tostrategy@vN(reproducibility, A/B, audit). This absorbs the brief of CREATIVE-PLANE.md §5 — see §10.
Format (CH-6 / AK-7): the artifact is a Markdown file (
strategy@v7.md) — readable and diffable in review. The machine contract lives in YAML frontmatter; the body is the founder-facing narrative. The Content Director parses the frontmatter and pins tostrategy@v7; the body is never authoritative for execution.
---
strategy_id: "..."
version: 7
created_at: "2026-06-17T...Z"
supersedes: "strategy@v6"
catalog_snapshot: "..." # catalog state it reasoned over
status: draft # draft | approved | in_production | archived
confidence: 0.0 # on load-bearing claims (drives the stop gate)
narrative:
directive: null # the CEO's steer, or null → self-chosen (CP-13)
choice: consistency # consistency | novelty
production: # WHAT to make next (the former brief)
count: 200 # how much to generate next batch
themes: ["Diwali diyas", "Ganesh blessings"]
languages: ["hi", "mr", "ta"]
occasion: # omit/null for evergreen/daily content
event_id: diwali
region: IN-MH
instance_date: "2026-11-08"
prebuild_by: "2026-10-25"
variety_mix: {} # spread across motif/palette/style (amplify-the-recipe, DS-4)
style_tokens: "brandbook@v2"
quality_rubric: "rubric@v3"
metadata_spec: {} # fields each asset must carry
delivery: # HOW it reaches users (the product half, §7)
feature_map:
- { feature: morning-feed, themes: ["..."], cadence: daily }
occasion_windows: [] # promote_from / peak / decay_until per instance (CP §10)
personalization_hints: {} # attribute-level steer from share-signal Loop B
---
# Content Strategy — v7
## Thesis
The standing strategy, in plain language.
## Why this batch
What the catalog map showed, what changed since v6, and why this `count` and `variety_mix` —
the rationale the founder reviews.
## Hypotheses tested
- **<claim>** — evidence: catalog | web | sampler → **support / refute** (confidence 0.x)
## Notes for downstream
Narrative arc, risks, and anything the Content Director / Distribution should know that
isn't a typed frontmatter field.
production.count is the explicit “how much to generate next”; delivery is what makes this
Product, not just content. Downstream agents read the frontmatter; the founder reads the
body.
4. The orchestrator stays thin
The Creative Head holds a plan, the STM blackboard, and a dispatch table — no domain
logic (OR-1). “Read/update STM” is the orchestrator’s own curate/compact operation
(Kernel §3.1), not a roster subagent. Everything else is a subagent called with
{ objective, params, stm_projection }.
5. The subagent roster
| Subagent | Objective | Tools / MCP | Inner loop? | Returns (distilled) |
|---|---|---|---|---|
| catalog-research (Exploration) | Map the current catalog: coverage, gaps, redundancy, supply×demand×occasion. Reads the materialized Catalog View first; live-digs only on a miss; multimodal aLLM for asset-level analysis | mcp:d1, catalog KNN over the multimodal index, fn:aLLM.analyze | yes (4-level zoom, ORCHESTRATION §4) | coverage/gap finding + candidate themes + lineage |
| code-exec (analytics) | Quantitative questions: coverage across locale×occasion cells, theme share-lift ranking, freshness decay | typed, read-only catalog API (no raw bindings) | yes (writes+runs TS) | metrics table + finding |
| web-research | Prove/disprove a hypothesis on the blackboard; find trends, validate an idea | Browser Rendering, web search | yes | evidence for/against + sources |
| memory | Recall scoped lessons at loop start; append episodic record | MemoryPort (recall + append-only) | no | “what I’ve learned” preamble; write-ack |
| strategy-read | Read current/past strategy@vN to anchor continuity & narrative arc | mcp:d1 (strategy store) | no | prior thesis + what changed since |
| content-sampler ✨ | Generate a few sample assets to test a hypothesis before committing volume | generator (sample mode) + Judge/rubric | yes (generate→score→revise) | sampler scorecard → STM (§8) |
“Read/write LTM” and “read/update STM” from the original spec are the memory subagent
and the orchestrator’s own STM op respectively — not two more roster entries. Each subagent
has its own max_loops backstop (Kernel §5; OR-6).
6. Cold start — bootstrapping the first content
Decision (CH-4): when the catalog is empty, the Creative Head switches to a bootstrap path instead of analysis. There is nothing to map, so it creates the first strategy from first principles and proves it with samples.
flowchart LR
E["empty catalog detected"] --> R["web-research + Events Calendar<br/>+ narrative directive"]
R --> T["draft initial thesis<br/>(broad, seed the space)"]
T --> S["content-sampler:<br/>small probe set across themes"]
S --> J["Judge/rubric scores samples<br/>(cultural veto is hard)"]
J -->|weak| T
J -->|clears bar| O["emit strategy@v1<br/>(starter batch: smaller count, high variety)"]
The first strategy@v1 deliberately seeds breadth (many distinct takes, modest count)
so later runs have a real catalog to map. Cultural-correctness is a hard veto from the very
first sample (CP-4) — the existential risk is highest before the brand has any track record.
7. The product / delivery half
The Creative Head is VP of … Product, not only content. Two responsibilities that pure “content strategy” agents skip:
- Feature mapping & cadence — it decides which delivery surface (morning-feed, festival
screen, weekday-deity slot) is fed which content and how often. This is the
deliveryblock of the artifact (§3) and is why content and product must move together. - Share-signal → variety (amplify the recipe, not the dish) — it reads share-intent
aggregated by attribute (style/motif/palette/deity/theme/language — DISTRIBUTION Loop B)
and briefs more distinct content in a winning vein. It never boosts the reach of a
single hit item (DS-4, CP-15). A winning pattern raises
production.countand shapesvariety_mixfor that vein — neverdeliveryfor one asset.
Delivery timing keys to the events calendar (promote_from / peak / decay_until,
CP §10) so the strategy is proactive, not reactive.
8. Content sampler — guardrails
The sampler is a spike: a cheap probe before committing a 200-asset batch. Three rules (CH-3):
- Ephemeral — sample assets never enter the live catalog (quarantine-and-discard).
- Really scored — the Judge/rubric grades them, so the signal is evidence, not vibes.
- Feeds STM, not the learning loop — a sampler score informs this run’s hypotheses
(
hypotheses[].result); it becomes a durable LTM lesson only after a real downstream outcome grades it (AP-6 / Kernel §3.2). An agent must not learn from its own ungraded probe.
9. Stop calibration (this agent)
Inherits the Kernel signals (§5) with these specializations:
- Confidence-to-ship is gated hardest on cultural-veto-adjacent claims — any iconography/ date/blessing assertion in the strategy must be grounded (catalog or validated calendar), never guessed, or the agent escalates rather than ships.
- Coverage = every required locale×occasion axis has been considered (not necessarily filled — a deliberate “skip Tamil this batch” is coverage; an unexamined gap is not).
- The riskiest open hypothesis should be resolved by the sampler before
production.countis committed. stop.max_loopsis a backstop only; low confidence or a veto risk → escalate to founder, not ship (Kernel §6).
10. Reconciliation with the CREATIVE-PLANE brief
CH-1 collapses the standing strategy and the per-batch brief into one artifact. To keep the docs consistent:
- The Content Strategy
productionblock is the brief of CREATIVE-PLANE §5. The brief schema fields (themes, count, languages, occasion, metadata_spec, style_tokens, rubric) live there now. - The content lifecycle (CP §6) and Content Director (CP §7) pin to
strategy@vNinstead ofbrief@vN; semantics are otherwise unchanged. - A pointer note is added at CREATIVE-PLANE §5 so the term “brief” there resolves to this artifact. CP-3’s contract guarantees (immutable, versioned, reproducible) carry over intact.
11. Example manifest (concrete)
agent_id: creative-head
role: VP, Creative Content Strategy & Product
kind: pipeline
model: { port: ModelPort, primary: claude-opus-4-8, fallback: claude-sonnet-4-6 }
memory: { port: MemoryPort, impl: d1+vectorize, scope: creative-head+locale+theme }
learning: { min_support: 3, decay_days: 90 }
prompts:
orchestrator: creative-head/orchestrator@production
compactor: kernel/compactor@production
tools: [mcp:notion, svc:events-calendar, fn:catalog.query]
subagents:
- { id: catalog-research, prompt: creative-head/catalog-research@production,
tools: [mcp:d1, fn:catalog.knn, fn:aLLM.analyze], max_loops: 4, parallel_ok: true }
- { id: code-exec, prompt: creative-head/code-exec@production,
tools: [fn:catalog.typed-api], max_loops: 3, parallel_ok: true }
- { id: web-research, prompt: creative-head/web-research@production,
tools: [svc:browser-render, fn:web.search], max_loops: 3, parallel_ok: true }
- { id: memory, prompt: creative-head/memory@production,
tools: [fn:memory.recall, fn:memory.append], max_loops: 1, parallel_ok: true }
- { id: strategy-read, prompt: creative-head/strategy-read@production,
tools: [mcp:d1], max_loops: 1, parallel_ok: true }
- { id: content-sampler, prompt: creative-head/content-sampler@production,
tools: [fn:generate.sample, fn:judge.score], max_loops: 3, parallel_ok: false }
io_schema: { input: objective + narrative?, output: strategy@vN }
autonomy: proposes
schedule: "0 6 * * *"
scopes: [strategy:create, agent:run, sampler:run]
reflection: { rubric: rubric@v3, max_iters: 3 }
stop: { marginal_gain_min: 0.15, confidence_min: 0.8, soft_cost_note: true, max_loops: 8 }
sampler: { enabled: true, max_samples: 6 }
last_run: "…"
version: 7
12. Open questions
- Bootstrap starter
count— how broad/large the firststrategy@v1batch should be to seed a mappable catalog without wasting generation budget. - Sampler cost vs value —
max_samplesdefault, and which hypotheses justify a probe vs. shipping on web/catalog evidence alone. - Delivery block ownership — does the Creative Head fully own
delivery, or does a future Distribution agent co-author it? (Today: Creative Head proposes, distribution executes.) strategy@vN↔ multi-occasion — one artifact per run may target several occasions with different lead times; whether theproductionblock needs to be a list of sub-batches.- Reconciliation sweep — whether to rewrite CREATIVE-PLANE §5–§7 “brief” wording in full now, or leave the §5 pointer note until that doc is next touched.
13. Decisions log
| # | Decision | Rationale |
|---|---|---|
| CH-1 | Single, versioned Content Strategy artifact (strategy@vN); strategy + brief unified; superseded each run; it is the production contract | Founder chose one artifact; keeps CP-3’s reproducibility while giving a standing-strategy layer |
| CH-2 | One agent owns content and delivery (the delivery block) | Content and product move together; “VP … & Product”, not content-only |
| CH-3 | Content-sampler probe is ephemeral, Judge-scored, and feeds STM not the learning loop until graded | A cheap spike before committing volume, without self-poisoning the LTM (AP-6) |
| CH-4 | Cold-start bootstrap path when the catalog is empty: research + calendar → thesis → sampler → seed-breadth strategy@v1 | “Create the first content if none exists” without an analysis it can’t do |
| CH-5 | The Creative Head is a Kernel instance — no bespoke machinery | Memory/loop/stop/firewall/prompts all inherited; only roster + artifact + cold-start specialized |
| CH-6 | The Content Strategy is a Markdown artifact — YAML frontmatter (the machine contract) + founder-facing body (AK-7) | Readable, diffable review without losing CP-3’s machine-readability |
14. Relationship to other docs
| Doc | Relationship |
|---|---|
| AGENT-KERNEL.md | The reusable anatomy this agent instantiates. Read first. |
| ORCHESTRATION.md | The topology: this is the online orchestrator; Catalog Steward + Consolidation run offline beside it. |
| AGENT-PLATFORM.md | Manifest schema, ports, scheduling, BO management surfaces. |
| CREATIVE-PLANE.md | The creative org it commissions (Content Director → generators → Judge → ingest), the rubric, the events calendar. |
| DISTRIBUTION.md | The share-signal (Loop B) it reads for variety, and the delivery surfaces the delivery block targets. |
| ARCHITECTURE.md | Control DO modes, two-plane model, observability. |