Namaste Ji by Ayushman Dash

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 MemoryPort scoped to creative-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 to strategy@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 to strategy@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

SubagentObjectiveTools / MCPInner 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 analysismcp:d1, catalog KNN over the multimodal index, fn:aLLM.analyzeyes (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 decaytyped, read-only catalog API (no raw bindings)yes (writes+runs TS)metrics table + finding
web-researchProve/disprove a hypothesis on the blackboard; find trends, validate an ideaBrowser Rendering, web searchyesevidence for/against + sources
memoryRecall scoped lessons at loop start; append episodic recordMemoryPort (recall + append-only)no“what I’ve learned” preamble; write-ack
strategy-readRead current/past strategy@vN to anchor continuity & narrative arcmcp:d1 (strategy store)noprior thesis + what changed since
content-samplerGenerate a few sample assets to test a hypothesis before committing volumegenerator (sample mode) + Judge/rubricyes (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 delivery block 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.count and shapes variety_mix for that vein — never delivery for 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):

  1. Ephemeral — sample assets never enter the live catalog (quarantine-and-discard).
  2. Really scored — the Judge/rubric grades them, so the signal is evidence, not vibes.
  3. 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.count is committed.
  • stop.max_loops is 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 production block 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@vN instead of brief@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 first strategy@v1 batch should be to seed a mappable catalog without wasting generation budget.
  • Sampler cost vs valuemax_samples default, 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 the production block 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

#DecisionRationale
CH-1Single, versioned Content Strategy artifact (strategy@vN); strategy + brief unified; superseded each run; it is the production contractFounder chose one artifact; keeps CP-3’s reproducibility while giving a standing-strategy layer
CH-2One agent owns content and delivery (the delivery block)Content and product move together; “VP … & Product”, not content-only
CH-3Content-sampler probe is ephemeral, Judge-scored, and feeds STM not the learning loop until gradedA cheap spike before committing volume, without self-poisoning the LTM (AP-6)
CH-4Cold-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-5The Creative Head is a Kernel instance — no bespoke machineryMemory/loop/stop/firewall/prompts all inherited; only roster + artifact + cold-start specialized
CH-6The 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

DocRelationship
AGENT-KERNEL.mdThe reusable anatomy this agent instantiates. Read first.
ORCHESTRATION.mdThe topology: this is the online orchestrator; Catalog Steward + Consolidation run offline beside it.
AGENT-PLATFORM.mdManifest schema, ports, scheduling, BO management surfaces.
CREATIVE-PLANE.mdThe creative org it commissions (Content Director → generators → Judge → ingest), the rubric, the events calendar.
DISTRIBUTION.mdThe share-signal (Loop B) it reads for variety, and the delivery surfaces the delivery block targets.
ARCHITECTURE.mdControl DO modes, two-plane model, observability.