Skip to content
Manohar Papasani Get in touch

How the workforce runs itself

Thirty-six agents write, check and publish four posts a day on five platforms. Every team has its own clock, re-runs itself if a post does not go out, and is tested agent by agent every week.

01 · SYSTEM MAP

Seven silos, and no row calls another

Each team has its own exact-time trigger on Cloudflare, its own workflow on GitHub Actions and its own agents. If one team breaks, the other six do not notice.

When (IST) Clock · Cloudflare Worker Run · GitHub Actions Agents · LangGraph Output 8:00 AMLeadership ace-leadership-trigger motivation-daily.yml Leadership team 12:00 PMAI interview Q&A ace-interview-trigger interview.yml Interview team 4:00 PMAI news digest linkedin-branding-… daily.yml News team and Haiku gate 11:30 PMTech learning ace-learning-trigger motivation.yml Learning team LinkedIn 4 posts a day 5:35 AMMon and Thu ace-brand-analytics-… brand-analytics.yml Brand analytics agents Website metrics 9:00 AMOperations ace-operations-trigger cost-report · anomaly-watchweekly-evals on Sundays Cost, anomaly, eval agents Reports and alerts 10 to 90 minutes laterAfter every slot content-promotion-… distribute.yml Promotion engine X Bluesky Facebook Dev.to Same post, read-only, staggered Nothing is shared: each row has its own Worker, timer, workflow, self-healing and alerts. A GitHub watchdog checks them all on a separate clock. No post is scheduled by GitHub cron. Cloudflare fires on the minute, and GitHub only runs the work.
Seven pipelines, one per row. The amber lines are the four daily posts; the blue line is cross-posting, the only link between rows, and it only reads post records.

02 · INSIDE A POST TEAM

Every post is written, checked and either published or dropped

The leadership team as it runs in code: a LangGraph state graph. Routing is decided in code, not by the model, so a weak post is skipped instead of published.

Quote not verified: find another Fails review: one rewrite, at most BriefInsights PlannerPicks the theme Quote scoutFinds a quote VerifierChecks Wikiquote WriterOwner's voice Poster scoutMakes the card CriticFour judges PublishExactly once Pass Critic's judges Fact-checker Technical reviewer Consistency Generic-voice check Skip Nothing strong enough, an unverifiable quote or a second failed review: the slot heals or stays empty, never weak
Same writer, critic and publisher in every team. The interview team swaps the first three steps for an interview scout that finds a real reported question; the news team swaps them for a news scout.

03 · ONE DAY

Fixed slots, then a calm ripple to every platform

Each post goes to LinkedIn on the minute. The other platforms follow one at a time, at the same offsets every day, and never as a burst of old posts.

24 hours, IST 12 AM 6 AM 12 PM 6 PM 12 AM 8:00 AM Leadership 12:00 PM Interview 4:00 PM AI news 11:30 PM Learning 5:35 AM Analytics (Mon, Thu) 9:00 AM Cost and anomaly checks 11:45 PM Billing Every slot, zoomed in: minutes after the post LinkedIn+0 X+10 Bluesky+25 Facebook+50 Dev.to+90 At least 45 minutes between two posts on one platform · Posts older than 12 hours are never sent
Four slots, five platforms, twenty posts a day. Every post carries the same six follow links: LinkedIn, GitHub, Bluesky, X, Dev.to and Facebook. On X the links are written as handles, because X posts carry no links.

04 · SELF-HEALING

A missed slot repairs itself within minutes

After each slot the team's own Worker checks every five minutes. If no run has succeeded and none is running, it starts another. Alerts fire only if healing has not worked.

Minutes after the slot Trigger On the minute A check every five minutes from +5 +30 alert +60 alert +90 final alert Heals only when no run succeeded and none is running · At most four healing runs · Posted exactly once, recorded in a ledger GitHub watchdog Checks every pipeline on GitHub's own clock, so a Cloudflare problem cannot hide itself
Measured on 3 November: the 12 PM post fired at 12:00:54 and the 4 PM post at 4:01, and every platform followed at its exact offset.

05 · QUALITY LOOP

Every agent is tested on its own, every week

Each judge runs with its production prompt on planted mistakes and on clean answers. It must catch real faults without crying wolf, or the owner is alerted.

Per-agent testsSundays, 2:00 AMPlanted faults and clean cases Score each agentCatches at least 75% of faultsFalse alarms at most 34% Fix on a branchPrompt, schema or modelfallback CI gateLint, types, 228 testsand scheduler tests Merge, then tag stableBackup tag before every change,one-click rollback Next Sunday, the fixed agent is measured again First finding, 3 November: The interview reviewer flagged both clean answers. After the fix, it raised no false alarms in three runs and still caught both planted faults.
Measured, not claimed. A judge that crashes counts as a false alarm, so a broken agent can never pass its test.