When my wife was pregnant with our first, I did what any reasonable person with 1,300 automations would do.
I automated my paternity leave.
The Plan Was Elegant
One trigger, everything fires:
- Calendar blocks out eight weeks automatically
- Out-of-office reply goes live
- Every client I managed gets a personal email: my wife has gone into labor, I’ll be out for eight weeks, here’s who to contact
- The team gets an internal message: she’s in labor, I’m out, handle it
One button. Everything handled. I could walk out the door the moment it happened without opening a single app.
I built it, tested it, felt very proud of myself, and went to bed.
What Actually Happened
I woke up to 47 congratulations messages.
My wife was asleep next to me. She was approximately two weeks from her due date. She had not gone into labor.
My automation had fired.
I am still not entirely sure exactly why. Something about the trigger condition I had configured in a hurry, wanting to have it done. It doesn’t matter. What matters is that I had sent a personal “my wife is in labor” email to every client I managed, gone to sleep, and woken up to the professional and personal consequences of that decision.
The clients were mostly lovely about it. There were some confused follow-up messages. There was one that said “wait, did she have the baby?” that required a deeply awkward reply.
My manager thought it was very funny. I did not think it was very funny. My wife thought it was medium funny. She is generous.
The Part Where I Should Have Already Known Better
Here is the thing: the automation was correct. The logic was right. The emails were warm. The calendar blocks were accurate. Everything would have worked perfectly, at the right moment, with the right context.
The problem was not the automation. The problem was that I had built an irreversible action with no confirmation step.
There are two kinds of things automations do. Things you can undo, and things you cannot.
Updating a record: undoable. Setting a calendar block: undoable. Sending a personal email to every client you manage announcing that your wife is in labor: not undoable. Not even a little. Not in any version of reality where you would like to remain employed.
For the second category, there needs to be a human in the loop. Not at every step. Not even at most steps. Just at the moment right before something leaves your control forever.
The Framework That Should Have Been Obvious
I now think about every automation in terms of reversibility before I build it.
Reversible (automate freely):
- Updating records or databases
- Setting calendar blocks
- Drafting messages for review
- Flagging things for human attention
- Moving data between systems
Irreversible (requires a confirmation gate before proceeding):
- Sending emails to anyone, especially clients
- Posting to Slack, especially public channels
- Publishing anything externally
- Any communication that will require explanation if it fires wrong
The confirmation gate does not have to be complicated. A Slack message to yourself that says “about to send this to X people, here’s what it says, click to confirm” takes about twenty minutes to build. The benefit is that you do not wake up to 47 congratulations messages for a child who does not yet exist.
What I Actually Changed
I added a confirmation step.
Now when the trigger fires, I get a message. It tells me exactly what is about to happen, who is going to receive it, and what it will say. I click confirm and everything runs. I click cancel and nothing happens.
My daughter was born two weeks later. The automation ran exactly as designed. The emails went out. The clients were lovely. My manager was less amused the second time, which is fair.
The automation was not broken. It just needed an adult in the room at the exact moment it mattered.
The Broader Point
Every automation that touches the outside world has a moment of no return. A step where what you are doing becomes real and cannot be recalled.
Find that step. Put a door on it. The door does not need to lock automatically. It just needs to exist.
The fishing score runs unattended because the worst outcome is a bad night on the water. The paternity leave announcement does not run unattended because the worst outcome involves a confused wife, 47 clients, and an extremely awkward conversation about the nature of labor.
Know the difference. Build accordingly.
Blake Bailey runs Bailey Business Ventures, an AI transformation consulting practice. He has built 1,300+ production automations, accidentally announced a baby that had not yet been born, and is now the foremost expert in confirmation gates for irreversible life events.