Internal Tools

Why Automation Projects Fail: A Pre-Mortem Before You Build

For a process owner who wants to find the failure while it is still a design decision, not after the tool has users, credentials, and silent wrong runs.

Uli PrantzBuilds and operates all-agents
Published
Key takeaways

Key takeaways

  • Automation fails early when the team encodes an unstable or disputed process.
  • Happy-path demos hide the exception volume and consequence that dominate production.
  • A tool without an owner, monitoring, and a manual fallback is already a future incident.
  • Broad permissions and ambiguous success states make failures harder to contain and prove.
  • Use real acceptance and failure cases, then release gradually with a repair path.
Automation projects fail when they encode an unstable process, optimize a visible click instead of the end-to-end job, ignore exceptions, grant unsafe authority, cannot verify external effects, or launch without ownership, monitoring, fallback, and a change path. Run a pre-mortem before building: assume the tool failed six months later, then identify the process, data, control, dependency, reliability, adoption, and ownership conditions that caused it.

Assume the project failed, then make the causes testable

The internal-tool lifecycle is wider than its interface. A pre-mortem uses that scope while changes are still cheap. Ask each participant to write a specific future failure independently, then group the answers by condition rather than debating whose forecast is most likely.

Simulated pre-mortemSimulated example data
“Six months after launch, the supplier-approval tool is bypassed. Reviewers stopped trusting its summaries after two stale-data cases. A field change broke one integration silently, the original builder moved teams, and nobody owned the exception queue. People returned to email, but the scheduled workflow kept creating incomplete records.” Each sentence can become a requirement, test, metric, or owner.

Use seven failure families

Find the condition and the evidence that would disprove it.
Failure familyEarly warningDesign response
ProcessOperators disagree on normal path or finish stateObserve work and resolve policy before build
DataInputs are stale, missing, duplicated, or lack a source ownerDefine sources, freshness, validation, missing-data path, and business keys
ExceptionsDemo uses only clean casesTest recent awkward cases and create owned exception states
AuthorityShared broad credentials or unclear approval effectLeast privilege, default deny, explicit gates, and evidence
ReliabilitySuccess means a function returnedVerify business postconditions, monitor, reconcile, recover, and fall back
AdoptionUsers cannot correct, explain, or trust the resultDesign with operators; expose state, evidence, feedback, and correction
OwnershipThe builder is the only responderName service, decision, security, change, support, and retirement owners

Automation multiplies the direction it is given

Google's automation chapter calls automation a force multiplier rather than a panacea. A correct stable process gains speed and consistency. A wrong rule, broad permission, or unverified side effect gains reach.

The first release should therefore minimize blast radius: narrow users and data, draft or reversible actions, rate limits, approval before consequence, and an active manual fallback.

Convert each predicted failure into a release test

  1. 01Make the condition observableTrigger
    Define a metric or evidence signal for stale input, exception backlog, denied access, duplicate effect, correction, or fallback activation.
  2. 02Create a representative caseHuman approval
    Use a sanitized real example with expected state, effect, evidence, and owner.
  3. 03Exercise the controlCode
    Prove validation, gating, containment, reconciliation, rollback, compensation, or escalation behaves as specified.
  4. 04Assign the responseHuman approval
    Name who receives the signal, expected action, clock, and backup.
  5. 05Retain the caseCode
    Add corrected production failures to the regression set and rerun them before changed behavior ships.

Release when the team can operate a wrong run

  • A named owner can explain current behavior, authority, dependencies, and users.
  • Normal, boundary, exception, duplicate, stale, denied, timeout, and recovery cases pass.
  • A wrong or ambiguous external effect stops, preserves evidence, and has an owned reconciliation path.
  • Users know the scope, limitations, correction path, and manual fallback.
  • Monitoring measures business outcomes and failure effects, not only technical uptime.
  • Changes are versioned, regression-tested, approved, communicated, and reversible where feasible.

Limitations and when not to use this

  • A pre-mortem surfaces plausible risks; it cannot identify every failure or replace security, privacy, legal, or domain review.
  • The simulated example is illustrative and is not a customer result or product capability claim.
  • Do not use gradual rollout to experiment with unacceptable harm. Some actions require controls and qualified approval before any live exposure.

Sources

  1. The Evolution of Automation at GoogleGoogle Site Reliability Engineering Accessed 14 August 2026
  2. Testing for ReliabilityGoogle Site Reliability Engineering Accessed 14 August 2026
  3. Secure Software Development Framework 1.1NIST Accessed 14 August 2026

Assess the riskiest action

Score the action whose incorrect execution would be hardest to detect, reverse, or contain, then design its control.

Assess the riskiest action
About the author

Uli Prantz

Builds and operates all-agents

Uli Prantz builds all-agents, the process-automation platform this site documents. He writes about the operational side of automating recurring business work: where deterministic code beats model judgment, where it does not, and where a human still has to approve.

Bring one process. We will scope it in 30 minutes.

You leave the call knowing whether it is a fit, what can become code and what still needs a person.

Book a discovery call