A template repo for Claude Code · Codex · claude.ai

A campaign committee that runs in a repo

Marketing budgets drain through campaigns that were never pressure-tested and never killed. The Marketing Office fixes the decision process: fourteen agents — a committee, a content studio, an orchestrator — each defined by a markdown charter, run by the coding agent you already use, against files in a private Git repo. A campaign idea gets ten isolated memos, two veto chairs, a hard economics hurdle, and a dated, written prediction before money moves. On a GO, the studio drafts the assets; every claim is sourced or flagged. You make every decision and ship every asset. The system writes the arguments and keeps the record.

10
memos before a decision
2+1
veto chairs · +1 at the asset gate
0
invented numbers or claims
100%
of runs journaled
01

What it does

The problem is not a shortage of campaign ideas. The problem is that in most companies nothing forces the bear case, the unit math, and a dated prediction into writing before the spend is committed — so weak campaigns launch, tired ones drift, and a year later nobody can check which calls were good.

The fix is borrowed from family-office investment committees. Twelve specialist agents each hold a written charter: a mandate, an input whitelist and blacklist, a fixed output format capped at 600 words. Eight write first-pass memos in isolation — none sees another's conclusions. A chief skeptic attacks the assembled stack. A CMO agent decides last through a five-step checklist it cannot step outside: vetoes bind, the economics hurdle binds, the budget cap is a formula. A recorder journals every run. On a GO, a producer drafts the assets, gated per-asset by the same veto officers.

Everything is plain markdown. State lives in campaigns/ and journal/; company facts live only in config/; every number lives in one rails file. No accounts, no services — the repo and your agent are the whole stack.

  • Weak campaigns die on papera 5:1 pipeline-to-spend hurdle plus a benchmark test; no GO below it
  • The bear case is always writtentwo mandatory dissent chairs; softened dissent is a logged process failure
  • Spend stays inside railsper-campaign caps, channel concentration, segment fatigue, a reserve floor
  • Assets carry no invented claimsunsourced statements become literal [NEEDS SOURCE: …] placeholders
  • You get audited tooevery prediction has a number and a date; quarterly audits replay them, overrides tallied separately
Intake brief.md ISOLATED FIRST PASS — none reads another M1 analyst M2 dissent M3 economics M4 climate M5 brand-risk VETO M6 portfolio VETO M7 compliance M8 treasury stack Skeptic attacks memos CMO 5-step checklist vetoes + rails bind GO x% WAIT + trigger · 90d NO-GO Launch plan + asset brief Studio gated assets Decision journal — every run, no exceptions full · partial · NO-GO · expired WAIT · production · override
The committee run. M1 is the only memo other first-pass agents may see, and only where the isolation matrix grants it. The CMO never sees your preference before deciding. Whatever the stamp, the journal gets written.
02

The roster

Fourteen chairs, four real power levels. Advisors argue and are forbidden to decide; veto chairs block; one chair decides inside the rails; one human — you — rules on everything.

#AgentPowerOne line
1market-intelligence-analystadvisoryCampaign thesis, ICP evidence, competitor context, conviction 1–5
2devils-advocatemandatory dissentStrongest case against; steelman, three attack axes, pre-mortem; never endorses
3funnel-economics-specialistadvisoryStory-blind math: required leads, cost vs. pasted benchmarks, pipeline-to-spend, hurdle gap
4market-climate-strategistadvisoryBuying-climate call with a dated window; never reads internal funnel data
5brand-risk-officervetoWorst case with number + mechanism; metric stop + thesis stop; max unvalidated spend; brand asset gate
6portfolio-architectvetoChannel concentration, segment fatigue, calendar, brand-vs-demand corridor
7compliance-privacy-officerveto at asset gateScreens against your stated profile; ends in "confirm with legal counsel" items
8budget-treasury-officeradvisoryReserve floor, committed vs. uncommitted, cash calls, fundable amount
9chief-marketing-officerdecisionGO x% / NO-GO / WAIT-WITH-TRIGGER via five-step checklist, inside vetoes and rails
10launch-planneradvisoryGated tranches, channel split, frequency caps, the asset brief
11decision-recordermandatoryJournal for every run; overrides logged verbatim; quarterly audit
12chief-skepticmandatory dissentAttacks the stack: load-bearing assumptions, correlated errors, break signals
13content-producerproductionDrafts emails, ads, landing pages, social, collateral from approved messaging + sourced facts
14campaign-committee-orchestratorchairChairs both protocols, writes every memo under isolation discipline, never decides
03

The rails

Every limit lives in one file, budget-rules.md, each value tagged (Default – edit to taste.). Tune them once; every chair obeys. Where a charter repeats a number, the rails file wins.

15%
of quarterly budget — max commit to one campaign
owner · CMO
5:1 & ≤120%
hurdle: pipeline-to-spend AND cost vs. pasted benchmark — both, or no GO
owner · CMO
40%
max share of quarterly spend in one channel
owner · architect
3
max concurrent campaigns per named segment
owner · architect
10% / 15%
reserve floor (hard) and comfort flag (advisory)
owner · treasury
25%
max of a campaign's budget spent before its first gate
owner · brand-risk
20 / 30 / 50
tranches, gated on the pilot metric at day 14 and day 30
owner · launch-planner
150% ×2wk
pause stop; kill at 40% spent with <50% of results
owner · brand-risk
90 days
WAIT-WITH-TRIGGER validity, then back to committee
owner · CMO
cap = min( 15% cap $225k, architect $100k, treasury $100k ) = $100k
conviction 3 → 50% of cap → the CMO may commit $0 … $50k, nothing above
conviction 5 → 100% · 4 → 75% · 3 → 50% · ≤2 → no new campaign (fictional $1.5M-quarter example)

Sizing is a formula. Conviction converts to budget mechanically; nobody argues past a cap, including the CMO agent — its charter forbids exceeding it by any amount.

04

Start here

The repo ships generic with a fictional fixture. Nothing real enters it until you fill config/ and say personalize the marketing office.

05

Limits

Not legal, compliance, or financial advice. The compliance officer screens against the profile you wrote and ends every memo with "confirm with legal counsel" items. It never green-lights.

Not a sending tool. Every run ends at files in campaigns/ and journal/. Nothing is dispatched, published, scheduled, or posted. Shipping is a human act.

Not a decision-maker. The CMO agent's GO is a recommendation. You approve, modify, reject, or override — in writing, on the record.

The return is measurable: after a year of journal entries, the quarterly audits show — in your own numbers — whether your campaign decisions and your overrides added or destroyed value. Next step: clone the repo and run the smoke test. It uses only fictional data and walks the whole process before anything real is committed.