Flat editorial illustration of a dense stack of identical gray status bars beside one isolated red bar, representing the few automated messages that actually deserve attention
|

What I Learned Running Four Bots and Zero Employees

A few months ago I went back and counted how many automated status messages my own systems had sent me. Hundreds. Health checks, run summaries, all-clear notices, nightly recaps.

Then I counted how many I had replied to, or acted on, or honestly even read past the first line.

Almost none.

That ratio is the single most useful thing I have learned from building automation, and it took me embarrassingly long to see it, because I built every one of those messages on purpose and was proud of them at the time.

Automation should spend its own attention, not mine

Here is the mistake, stated plainly. I built systems that did work, and then I built a second layer whose entire job was to tell me the first layer had done the work.

That second layer felt like responsibility. It was actually a tax.

Every status message is a withdrawal from a finite account. You have a certain number of things you can look at in a day and still think clearly. When a system pings you to say it succeeded, it has spent a piece of your attention to buy you nothing, because success is the expected case and the expected case is not news.

The rule I use now: a system may spend its own attention freely, and mine almost never.

That means the default is to act, not to ask. If something fails and there is a known fix, apply the known fix. If it is still broken after that, then and only then come find me. A message should mean a decision is required, not that a thing occurred.

The moment I started deleting notifications instead of adding them, the systems got more useful, not less.

The morning report nobody read

I built a daily digest once. Nicely formatted, arrived first thing, summarized everything overnight in one clean block.

I read it religiously for about nine days. Then I skimmed it for a month. Then I stopped opening it, and it kept arriving every morning for a long time before I noticed I had stopped.

The part worth sitting with: the report was correct the entire time. It was accurate, on schedule, well organized, and useless. Nothing was wrong with the reporting. The problem was that reporting is not a deliverable.

If a digest tells you something you are not going to act on, it is not information, it is decoration. And decoration you receive every single morning at the same time becomes furniture within two weeks. Your eyes go straight past it.

The test I use now before I build any recurring report: what will I actually do differently on the day it says something unexpected? If I cannot answer that in one sentence, I do not build it.

The value was in the work, not the telling

The things that genuinely earned their keep over the last couple of years were the silent ones.

Files that ended up where they were supposed to be. Backups that ran. A process that died at 4am and restarted itself before I woke up, and never mentioned it. Records that were up to date because nobody had to remember to update them.

Not one of those needed to announce itself. Their value showed up as an absence. Nothing broke, nothing was lost, nothing was sitting in the wrong folder waiting to become a problem in three weeks.

That is a hard kind of value to feel good about, which I think is exactly why people over-build the reporting layer. The dashboard is visible. The digest is visible. You can show someone a dashboard. You cannot show someone the crisis that quietly did not happen.

But you feel it at the end of the quarter, when the boring stuff is simply done and you cannot remember doing it.

The employee metaphor breaks fast

I called them bots for a while, which was convenient shorthand and a bad mental model.

An employee needs context, direction, feedback, and a relationship. A running process needs none of that. It needs a clear job, sane defaults, and permission to handle its own routine failures.

Where the metaphor really misleads you is on delegation. When you delegate to a person, part of the job is staying informed. Status updates are how a human team stays coordinated, and they are legitimately worth the cost.

Software does not need to be coordinated with. It needs to be correct. Copying the status-update rituals of a human team onto a set of scripts gives you all of the overhead and none of the benefit.

I stopped thinking about it as four employees and started thinking about it as four appliances. My refrigerator does not send me a nightly summary. If it did, I would stop reading it in nine days.

What I would do differently

Build the doing first and the telling last, if at all. The order matters. When you build the reporting alongside the work, the reporting quietly becomes half the project.

Make every notification earn its slot. My working rule: if I ignore the same message three times, it gets deleted or downgraded to a log I can go read when I actually want it. No exceptions, no sentimentality about how long it took to build.

Log everything, send almost nothing. A log costs nothing until you need it. A message costs something every time it arrives.

Measure the automation by what it finished, never by what it reported. This is the one I still have to remind myself of. It is genuinely satisfying to watch a system narrate itself. It is not the point.

I wrote a while back about what building with AI actually looks like day to day, and this is the unglamorous back half of that same story. The tools make it trivially easy to build the layer that talks about the work. Resisting that is most of the skill.

The best thing I ever built never told me it was working. I only figured that out because nothing broke for six months.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *