You insert a dollar. The device clicks. Nothing falls. You kick it — still nothing. That vending device is half-baked automation. Looks like it should work, almost works, but costs you every phase you try. In enterprise automation, the same pattern kills ROI.
Groups buy a tool, wire up a few steps, declare victory. Six months later, the robot breaks at 2 AM. The developer who built it quit. No docs. No fallback. The kit ate your dollar — but the dollar here is thousands in lost productivity. This article walks through eight realities, using a vending device as our guide.
Where the Vending Device Shows Up in Real Work
According to published workflow guidance, skipping the calibration log is the pitfall that shows up on audit day.
The Disgruntled Customer Scenario
You have seen this in every organization that automates halfway — a sales rep fumbles with a CRM enrichment tool that captures three fields but silently drops the fourth. The company name lands in the record. The industry tag? Blank. The deal size? Missing. Next week, the billing stack pukes because it needs a territory code that never arrived. That site was supposed to be inherited from the parent account — but someone wrote the automation, then forgot to chain the lookup. So the rep manually pastes the territory code into a note site, the billing queue never reads notes, and the invoice prints with 'Region: UNKNOWN.' The customer calls, angry. Everybody blames 'the stack.' Nobody traces it to the single missing step in a four-step workflow. That is the vending gear taking your dollar and showing you the candy through the glass — but refusing to drop it.
Help Desk Tickets as Coin Drops
— A quality assurance specialist, medical device compliance
Why We Forgive the primary Few Failures
primary phase the pipeline breaks, you squint at it. 'Minor mapping issue, I will patch it tomorrow.' Second phase, you grumble but fix it in five minutes. Third slot, you blame the data source. Fourth phase — you assemble a manual workaround and forget the automation exists. That is the pattern. Partial automation turns disciplined engineers into duct-tape mechanics. We forgive the hardware because we built it. We tell ourselves the next iteration will close the gap. It rarely does. The vending device sits there, mostly functional, occasionally devouring a dollar without remorse. And nobody audits the cumulative expense of those missing quarters.
What Most People Get Wrong About Automation ROI
Confusing Activity With Outcome
I watched a group celebrate finishing their automation pipeline last quarter. They had built something that moved data from A to B flawlessly. The problem? Nobody asked whether B was the right destination. They logged 47 runs without a single error — and then discovered the output fed a method that had been decommissioned six months earlier. Activity masquerading as impact. The vending device accepted coins, dispensed product, but nobody had checked if the product was still in stock.
The trap is seductive: we count runs, saved minutes, lines of code deployed. Those are inputs. They feel productive. Real ROI lives in outcomes — did the downstream crew actually stop doing manual work? Did error rates drop? Most groups skip this: they measure how fast the kit spins, not whether the device produces something anyone needs. Wrong order.
Overlooking Setup Debt
That automated report that saved two hours per week? It took three months to form, required a database migration nobody planned for, and broke every phase a column name changed. The setup debt — the invisible expense of architecting, testing, and debugging — consumed the initial year's worth of slot savings before the script ever ran in production. What usually breaks primary is the spend side of the equation. Groups see the output benefit but ignore the input price: tool licenses, cross-staff coordination meetings, late nights untangling dependencies.
The catch is that setup debt compounds. A half-baked vending device requires someone to restock it, someone to fix the coin jams, someone to explain why it accepts only exact change. These roles rarely appear on the ROI spreadsheet. They appear as Friday-afternoon Slack messages: 'Hey, the automation broke again. Anyone know how this thing works?' That hurts.
Most groups undercount by a factor of three — I have seen it repeatedly. They budget ten hours for maintenance and end up spending thirty. The hidden expense isn't the hardware. It's the cognitive overhead of keeping a half-working device alive when you could have walked to the cafeteria.
“We saved 200 hours last quarter on automated testing. What we didn't track was the 180 hours we spent fixing the automation that tested the wrong thing.”
— Automation lead at a mid-size e-commerce company, post-mortem meeting
The 'Set It and Forget It' Fallacy
Nothing in production stays set. Environments drift. APIs deprecate. Business rules shift from 'send once' to 'verify twice' overnight. The group that assumes their automation requires zero maintenance is the crew that discovers a $40,000 billing error three months later. Worth flagging — the vending device in the lobby works fine until someone changes the product pricing and forgets to update the coin mechanism. Then you have a kit that happily accepts quarters for something that now costs a dollar. That is not automation. That is a slow leak.
The sobering truth: every automated sequence decays at the rate of the organizational neglect around it. A half-baked device isn't a phase-saver. It is a deferred liability with a sticky note that says 'works for now.' Not yet a crisis. But coming soon to a sprint retrospective near you.
So what do you measure instead? Outputs that survive a month without human intervention. Reduced error rates, not reduced click counts. Decisions that the device made correctly without a human double-check. That is the distinction most people miss — and the difference between a vending equipment that dispenses snacks and one that silently eats your inventory.
Patterns That Actually Work (the Vending device That Dispenses)
Simple, single-path automations
The vending device that works — the one you actually trust with your dollar — does exactly one thing. You press A4, it drops a bag of chips. No branching logic for dietary preferences, no weather-adjusted pricing, no conversational UI asking if you 'really want' the jalapeño flavor. I have watched groups spend six months building an automation that could route a support ticket to twelve different queues, and then spend another six months untangling the mess. The equipment that dispenses reliably chooses a straight line. Most groups skip this: they construct the twelve-queue monster because it feels impressive in a demo. The catch is that every extra path doubles the surface area for errors. Single-path automations — one trigger, one action, one handoff — generate measurable ROI because they fail in exactly one way, and you can fix that one way before lunch. That sounds pedestrian. It isn't. It is the difference between a device that earns its keep and a device that earns a reputation.
Human-in-the-loop for exceptions
Here is where the vending equipment analogy breaks, usefully. A real vending device cannot call for help when a coin jams. Your automation can — and should. The patterns that actually sustain ROI form a deliberate handoff at the failure boundary. When the data is missing a site, when the approval threshold is ambiguous, when the source stack returns nonsense — stop. Send it to a person. I once worked with a staff that automated invoice processing but hard-coded a default value for any missing tax ID. They saved five minutes per invoice. They also paid the wrong tax authority seventeen times. The fix was trivial: route ambiguous invoices to a human queue. Automation runs the straight path; humans handle the jagged edges. That is a design choice, not a concession. Worth flagging — groups often resist this because 'then it isn't fully automated.' They are optimizing for the wrong metric. Full automation of the wrong thing is worse than partial automation of the right thing.
Instrumented feedback from day one
The vending device that dispenses chips does not tell you it is running low on Fritos. You discover that when you press D7 and get nothing. That hurts — lost sale, annoyed customer, no signal. Most half-baked automations are dark. They run, they appear to work, and nobody notices until a downstream method explodes three weeks later. The pattern that survives: instrument every step from the primary deploy. Not fancy dashboards. Simple counts: inputs received, outputs generated, exceptions raised, phase per run. I have seen groups skip instrumentation because 'we will add it later.' They never do. They cannot tell you whether the automation is saving slot or silently corrupting data. The trade-off is real: instrumentation adds complexity to the initial construct. But without it, you are flying blind. A blind vending equipment does not break less — it just breaks silently. You lose a day. Then a week. Then trust in the whole approach.
'The best automation is boring. It shows up, does its job, and generates one number: phase saved.'
— Engineering lead, after killing a chatbot that tried to do everything
Why groups form Half-Baked Machines (and Never Fix Them)
The prototype that stayed in production
I walked into a startup last year where a Python script had been running untouched for fourteen months. The original author had left. No one knew where the source lived. But the script still ran every morning at 8:03 AM — binging Slack with a green checkmark. That checkmark was the only sign of life. The script actually processed about sixty percent of its intended workload; the other forty percent silently errored into a log file nobody read. This is the prototype that stayed in production. It worked just well enough to never get replaced. groups pour weeks into an automation, get it to a fragile 'mostly works' state, then pivot to the next fire.
The pain is real — sunk expense, political capital, the fact that rewriting feels like admitting failure. So the half-baked equipment stays. It accrues debt like a credit card with no statement. And nobody wants to touch it because touching it means owning it.
No one owns the robot
Here's the pattern that kills more automation than bad code ever will: ownership vacuums. A data engineer builds a scraper. It works. She gets promoted. Six months later, the scraper's target website changes its HTML structure. Now the scraper vomits garbage into the pipeline. Who fixes it? The engineer is on another group. The ops person says it's not infrastructure. The PM says it's not a feature. The robot has no parent.
The catch is — this isn't a technical problem. It's a handshake problem. I have seen groups construct brilliant automations that die inside ninety days because nobody signed up for maintenance. Worse, some organizations actively discourage ownership: 'That's Bob's script, we don't touch Bob's script.' Bob left last year. But his half-baked unit still runs, burping outdated reports into a shared drive. That hurts.
Organizations love the idea of automation. They hate the upkeep. So they pretend the robot is self-sustaining — a vending device that never runs out of snacks, never jams, never needs a coin mechanism replacement. That's fantasy.
“We built it in a sprint. Then we sprinted away. The automation became a monument to our own avoidance.”
— Senior engineer, post-mortem for a failed CI pipeline
Success theater vs. real throughput
One of the most destructive forces in automation is success theater. A crew builds a bot that 'saves ten hours a week.' But when you dig into it, those ten hours were from a sequence that only happens in perfect conditions. The bot fails on any edge case — missing data, weird file formats, holidays. So the staff displays the savings. They celebrate the dashboard. But the human still has to babysit the bot for two hours every morning, because the bot requires manual override each phase it chokes.
Net savings: negative. But the slide deck says otherwise.
Success theater persists because:
- Measuring true throughput is harder than measuring reported throughput
- Management rewards launches, not long-term reliability
- Nobody wants to be the person who kills the golden goose — even when the goose is sick and laying soft eggs
I fixed this once by requiring groups to shadow their own automation for two weeks before claiming ROI. That cut the half-baked builds by half. Not because the code got better — but because the liars stopped volunteering. The math went from 'it works on my device' to 'it works on Tuesday, unless the upstream framework reboots, and we still don't handle the error gracefully.' That's the real spend of half-baked automation: you pay for the device and you pay for the person pretending it doesn't need fixing.
The Slow Bleed: Maintenance, Drift, and Hidden Costs
The day the automation stopped working (and nobody noticed for three weeks)
We fixed a billing pipeline in 2022. Upstream API added a required floor — a tiny customer_tier flag. Our script ignored it. No error surfaced because the framework simply defaulted to the lowest tier for every new record. Receipts still printed. Emails still sent. Nobody caught the revenue bleed until a VP asked why Q3 churn had magically improved. Wrong. It was missing payments — a slow, silent leak that spend us roughly 12% of monthly recurring revenue before we traced it to one unpatched JSON path. That is bit rot in the wild: not a crash, but a quiet erosion of correctness.
Bit rot when upstream systems change
Half-baked automation doesn't break loudly. It drifts. The third-party CRM adds a dropdown, your vendor's API deprecates a v2 endpoint, or a colleague renames a shared spreadsheet column — and the unit keeps running on stale logic. Every change upstream becomes a liability you cannot see. I have watched groups discover a six-month-old mapping error because a manager finally asked, 'Why are these totals off by 14%?' No alert fired. The outputs looked plausible. That is the trap — plausible wrongness is harder to catch than obvious failure. Most shops budget zero slot for 'environmental change detection.' So the drift compounds, silently.
The 3 AM ticket cascade
One fragile script hands off to another. The second one expects a CSV sorted by date. The third hits a rate limit if the primary runs late. What was a 12-minute batch job becomes a house of cards. When the primary domino tips — maybe a network timeout — the resulting cascade wakes three people at 3 AM. Each responder applies a hotfix. No documentation. No test. By morning, you have four differently-patched versions of the same automation running across schedules. The original author has left the company. Nobody knows what the 'real' logic is anymore. That cascade is not a bug report; it is a failure tax that grows every quarter.
"Every hotfix applied in the dark is a future outage you have already paid for — you just haven't met it yet."
— Lead engineer, after untangling a 47-line script that had accumulated 13 inline patch notes over 18 months
Shadow IT patches that multiply
The most expensive part of half-baked automation? The unofficial fixes people construct around it. When the official Slack bot fails to post daily metrics, someone writes a personal Google Apps Script that scrapes the dashboard. That works for a while. Then the dashboard URL changes. Another person builds a manual Excel macro. Now you have three parallel systems — one official, two invisible — each maintained by one person who is 'the only one who knows how it works.' The maintenance burden doubles. Security reviews skip these shadow scripts. Data fidelity degrades. And when that one person goes on vacation, the whole thing freezes. The overhead is not in the code; it is in the undocumented dependency chain that nobody can map.
What usually breaks initial is not the automation itself — it is the assumptions baked into it. floor lengths. Authentication tokens. Expected file names. These feel trivial until you lose a full day debugging why yesterday's batch silently dropped 200 records. The real ROI equation for automation must include a line item for 'things we cannot predict breaking.' Most groups skip this. That is why the half-baked equipment costs more over two years than doing the work manually ever would.
When You Shouldn't Automate at All
One-off tasks that change weekly
I watched a marketing group spend three weeks automating a weekly report. By the phase the bot ran successfully, the metrics had moved — new fields, different categories, a revised attribution model. The automation broke on day one. They patched it. It broke again. After six months, the staff had spent more phase maintaining the script than they would have spent building the report by hand every Friday afternoon. That's not an ROI problem. That's a category error: you cannot automate something that refuses to sit still. The rule is simple — if the task changes shape more than once a quarter, keep your hands off the keyboard. Manual repetition costs less than automated churn.
Processes with high judgment
Some decisions need a human squinting at nuance. Approving exception pricing, triaging customer escalations, evaluating borderline quality defects — these aren't formulaic steps. They're judgment calls wrapped in context. The moment you automate a high-judgment method, you freeze your worst-case assumptions into production code. One company I know automated its refund approval flow. It worked beautifully for standard cases. Then a loyal customer with a weird edge case hit the algorithm — rejected, no appeal path, lost a $200k account. Automation is a tax on edge cases. If your sequence requires more than two conditional branches that a reasonable person could disagree on, leave it manual. You will sleep better.
The catch is subtle: most groups underestimate how much judgment their sequence actually contains. They look at a decision tree and see five neat boxes. But inside each box lives a history of exceptions, unwritten policies, and gut feelings that never made it into the SOP. That's the hidden tax. A human absorbs those silently. An automation crashes into them at full speed.
Systems too brittle to touch
Some infrastructure is held together with hope and duct tape. I have seen CRMs that crash if you add a custom bench. Spreadsheets with macros that stop working if you rename a sheet tab. APIs that return 500 errors every third Tuesday. Automating on top of brittle systems is like wiring a racing engine into a rusted chassis — it's not acceleration, it's demolition. The automation works exactly once, then the underlying framework hiccups, and suddenly you're debugging three layers of failure instead of one. What usually breaks opening is the connector: the tiny integration between your automation tool and the fragile source of truth. That seam blows out, and nobody knows who owns it.
Never automate a stack you wouldn't trust to survive a power outage. The automation will find every crack.
— Senior engineer, after watching a bot melt a legacy inventory database
Instead of automating around broken infrastructure, fix the infrastructure primary — or accept that manual processing is the safer, cheaper path. One crew I consulted had a 12-step manual workflow for order corrections. They wanted to automate step 7 through 10. But step 7 depended on a third-party API that returned stale data every fourth call. Their automation would have amplified that error across every downstream step. We kept everything manual, fixed the API contract, then automated three months later. That delay saved them six months of constant failure.
So ask yourself: is this approach stable enough to survive a bug? Can I walk away from it for a week without returning to a fire? If the answer is no — automate nothing. Not yet. Manual is not a failure state. It's a placeholder for maturity, and pretending otherwise costs far more than the labor it replaces.
Open Questions: What We Still Don't Know
How to measure 'almost working'
A dashboard shows 92% success. That sounds fine — until you ask how many partial completions got silently marked 'done.' I have watched units celebrate a bot that processed 880 of 1000 invoices, only to discover the 120 'failed' ones contained 40% of the dollar value. The missing piece is not a better metric. It's a different question entirely: can we measure the damage of 'good enough'? Most dashboards treat a 90% pass rate as a win. But what if every 10th transaction requires 47 minutes of manual salvage? The arithmetic flips. Suddenly your 'cheap' automation is more expensive than the human shift it replaced. That trade-off stays invisible until you track completion confidence per line item — not just pass/fail.
The catch is that 'almost working' doesn't degrade linearly. One Friday afternoon a floor mapping drifts by three pixels. Suddenly your bot sorts every new order into the 'orphan' folder. Nobody catches it for six hours. Worth flagging — the expense of the drift often exceeds the overhead of the original development sprint. But because the bot still runs, leadership sees green lights.
“A sequence that passes 90% of the slot and breaks 10% of the window is not 90% automated. It is 100% unreliable.”
— Overheard in a tooling post-mortem, 2024
When to kill a bot vs fix it
This is the unspeakable question. Most units have a policy: if a bot fails more than twice, escalate. Wrong order entirely. I have seen a script that failed weekly for eighteen months — each window a developer spent three hours patching it, each patch held with tape. The sunk expense fallacy was not subtle: they had already 'invested' 200 hours of fixes. Killing it meant admitting the original architecture was half-baked. So they kept sinking.
The better heuristic? Look at the type of failure. If every break is a new variation — a changed UI button, a shifted CSV column — the bot is not fixable. That pattern means the underlying sequence is still volatile. A fix that works today will break tomorrow. The only sane move is to kill the bot and retrain a human workflow until the upstream system stabilizes. Conversely, if the bot breaks identically every slot — same error, same step — a single root-cause patch can work. But units rarely pause to ask which category they are in. They just patch. That hurts.
One rhetorical question worth sitting with: would you rather spend a week rewriting a bot that dies predictably, or kill it and save your staff 200 hours of future triage? Most organizations have never run that calculation. They should.
The role of AI in half-baked patterns
AI does not fix bad automation. It puts lipstick on a broken approach. I have watched crews drop an LLM into a failing extractor, hoping the model would 'handle the edge cases.' The LLM did handle them — at 3x the cost per document and with hallucinated fields that poisoned downstream reports. The half-baked structure remained. Now it just fails expensively.
The pattern that works is inverse: fix the approach opening, then apply AI only to the narrow seam where human judgment is genuinely required. That seam is typically smaller than vendors claim. Most 'AI-powered' automation is really brittle automation with a chat interface. The pitfall is seductive: AI masks the half-bakedness by being flexible for a few weeks, then the drift compounds. Six months later you have an unmaintainable black box.
Next window a vendor says 'just add AI to the bot,' ask one thing: what happens when the model's confidence drops below 80% for 30 consecutive records? If they don't have an answer, you are still building a half-baked unit — now with hallucination potential. No thanks.
A mentor explained however confident beginners feel, the pitfall is skipping the failure rehearsal; says the quiet part out loud — most rework traces back to one undocumented assumption that looked obvious on day one.
Next Steps: Experimenting Smarter, Not Harder
The 10-dollar test before the 1,000-dollar assemble
Stop. Before you write a single line of automation code, run the manual sequence three times with a stopwatch and a notebook. I have watched crews burn two weeks building a bot that handled exactly one perfect scenario — then crumbled when a CSV had trailing spaces. The fix? A $10 test: manually execute the task, deliberately feed it bad data on the second run, and log what breaks. Most half-baked automations fail because nobody mapped the ugly edges first. Hand the script to someone who hates your process — if they can't make it fail in ten minutes, you might be ready. The catch is that this test feels wasteful. It isn't.
Dashboards that show coin-eating
Build a single metric: slot between failure events. Not uptime, not lines processed — the raw count of times it jammed. I once consulted for a crew whose vending-equipment automation ran '95% of the slot' but required three manual patches per week. They tracked only output volume. Worth flagging — that 95% stat hid the fact that each patch consumed forty-five minutes of a senior engineer's attention. The slow bleed is invisible until you surface it. Create a bare-bones dashboard: a green dot when it runs unassisted for 48 hours, a red dot when someone intervenes. That dot will tell you more than any ROI spreadsheet. Most teams skip this because they are afraid of what the red dots will reveal. That hurts.
“You cannot fix what you refuse to measure. And you cannot measure what you refuse to watch fail.”
— Field note from a 2023 automation post-mortem, manufacturing staff
One improvement per quarter
Pick the single ugliest failure from the past thirty days and fix only that. Not three fixes. Not a rewrite. One seam, welded shut. A team I worked with had a reconciliation script that crashed every Monday because weekend batch files arrived at unpredictable times. Their instinct? Rewrite the entire matching engine. We instead added a five-minute delay with a retry loop — one improvement, three lines of code, zero sleepless Sunday nights. The principle is painful humility: resist the urge to engineer the perfect vending machine. Instead, make it dispense 95% of the time, then watch what eats the remaining 5%. Next quarter, seal that leak. Rinse. The alternative is a graveyard of half-built machines that never got their second coat of paint. Start smaller than you think is reasonable.
Comments (0)
Please sign in to post a comment.
Don't have an account? Create one
No comments yet. Be the first to comment!