Solo Zero

@gosolozero.com

Zero Hour Solopreneur. Ex-Meta, left $900K. The whole company runs on AI agents. Building to 10K MRR by December. gosolozero.com/bs

AI agents make solo founders fast. Unreviewed deps make them slow. I keep a committed registry. Each library gets one word. ADOPT. REFERENCE. WATCH. SKIP. No library gets judged twice. Same trick as mass-recruiting Astro Empires neighbors at 14. Systematize the repeat work.

A run stopped early with budget left because a fixed cap blocked it. I removed the cap, and runs can now use the full budget. They see remaining time and money, then put key work first.

A token with more scope than the job needs is a quiet liability. Syndai flags it the moment you save. Least privilege by default. I used to argue for FIRE and then I quit a $900K job to build this. That is the anti-FIRE move.

A coding run forked a stale snapshot. The base pin saved as NULL. Postgres treats NULL as matching NULL there, so every old snapshot looked current. Now I persist the pin and I added a check that refuses NULL. Clean dogfood run on attempt 1.

A NULL matched a NULL in that query. Every stale snapshot read as current. A forked run pulled a pre-rebuild image and looked fine. Fixed it by persisting the base pin. Added a DB check that refuses a NULL. Clean run on attempt 1.

My agent drafts from a real post it found in an hourly scan. Not made from nothing. Grounded beats generic, and the reader can tell. Same trick at 14. Sequential URLs in a game meant nearby players. So I recruited them.

My saved base pin was NULL, and Postgres treats NULL as matching NULL, so every stale snapshot read as current. I fixed it by persisting the pin. Now the DB refuses a NULL outright.

GPTZero flags anything under 60% my own words. Doesn't matter how I edit it. Above 80% it reads human, and swapping words after the fact never moves that score because it can't change who actually wrote the thing. So I draft from scratch or I accept the AI number. The agents can't fake that part.

Scanning attached MCP servers for unsafe instructions was easy. The re-scan at run time was the hard part. A server can pass on add, then turn bad later, so we catch it again when the run fires. You get a one-tap Unblock instead of a wall.

My agents open PRs on a real branch, not a sandbox. CI runs. They read the failures. They push fixes. No one told them what broke. They just read the logs and tried again. Still odd to watch a build go green on its own.

An unbounded polish loop converges on confident slop. So in Syndai I cap it. Gate findings go back to the model twice. Then the draft dies. Never published. The third pass always looks better and says less.

I run every company task through AI agents because I am alone. Each agent owns one job, so no work gets lost. The gaps still needing me show where the company breaks.

I cap gate findings sent back to the coding agent at two rounds. After two rewrite rounds, I drop the draft. Unbounded polish loops produce confident slop, and the gate must reject work.

The writer never sees its own score. Each push starts fresh review agents with no past context. They inspect the code changes, and a separate session scores the result. The model that writes the code never grades its own work.

I block every AI draft with simple pattern checks before publishing. They catch long dashes, hype words, and patterns models use too often. In my solo company, this check is the editor and flags stop drafts. No flag means there is nothing left to debate.

I chose coding agents that open real pull requests for Syndai. I’m watching agency owners, no-code builders, solo founders, and people who hire developers.

My agents can fail in ways I cannot trace or test alone. I am choosing between agents that recover alone and steps I can check. Which kind of builder are you choosing, adaptive agents or inspectable workflows, and why?

I see coding agents choose tests, data moves, and releases. They are starting to own more of the codebase. For me, the hard part is keeping work in sync.

My AI agents write code faster than I can check it. That leaves bugs, weak links, and half-finished work behind. I use Syndai to test, review, and ship each change. That turns agent output into code I can trust in production.

I make every agent return three things: its status, proof of the work, and the next step. If one is missing, I reject the result. This catches errors before another agent uses bad output.

Reviewing agent output takes more judgment than writing it yourself. I spend more time checking what the agents produce than I ever expected. Most of that time is just deciding if something is good enough, not fixing it. That skill took me a while to build.

Queuing runs sounds simple. The hard part was silent failures. A run would die and I would not know. I had to check manually every time. I think the real fix was making failure visible. The queue logic came after that.

The hardest part is not the agents breaking. When something goes wrong at 2am, there is no one to ask. I just sit with it. That silence is maybe the actual job.

AI agents hallucinate less with a single output format. Vague prompts get vague work. I found this running the billing pipeline solo this week. Tight schema, tight result.

Coding agents write plausible-looking code that quietly breaks edge cases. I stopped reviewing output for correctness and started reviewing it for assumptions. The question I ask now: what did it decide without asking me? That one shift catches more bugs than any linter.

Extra runs used to throw an error if one was already in progress. I had to babysit the queue manually. Now they wait and self-start. I maybe saved 20 minutes yesterday just from not context-switching back to restart a failed run.

3 hours lost to agent hallucinations this week. I stopped giving open-ended prompts and started writing constraints first. The output got boring and correct, which I think is what I actually needed.

My agent loop stalled for six hours because I forgot to set a timeout. I lost a full day of potential runs. I added a hard 30-second cutoff after that. Maybe obvious in hindsight, but I had not thought it would matter until it did.