Factory diary

Chapter 02 ·

The day AI took the wheel from me

On day four, the tool started generating more agent work than I did. A few days later, over 90% came from it.

⏱️ 11 min read

In the first days, the one programming the factory was me, with Claude Code. On Tuesday, that changed. At five in the afternoon, the tool itself started generating more AI work than I did, and the curve never went back.

This chapter is about that turn: what happened that day and what changed in my work after it.

The most intense Tuesday

I sent more than 180 requests in a single day, across about 20 sessions. At some points, I had five copies of the project open at the same time, each with an AI working on a different part.

Almost every session started the same way: "run the app so I can see it". I checked everything, approved everything, decided everything. Each session moved at the speed I could answer. The bottleneck was me.

From a text file to a backlog

In the middle of the afternoon, I opened a session just to jot down ideas in a text file. Fifteen minutes later, the ideas were already registered tasks, and the app got a backlog screen, where each task can be handed to a workflow.

By midnight there were more than 50 tasks, all of them born from a conversation. I described the problem, the AI wrote the task with context and acceptance criteria, and I approved it.

With a backlog, I could stop asking and start delegating.

"I won't abandon you"

At 4:40 pm, the first task was delivered by the tool itself. In the same minute, I wrote to Claude:

"I just wanted to tell you that I won't abandon you. I'll keep using you, only, very soon, I'll start using you inside my own tool."

It answered that it would be fun to watch itself working from the inside. In the same answer, it suggested a supervisor that would follow each run and explain what was happening. That suggestion became a task right then.

5 pm: the crossing

An hour later, the curves crossed. The tool started generating more AI work than I did using AI directly.

That day, it accounted for a little over half of the project's AI messages. The next day, for almost 90%. After that, for more than 90%, every day.

AI messages per hour over four days: on day 1, at 5 pm, the agents started by the tool overtake my direct use of AI, and the gap only grows, nights included

What I started doing

My requests changed in nature. Before, they were "do this", "change that", "run it so I can see it". Then they became:

I stopped writing code and started doing three things: defining what to build, following what was being built and deciding what went in.

The supervisor that barely worked

Here came a surprise. In almost 50 runs, the tool's supervisor made two decisions. Two.

At the same time, one of my Claude Code sessions got dozens of requests like "follow this run" and "why did it stop?". The supervision work existed, and there was plenty of it. I was just doing it outside the tool, with another AI.

The decision to call the supervisor only when something fails worked for the engine, but it left a gap: nobody followed the runs that were going well. That gap became two tasks: a watch mode and an on-call supervisor. When you let go of the wheel, someone has to watch the road.

Trusting without reading every line

Letting go of the wheel has a cost: I stopped seeing every line of code being born. The question became how to approve a delivery without reading all the code.

The answer was to turn my "run it so I can see it" into part of the workflow. Every task runs in one of two modes:

Validated stops before review and tests for a practical reason: if the screen is not what I wanted, I find out before paying for the rest of the workflow.

With that, approving stopped being reading code and became looking at the result.

The PO: from a sentence to a task placed in the plan

If I no longer program and no longer follow every run, who organizes the work? That answer came the day after the turn: an AI Product Owner.

Today, I send a short sentence, the way I would talk to someone on the team. The PO works on any project. In a To Do app, for example:

"I want to add a due date to the tasks."

From there, the PO does the triage.

The triage

  1. Searches the code. It reads the code map and searches for the names the sentence uses. It reads only what it needs, because every file read costs.
  2. Shows what changes. It points to where the code is today and lists the files that should change, separating production, tests and docs. In the example: the task form, the task card, the API that saves tasks and a new test.
  3. Measures. It gives a score from 1 to 5 for complexity and another for impact, each with a one-line reason. In the example: complexity 3, because it is four files in two areas, the screen and the API; impact 2, because it helps planning, but you can live without it today.
  4. Avoids duplicates. It searches for similar tasks. If one already covers the request, it suggests adding to it instead of creating another.
  5. Checks clarity. It gives a score from 0 to 100%. Every gap becomes a question, and the task only goes on the roadmap at 85% or more. In the example, it did not say whether the date is required. The PO assumes it is optional and records the question.
  6. Estimates from data. Time and effort are not an AI guess. The app itself calculates them from past runs of similar complexity and says how many runs it was based on.

In the end, the task comes out written with context, acceptance criteria and one piece of advice: run it alone or together with another. Nothing is saved without my click.

Placing it on the roadmap

After the triage, the PO places the task on the roadmap, next to everything already planned. The criteria:

In the example, the PO found another open task that touched the same card: showing the task's priority. It put both in the same group, in Validated mode ("it is a screen: look before paying for review and tests"), in the first stage where nothing else touched that screen. A third task, exporting tasks as CSV, changed the same API and went to the next stage, with the reason: "edits the same file".

Calibrating the PO

The PO does not decide on its own how much risk and how much cost to accept. I calibrate that with two five-step controls.

Speed or quality. Sets the pace of the roadmap:

Economy or generosity. Sets how much each run spends:

When the two controls ask for different group sizes, the cost one wins. And I can ask for an exception for a single task, without changing the calibration: "plan this one on economy".

The roadmap that refills itself

With the living roadmap on, when the last stage ends, the app asks the PO for the next ready tasks, the smallest first, and keeps going. It stops when nothing ready is left or when the day's budget runs out. And it never answers an approval that is mine.

Where it still gets things wrong

What changed for me

I became a PM. I decide what goes in and approve with one click. The PO decides how and when. Planning, which used to be the part I did in my head between one session and the next, became a step of the workflow, with written criteria and a reason for every decision.

The rule that stayed

Letting go of the wheel is not letting go of the car. All along the way, one rule did not change: automation never crosses a human approval. Not the supervisor, not the PO, not the living roadmap. They propose, organize and execute. I am the one who approves.

The next step

If AI was already driving during the day, the next step was letting it drive at night. In the next chapter, I went to sleep and woke up to the work done (chapter 3), I tell the first night hour by hour: the roadmap running in two lanes, the ten tasks delivered and what I found in the morning.

Next chapterI went to sleep and woke up to the work doneThe first full night: a roadmap in stages, not a single prompt from me, and 10 tasks delivered, tested and merged by morning. ← All chapters

Newsletter

Get the next chapters.

One email when a new chapter is out. No spam, unsubscribe anytime.