Padlo is a two-person company, and one of us writes code. This year we redesigned the product UI across all three of our apps, the coaching app, the organisation hub, and the scoreboards, and merged them into one shared codebase. The coach app alone is about 113,000 lines of TypeScript. The work took weeks, not quarters, and most of the code was written by AI agents.
I want to describe how that actually works, because the reality is more interesting than the hype.
The shape of the work
I do not prompt an agent to “build a settings page” and hope. The repo carries written contracts the agents read before touching anything. There is a migration plan that documents the current architecture file by file. There is an AGENTS.md that sets the rules: which commands verify a change, which behaviors are frozen, how commits are formatted, what counts as done.
On top of that sits an orchestrator agent that never writes code itself. It dispatches one agent per issue, each in its own git worktree, and gates the result. Work is tiered by risk. A styling tweak needs passing tests and a skim of the diff. Anything touching authentication needs an independent reviewer agent and a separate verifier agent that re-runs every gate in a fresh checkout, trusting nobody’s report. A review can fail at most twice; then the whole thing stops and escalates to me.
The rule I care most about is evidence. Every feature PR must include before and after screenshots from real, seeded, logged-in browser sessions. Milestones end with a full end-to-end walkthrough on a real API, screenshots included. Our CI runs 42 end-to-end tests before anything deploys. Agents write convincing summaries of work they did not quite do; screenshots do not.
What humans still decide
Last week I rejected a pull request that had passed everything. Unit tests, builds, an independent agent review that said merge, an independent verification that said pass. I opened the screenshots and the scoring flow did not look the way I meant it to look. I wrote exactly that on the PR and sent it back for redesign.
That is the honest division of labour. The gates catch broken. They do not catch wrong. Taste, product intent, and the final yes or no have stayed entirely human, and I now spend most of my time there: writing plans and constraints, reviewing evidence, rejecting work that is correct but not right.
What I think this means
The typing is no longer the bottleneck. Deciding is. A codebase that would have justified a team of six now moves at that team’s pace with one person directing it, and the leverage comes from unglamorous things: plans written down, rules agents can follow, verification that assumes the agent is lying.
I will not pretend it is tidy. Agents do the wrong thing with complete confidence, and an unclear instruction comes back as a well-tested, well-documented mistake. The discipline this forces, specifying what you actually want before the work starts, was always good engineering. Now it is the whole job.
For a product like Padlo the result is concrete: a company of two ships a redesign of its entire surface in weeks, and the padel clubs using it get software that improves at a pace that used to require a floor of developers. That part, at least, is not hype.