Kreeda. The ledger →

Kreeda's marketing department

The Agentic Marketing Platform

Six AI Agents plan, write, buy and judge. Deterministic code publishes, spends and enforces the ceilings. One human approves everything — by merging one pull request a day.

The idea

Marketing is judgement, execution, and the decision to put the brand's name behind something. Most "AI marketing" blurs all three into one assistant with a publish button. This platform keeps them apart: Agents propose. Code executes. One human decides. That is why it runs unattended, every day, and never embarrasses anyone at 3am.

The loop, in one picture

Plan → posts → a human decides → publish → results feed the next plan. Everything else on this page is a detail of this one loop.

Strategistwrites the Plan Creativewrites each Post CMOticks and merges Producerpublishes X · Facebookthe Channels GA4counts Players Analystreads the funnel what the Analyst finds is what the next Plan is built from
Green is judgement, blue is deterministic code, amber is the human. Nothing crosses from Creative to Producer without passing through the amber box.
Agent — judgement Producer — code Human — approval

The cast

The CMO · one person Owns the brand and budget. Approves everything by merging one pull request a day.
The Producer · code Never an LLM. Publishes, spends, enforces the ceilings, retries, logs. The only thing that touches the outside world.

Between them sit seven Agents — each a Claude session bound to a schema. An Agent can only ever propose.

AnalystReads the funnel, says what's working, with numbers. Daily; the whole month on Sunday.
StrategistWrites next week's plan and names where ad money should go. Sundays.
CreativeTurns a brief into a finished post: copy, card, video. Code calls the model — no session.
Media BuyerProposes an ad. Cannot spend. Only runs when there's room under the ceilings.
Performance AnalystWrites the post-mortem: promised vs. delivered, Winner or Loser. Moves the next budget.
Chief of StaffWrites the weekly briefing: headline numbers, what worked, what needs a human.
Market ResearcherStudies one country at a time: what people there play, which games would land, which new ones to build. On request, never scheduled.

Why it is different

Five rules the code enforces — not habits anyone has to keep.

1An Agent cannot touch anything

Code gathers its inputs; the session only writes an answer file; code validates it against a schema before anything becomes state. Every rule that costs money lives in the validator, never the prompt.

agent prepare code gathers everyinput the role may see input.json A Claude session reads PROMPT.md reads input.json thinks, then writes output.json agent accept code validates itagainst the schema state file insights, Plan,proposal, briefing valid rejected — by path, with the reason the previous state file stands; the session fixes its answer once, never the code
Every rule that costs money lives in accept, in code — the budget ladder, the ceilings, the copy rules. A persuasive model cannot talk its way past a schema.

2Approval is one pull request

One checklist: every post and ad awaiting a decision, full text and exact media, all pre-ticked. Merging is the approval. Untick what you don't want.

Review · 6 September one pull request, everything awaiting you [x]Road Rumble · Facebook · Mon 09:00 [x]Drift ad · X · $5/day for 3 days [ ]Break Room · X · you unticked this Merging is your approval. merge Ticked → approved goes out at its slot, or launches at the next run Unticked → rejected never published, and not offered again
Untick anything you do not want. Merging decides everything at once — Posts and ads alike.

Every proposal reaches your phone. Fifteen minutes of silence is consent.

Untick, merge, or close within fifteen minutes — otherwise it merges itself as it stands.

3The money rules are frozen in code

$10/day per ad, $25/day total, two running at once. Config can lower these, never raise them — and a Media Buyer that argues well gets the same budget as one that argues badly.

RuleWhat it doesWho enforces it
Opening bid$5/day for any game's first ad. Always.accept, in code
Earning moreOnly a Winner on the same game + angle may double, capped at $10.accept, in code
Two LosersTwo Losers in a row → next proposal must be $0, with a reason.accept, in code
Kill rules<3 clicks, >$1/click, or <0.25% CTR from day 2 → paused early.The Producer, daily
Sanity alerts>120% of plan billed, or 24h with zero impressions → CMO told same day.The Producer, daily
CurrencyRefuses to launch if currency and conversion rate disagree.The launcher, in code

Launch order protects against a crash costing money: created paused → written to the ledger → targeted → switched on last. A failure anywhere leaves it paused and unbilled.

4Every ad is a three-day trial that always ends

Nothing runs open-ended. The post-mortem is mandatory input to the next proposal — its Winner/Loser label moves the budget. A good ad doesn't run longer; it earns a new, better-funded one.

Proposedby the Media Buyer Approvedyou ticked and merged In Trial3 days, then it stops Endedran its course Pauseda kill rule fired Post-mortemWinner or Loser merge next Publish run,under the ceilings day 3 from day 2 Rejected unticked Blocked · waits account cannot pay stays approved, you get an Alert Winner → the same angle may double, to at most $10/day · two Losers in a row → that game gets $0 until something changes
The loop closes on the dashed green line: a Post-mortem is the mandatory input to the next proposal, and its label is what moves the budget.

5It is judged on Players, not impressions

A Player is 30 real seconds of play, not a click. Every link carries its channel, angle and post id, so "did that post bring anyone who actually played?" has a real answer — one the Analyst reads every morning.

The proof

A public ledger of every post published and every ad run — what it said, cost, earned. The Producer writes it after every run. No line was typed by a person.

Read the ledger → See the traffic →

The agentic company

Marketing is the first function. The shape isn't specific to marketing.

Agents propose. One deterministic Producer executes. One person decides by merging. Finance can propose, not pay. Support can draft, not send. Engineering can open a PR, not merge it. Kreeda is building this out, function by function.

MarketingSix Agents plan, write, buy and judge. The Producer publishes and spends. The CMO merges.Running today
FinanceAgents forecast, reconcile and propose. Code moves nothing. The CFO merges.The same shape
SupportAgents read, triage and draft. Code sends only what was ticked. The COO merges.The same shape
EngineeringAgents design, implement and review. Code runs the tests. The CTO merges.Already how software is built

Want this running for your brand?

Built by one person and a team of Agents. Running today — every post and ad above went through it. Write and say which brand.

Write to us
For operators — how it runs, hour by hour, and what needs a person

A day, hour by hour

No server, no daemon. Four timers on one Mac wake it five times a day; each run does one job and stops. Three are the Producer alone; one — the morning — is where the Agents think; and the first, before anyone is up, is a reporter that emails the day's Campaign numbers.

You — the Review reaches your phone; untick or close within fifteen minutes, or it merges itself. 00:00 03:00 06:00 09:00 12:00 15:00 18:00 21:00 24:00 IST 08:12 · Campaign report every paid Campaign, by email · 02:42 UTC 09:00 · Morning desk Analyst · Post-mortem · Media Buyer · the Agents judge, then commit 03:30 UTC 14:30 · Publish the 09:00 UTC Window 09:00 UTC 18:30 · Publish the 13:00 UTC Window 13:00 UTC 22:30 · Publish the 17:00 UTC Window 17:00 UTC
Amber dot: the reporter — reads every Channel's numbers and emails the CMO, spends and publishes nothing. Green dot: a run where Agents think. Blue dots: the Producer alone. The three Publish runs are the three Windows a Post can be scheduled into, converted to your clock.

Sunday adds a fifth run at 21:30, the Planning Cycle: next week's Plan, the Briefing, and Monday/Tuesday's Posts filled and waiting for a tick.

08:12 Campaign report, by email 09:00 Morning desk 14:30 Publish 18:30 Publish 22:30 Publish Sun 21:30 Planning When asked Market research Any time The CMO merges

Two runs have no timer. The Market Researcher studies one country when asked (run-cycle.sh market-research LK) and writes its report into the repository for the Product head, with a copy to the CEO by email. And a Campaign the CMO decides on in conversation is proposed, reviewed and launched the same hour — the Review still opens, still waits its fifteen minutes, and the Caps still apply; only the calendar is skipped.

Who acts when

The same day, by actor: read a row for what one participant does, a column for who's involved at one moment.

09:00 14:30 18:30 22:30 Sun 21:30 You Untick or close the Review within fifteen minutes — or let it merge 08:12 brings every Campaign's numbers by email; Sunday evening, the Briefing Agents AnalystPost-mortem · Buyer Analyst · StrategistChief of Staff · Creative Producer prepare · acceptprepares, then gates Publish Cyclepublish · launch · Review Publish Cyclepublish · launch · Review Publish Cyclepublish · launch · Review Creative fillsMon and Tue's Posts Channels stats are read Posts go out Posts go out Posts go out
The Channels are only touched from the blue cells, and a blue cell only publishes what an amber decision already approved.

Where it runs: one Mac

Everything runs on one laptop — not because the cloud can't, but because every run here is something the operator can watch, stop, or read the log of, without asking anyone.

YOUR MAC launchdthree timers run-cycle.shone Cycle, no decisions node cli.js cycle publishthe Producer · no model claude -p <prompt>the Agents · scoped tools marketing/.envevery secret, verified reads the repository checkout marketing/the code, on a branch marketing/data/the state worktree logs, one per Cycle~/Library/Logs Xpublish · stats · Campaigns Facebookpublish · stats · Campaigns GA4Players, read only GitHubmarketing-state is pushedthe Review is opened
The dashed box is the only machine involved. Nothing outside it holds state; GitHub holds a copy that the laptop pushes.
TimerFiresRuns
com.kreeda.marketing.desk09:00 dailyclaude -p with the Morning desk prompt
com.kreeda.marketing.publish14:30, 18:30, 22:30node cli.js cycle publish --live
com.kreeda.marketing.planningSunday 21:30claude -p with the Planning prompt

The laptop has to be awake.

Asleep at 14:30? macOS runs it on wake — late, not lost. Logs: ~/Library/Logs/kreeda-marketing/. The cloud routines still exist, switched off.

Where things are stored

Four places, one job each — so a marketing run can't rewind live data, and vice versa.

WhereWhat lives thereWho writes it
main Games, site, code — plus marketing/ledger/ and marketing/traffic/, snapshots rewritten every Publish run, never read back. People, in PRs · the Producer for those two directories
marketing-state Everything the system knows: queue, ad ledger, proposals, metrics, run logs, briefing. Shares no history with the code. The Producer, only
marketing-review Nothing — one empty commit so the PR has something to merge. Approving is a decision, not a file change. The Producer
GitHub release media Every rendered video and card. Not in git — the file previewed is byte-for-byte the file published. The Creative

A Post's life

Every post moves through the same states, and every move is checked — an earlier version skipped this and published some things twice.

Draft In review Approved Published the Creativewrites it you tick itand merge its slotarrives Rejected Failed Expired you unticked it the channel refused it 3 days late
A failed post is retried at the next opportunity for up to three days. After that it expires and the Strategist fills the gap next week.

Decisions on the record

The CMO's calls, dated, as the system carries them. Each one lives in a prompt, a rule or an ADR — never only in someone's memory — so a run made next month makes the same call.

  • 13 Sep 2026Drift goes to the US and Canada. A three-day, $10/day Facebook Trial on the angle that won in India — "the battery is the health bar" — rewritten for North America and carried by a real gameplay frame. Launched the same day it was decided; judged on Players against a promise made before the money moved. Rocket Builder's renewal waits for the next free slot.
  • 13 Sep 2026A Campaign report every morning. The CMO is emailed every paid Campaign's numbers at 08:12 IST, read live from the Channels, with what the kill rules would do. The same run delivers any Alert and the Briefing.
  • 13 Sep 2026New markets get a researcher. A seventh Agent studies one country at a time — what people there play, which Games would land, which new Games to build — and files a report the Product head can commission from. Sri Lanka first.
  • 13 Sep 2026Traffic is public. Sessions and Players by hour, day, week and month, at /marketing/traffic/, rewritten with every Publish run.
  • 12 Sep 2026Run it yourself; ask only for money. A "yes" in conversation is an approval. The system posts, proposes and launches within the Caps on its own and brings the CMO only the questions that cost money — a Cap, a funding instrument, a new paid Channel.
  • 12 Sep 2026X paid is on hold. No X Campaign is proposed or approved, even once the account can bill. Organic Posts on X continue.
  • 7 Sep 2026Facebook first. Paid money goes to Facebook, where two Trials earned it (Drift 12.8% CTR, Rocket Builder 18.0%, about $0.005 a Player). Doubling to $10/day is earned by a Winner on the same Game and angle, never granted.

What needs a person

Short by design, and safe to skip — nothing here is "or something breaks", only "or nothing happens".

  • Most daysRead the Review. Pre-ticked. Untick or close within 15 minutes, or it merges itself.
  • Every morningRead the Campaign report. One email: every paid Campaign, its numbers, what the kill rules say, and a "Needs you" line that is usually "Nothing."
  • Sunday nightRead the Briefing. Only its last section asks anything.
  • OnceKeep the laptop awake at run times — or accept a late run on wake.
  • When toldAct on an Alert. One thing only a person can fix; the system works around it until then.
  • NeverEdit state by hand. The Producer is the only writer — the run log says why.

Why build it this way?

An agent that can publish can embarrass you at 3am. One that can spend can spend all of it. So judgement stays separate from anything that touches the outside world — and that waits behind one box a person has to tick.