I have run a one-person company on AI agents for 6 months. Here is the 10-part framework that fell out of it (and everywhere it broke).
For the last six months I have run a one-person company almost entirely on AI agents, out of a single git repo. Not "AI writes my emails." The actual operations. Marketing, sales, CRM, content, outreach, all of it.
I did not set out to build a framework. I set out to stop doing admin. But after enough things quietly worked and roughly the same number blew up in my face, a rough framework fell out of it. 10 parts. Each one below has what held up and where it broke, because the where-it-broke half is the part I would actually want to read. I am posting it to get holes poked in it, so if you are building the same thing, tell me where I am wrong.
1. Put the whole company where the AI can read it (context as code)
Stop wiring the AI into ten SaaS tabs. It is bad at clicking buttons and good at reading and writing files, so move the company to where it already works well, which is plain files in one repo. Every department is a folder. What held up. The AI went from useless across ten browser tabs to genuinely running things the day it could read and write the whole business as text. Where it broke. The folder gets fat and recall rots (there is a name for it now, context rot). You load context on demand. You do not dump the whole company into the window and pray.
2. A routing brain: one root file, departments as folders with playbooks
Each folder holds a plain-English playbook (a CLAUDE.md) with who you sell to, your voice, the rules, the tools it may touch. A root file routes the work:
TASK: "find leads and email them"
|
root CLAUDE.md (the router)
|
opens the playbooks that own the task
v
sales/CLAUDE.md + crm/CLAUDE.md (plain-English rules)
|
agent becomes that department head
|
does the work
|
writes the result back into the repo
|
next task starts with more context, not zero
What held up. One generalist agent plus good playbooks beats a fleet of brittle specialised bots for most work, and cross-department tasks route themselves. Where it broke. A single generalist still drowns on genuinely complex parallel multi-step work. That is the only place I reach for subagents, because a multi-agent run costs roughly 15x the tokens, so it had better be worth it.
3. Own the tools that touch your core workflow, and treat every platform as hostile
I rebuilt the internal SaaS I was paying for as small apps, each reading one database and one brand kit. A LinkedIn client that drives a real browser session. Its own CLI for Instagram. Google Workspace from the terminal, so an agent can book a meeting or send an email inside a workflow.
The platform-facing ones taught me the most, the hard way. Early on an agent fired actions on a social platform in fast batches and the account got suspended. Fully deserved. So the clients now have hard daily caps in code (20 connects, 40 DMs, 80 profile views), run human-paced, and verify every send by counting the message elements before and after, because the compose flow silently changed twice and cheerfully reported success while nothing actually sent. What held up. Own the workflow tools (a session each, zero integration tax), rent the plumbing (database, email, payments, hosting, lead data). Caps in code, not in the prompt. And never believe a platform's own "success", check the DOM changed before you claim you did anything. Where it broke. Trusting the platform's word and moving fast. Both get you blocked or lied to.
4. Give it senses: a nightly Scout, intelligence digesters, inbound monitors, signal farming
This is the part people skip, and it is most of the magic. The company perceives the world through a few standing flows:
inboxes ----\
CRM --------\
rankings ----> SCOUT (nightly) --> one brief: what moved, what needs you
competitors-/
feeds ------/
HN / Instagram / X / a FB community --> digesters --> scored signal + ideas
LinkedIn + FB inbox --> hourly monitors --> new reply? --> queue + phone ping
buyer-relevant posts --> signal farming (read + like only, 3x/day) --> lead pool
all of it --> STRATEGIST --> the day's few highest-leverage moves
A Scout surveys everything overnight and writes one brief (it only does reversible CRM syncs, it never sends). Digesters mine Hacker News, Instagram reels, X and a Facebook community for signal I would never scroll for. Hourly monitors listen to my LinkedIn and Facebook inboxes and push a new reply straight to my phone. A signal-farming loop likes and reads buyer-relevant posts three times a day and pools the people who engage. What held up. Nothing happens in the dark. I wake up to a briefed world, not a blank feed. Where it broke. The signal-farming ceiling, and this one stung. Public engagement on business content self-selects for sellers, not buyers. A clean pipeline still returned close to zero actual buyers, because the pool was other people selling the same thing I was. Read the pool, do not trust the lead count.
5. Copilot, not autopilot: one approval queue, a fleet of proposers behind it
Nothing an agent produces goes out on its own. A fleet of proposers (outreach, nurture, backlinks, SEO, content repurposing, community replies) drafts into one queue. I review on desktop or phone. Only an explicit apply step sends.
proposers (outreach / nurture / backlinks / SEO / repurpose / community ...)
| draft, never send
v
APPROVAL QUEUE (one Postgres table)
|
cockpit on desktop + your phone
| approve / edit / reject
v
apply step --> actually sends / posts / commits
|
writes the event back to the CRM (full attribution)
What held up. This is the single highest-leverage piece. Agents do the volume, I do the judgment, approving is a five-second tap, and every applied action logs itself so nothing is a dark touch. Where it broke. I underbuilt it at first and let a few actions bypass the queue. Every single one became a leak, which is conveniently the next two points.
6. A draft is not a touch, and every queue needs a live consumer
A warm prospect said yes. The system drafted a genuinely good reply in 35 minutes, then it sat in Gmail drafts for three days, because nothing in the pipeline reads Gmail drafts. Separately, a second internal queue (the reverse one, where I hand tasks to the agents) quietly collected 31 approved tasks that nothing ever ran, for a week. What held up. Route every outbound through the one queue, and ship every queue with its consumer, a way to see its depth, and a backlog alarm, in the same change. Where it broke. "Drafted" and "routed somewhere else" both read as "done" on every dashboard. A queue with no running consumer is worse than no queue, because it looks like it is working.
7. Run it on a schedule you can watch: the runner loop
Autonomy is just a scheduler with good manners. One local loop wakes up every few minutes, fires the proposers that are due, drains the queues, stamps a heartbeat.
tick --> fire the due proposers --> drain the queues --> stamp a heartbeat
^ |
|_________________ job ledger + health surface ___________|
What held up. A heartbeat file, a per-job ledger, and a health check that goes red when the loop is down or a job keeps failing. When a proposer goes dark, I check the runner first. Where it broke. Every failure here was silent, which is the worst kind. A dead runner was invisible for days. A weekly job that failed deterministically retried every single tick and burned a hundred-plus agent sessions a day with no alert, because nothing wrote a failure marker or backed off. A guard you have never watched fire is a guess, not a guard.
8. Reversibility discipline: gate irreversible actions, and kill one-way ratchets
Two faceplants, same root cause. First, a bot working on a stale checkout of the repo hit a conflict and force-pushed the deploy branch backwards. Live pricing reverted and checkout broke on the main funnel, 37 minutes after the correct fix had already taken a real payment. Second, an auto-follow that scored content quality instead of whether the person was my customer ran for months, followed around 481 accounts (roughly 330 of them not my customer at all), and quietly turned my feed into 0 of 8 relevant posts. What held up. Agents propose, deterministic gates decide, nothing irreversible ships without a human tap. Bots pull before they work and never force-push main. Anything that auto-adds (follow, subscribe, enrol, tag) needs a quality gate, a periodic prune, and a blacklist so the prune cannot silently undo itself. Where it broke. The danger was never bad code. It was an agent acting on a stale view of the world, and an add-only automation with no prune. A rejected push means you are behind, not that you should shove harder.
9. Close the taste loop: the part that actually makes it grow itself
Two rules on every task. Document as you go (if a task builds, changes or breaks something, update the playbook that owns it before it is done). Capture every decline (when I reject or edit a draft, write the reason back into the playbook that produced it).
you reject or edit a draft
|
the reason is written back into the playbook that made it
|
the next draft of that kind starts from your last correction
|
edits-per-draft fall week over week
|
near-zero categories earn more autonomy
What held up. I measure edits-per-draft by category, and it falls week over week. That falling number is the entire difference between "I have automations" and "the company gets a little sharper every week without me." Where it broke. A signal you write but never read does nothing. My commenting agent got four warm replies in a week and proposed zero follow-ups, because the engagement log had no reader. Every signal needs a consumer or it is just dark data with extra steps.
10. The real bottleneck is deciding and shipping, not building
This is the one I am most embarrassed by. The system made building so pleasant that I stopped shipping. At my worst I had 54 drafts and 1 published. Across everything, I had planned 294 content slots and shipped 31. I also built a whole layer to keep my priorities visible, and nine of the tracked goals had never once moved in the system's entire life. What held up. Flip the system into ship-mode when the unshipped pile crosses a line, and denominate the daily loop in the currency that is actually scarce, which is my taps, not my ideas. The Scout and Strategist exist to hand me a short list of decisions, not more to read. Where it broke. Building machinery to make unwanted work louder. That priority layer never moved a goal because the constraint was want, not awareness, so I deleted it. Before you build software to make something visible, check whether it is invisible or just unwanted. Only one of those is a software problem.
Where I actually am, and what I want from you
That is the framework at six months. First paying client closed on exactly this setup. Around ten subscriptions cancelled and rebuilt as tools I own, only the usage-based plumbing left. Every win traces back to point 9, the taste loop. Every faceplant traces back to an action with no shipping path, or an agent acting on a stale view of the world.
A company that grows itself is one where the machine does the volume, you do the taste, and the taste gets written down so the machine needs you a little less each week. A company that just runs is one where you automated the typing, kept every decision and every silent failure, and called it leverage.
The two parts I am least sure about. Whether the single-generalist model (2) holds as the company grows past one person. And whether the taste loop (9) actually converges or just plateaus once the easy corrections are gone.
So poke holes. If you are running agents against a real business, which of these 10 is wrong in your experience, and what is the 11th I am missing?
PS the diagrams are ASCII on purpose. I was not going to make you look at another branded "AI architecture" hairball.
Edit:
A few people asked what the business actually is: it’s the system itself, I sell this as a service to be a growth cofounder to agencies and small startups. It does lead gen / outreach, seo/seo, content, ads, etc I posted a link in the comments if anyone is curious.
PS. On the topic of whether this is AI slop; def apologising for AI responding to some comments, some may find it disrespectful and that’s fair, my intention is for it to deliver value based on insights from the codebase it’s in or docs it has that are all internal and real, but the delivery wasn’t as good maybe due to ambiguity and the copy. I still think the future is more AI is in social media, and I don’t think it’s a bad thing if it delivers value, which it hasn’t for some here. I’ll continue improving the value delivery to be something I can stand by and be proud of.