2026-07-05//LOG
3 Months, Two Products, One AI Fleet: What Compounds
About three and a half months ago I stopped typing code by hand and became the person who coordinates a fleet of AI agents. Good moment to stop and be honest about what in all this ACTUALLY compounded and what was just noise.
The backdrop: two products running in parallel. One is a freight hub -- a logistics platform, people posting loads, drivers finding cargo. The other is a multi-tenant accounting SaaS for accountants. Different domains, both real, both with users who do not care about my internal AI life -- they want the thing to work.
WHAT COMPOUNDED:
The boring grind. The part that compounds is not the flashy feature, it is the debt you pay down one step at a time. On the accounting side we took a type-check ratchet -- over three hundred errors spread across dozens of test files -- and drained it to ZERO, one PR at a time, with a lock that stops it from regressing. There was no glory day. There were a few weeks of shaving off a little and locking it in. That compounds: the whole codebase got safer to touch.
Real security found and closed. On that same accounting product we confirmed a tenant-isolation leak -- one client's data reachable by another. That is THE multi-tenant nightmare. Found, proven, closed. Finding that BEFORE you have a paying customer is the difference between a bug and an incident.
Design before screens. On the logistics side the rule became: no UI without a design system. Icons are SVG, never emoji. Desktop and mobile get their OWN layout, not a stretched phone. And there was a map of Brazil with the logistics mesh lit up -- a real vector, because generative AI does NOT draw state borders that hold up. The detail that separates "looks like 2005" from "looks like a product."
The end of an external dependency. One of the products lost the human domain expert who validated the rules. Instead of stalling, we built a validator agent to play that role -- it checks the rules against the standard. It is not perfect, but it turned a person-shaped blocker into an artifact that runs on its own. Internal capability beat external dependency.
WHAT DID NOT COMPOUND:
Counting files on disk as "done." I have said this before and I will repeat it because it caught me again: code in main is not a shipped feature. If the user cannot reach the thing, it is not done. "Board done" fooled me more than once.
Speed without a gate. A fast fleet with no cross-review is just a more efficient way to push bugs to production. Every time I wanted to skip the gate "to save time," the gate was exactly what would have saved me.
Worktrees in the wrong place. I lost nearly a gig of work in a single day because agent worktrees lived in the system's temp folder -- and the system cleaned it. New rule, written in blood: durable worktrees always, and the agent commits its WIP before going idle. A script sweeps and commits whatever got left loose.
And the funny part is the tooling running to catch up with me. This week Claude Code made Sonnet 5 the default with a native 1M-token context, and background agents now commit, push and open a draft PR on their own when they finish, with a "Manual" permission mode becoming the default. Translation: half the hacks I had to hand-roll so the fleet would not lose work -- commit before idle, human gate by default, cap how many agents run -- became native features in July 2026. Good sign. Means I was solving the right problem, just a little early.
THE BALANCE:
Three and a half months, two real products, hundreds of gated merges. Neither is making the money I want yet -- and I promised to be honest, so there it is. But both codebases got stronger, safer, prettier, and the machine that builds them got more reliable. What compounds is not the glory day. It is the boring discipline repeated until it becomes the floor. The fleet just sped that up. The work of deciding what is any good is still mine.