A fleet of agents that doesn't rot.
More than 30 scheduled agents run my businesses every day. The part worth talking about is not that they exist. It is the check that proves they still do what they claim.
The problem
Spawning an AI agent is easy now. Keeping thirty of them honest is not. Scheduled work fails in the quietest way possible: the job still fires, the log still writes, and the output is subtly wrong or silently empty. Nobody notices for weeks, because nobody is watching something that has never broken before.
I had a second version of the same problem. The documentation describing what each agent did drifted away from what was actually scheduled. A cron in a document said one thing, the live runtime said another, and I made decisions off the document.
What I built
A fleet of agents spread across three separate runtimes, chosen deliberately rather than by accident. Some jobs need a full desktop session, some need a cheap always-on worker, and some are pure system maintenance. Putting all three under one roster is what makes the fleet legible.
They do real work: research briefs, article drafting, hero image generation, CMS publishing, SEO optimisation, competitor scouting, inbox warmup, cost tracking, weekly digests, and a daily knowledge base rebuild. Everything reports into a single dashboard that rebuilds twice a day, pulling billing, product analytics, sign-ins, Search Console, the CMS and Slack into one tabbed view.
How it stays honest
Three mechanisms, and the third is the one that matters.
An autonomy ladder. Every agent runs against a written statement of what it may do alone, what it must draft for approval, and what it must never touch. Money and customer-facing sends always wait for a human.
A write-back rule. When a job hits an error, needs a clarification it should not have needed, or solves something the hard way, the fix goes into that agent's own instructions before the job closes. The fleet gets more capable without me sitting down to improve it.
A drift check. A script reads the live schedules out of all three runtimes, compares them to what the documentation claims, and reports the difference as a number that should read zero. It also catches the specific failure I kept hitting: an enabled job still firing into a skill file that was deleted weeks ago. The number is surfaced on the dashboard, so drift is visible rather than discovered.
What it produces
- Research, drafting, publishing and reporting that happens whether or not I open a laptop
- One dashboard as the single source of truth, instead of six tabs and a guess
- A documented roster that cannot quietly disagree with reality
- Agents that improve between runs rather than decaying between them
What this proves
Anyone can wire up automation. The consulting question is what happens in month six, when the person who built it has moved on and the world has moved with it. This is the answer to that question, built in from the start rather than bolted on after the first silent failure.