Automation · proof of work
One pipeline runs any brand's social channels from a single profile file. It generates the week's content, gates it for approval, reads live performance, and returns the next move. Built and run by Anton Atanasov with Claude Code, Cursor and MCP.
A full week of on-brand posts, captions, hashtags and media specs, from one profile file.
An approval workflow. Only approved posts become schedulable. It never auto-publishes.
Ingests the period's live platform analytics, automatically.
Returns one prioritised, do-more / do-less action, not a wall of numbers.
Real output from the pipeline, captured 11 Sep 2026. Nothing here is a mockup.
Generate a week from one profile
$ node run-week.mjs --brand labarista --start 2026-09-15 LaBarista week of 2026-09-14 11 drafts: gbp 2, facebook 3, tiktok 3, instagram 3 (5 video, 6 image) auto-publish: false gate: Notion Content Calendar Status = Approved wrote drafts/labarista/week-2026-09-14.md / .json
Run a different brand, and prove no data leaks between clients
$ node run-week.mjs --brand meraki-blooms --start 2026-07-20 --against labarista Meraki Blooms week of 2026-07-20 7 drafts: gbp 2, facebook 2, instagram 3 (1 video, 6 image) brand-bleed vs "labarista": PASS (0 foreign identity tokens)
Client sign-off gate: approve two posts, exactly two become schedulable
$ node approve.mjs --brand meraki-blooms --week 2026-07-20 approve 3,5 approved: #3, #5 schedulable (approved only): 2/7 -> [#3 #5]
Read live analytics, then make a call
$ node report.mjs --brand labarista --period 2026-06-22_2026-07-21
recommendation: Instagram Reels: 0 published this period against a
target of ~8.6. The reach is already there; the gap is posting
frequency, not audience. Close it first next month.
Performance figures omitted on purpose: this is a small local brand, and they are not the point. Happy to show them live.
What the engine decided
It didn't just report numbers. It found the single highest-leverage gap and told me what to do about it. That is the same judgement a media buyer makes every day, applied to a channel instead of an ad set.
The schema forces it off. No profile can opt in.
Rendering is off by default and refuses to run without an explicit spend confirmation, cost shown first.
A client brand blocks every post until it is approved. Approve two, exactly two become schedulable.
Every brand-specific word lives in its profile. A bleed check proves one brand never leaks into another's drafts.
Swap the social metrics for ROAS and CPA and this is the media-buying loop: generate creative, test it, read the numbers, kill the losers, scale the winners, and automate the decision so it comes from a dashboard, not a gut feel. I have not run paid ad budgets yet, and I am direct about that. What I bring is the automation layer around them, built with the same tools this role names. Runs on demand. Full code walkthrough available on request.