Strategy

How to Calculate Automation ROI: the Formula Engineering Managers Use

May 2026 · 9 min read

Engineering managers and ops leads need a defensible number when proposing automation projects. Hand-waving "it'll save us time" doesn't survive a CFO conversation. Here's the formula we use on every project and a worked example showing a 5x return on a typical Slack bot build.

The formula

Annual ROI = (hours_saved_per_week x fully_loaded_hourly_rate x 52) - one_time_build_cost - annual_maintenance_cost

Four numbers, no magic. The hard part is honest estimation, not the arithmetic.

Estimating each input

hours_saved_per_week

The most lied-about number in automation. Methodology:

  1. Pick 3 people who do the manual task today
  2. Ask each for an honest weekly time estimate — separately, not in a meeting
  3. Take the median, NOT the average (averages inflate)
  4. Multiply by 0.8 (the automation won't be perfect; humans will still touch some cases)

If two of three people say "1 hour per week" and one says "5 hours per week", your number is 1 hour x 0.8 = 0.8 hours, not 7/3 x 0.8 = 1.9 hours. The outlier is usually counting context switching, not task duration.

fully_loaded_hourly_rate

Salary alone undersells. Use: (salary + benefits + overhead) / 1,800 working hours per year.

European engineering rule of thumb: gross salary x 1.4 = fully loaded. Then divide by 1,800.

Examples:

  • HR person at 45,000 euro: 63,000 / 1,800 = 35 euro/hour
  • Mid-level engineer at 70,000 euro: 98,000 / 1,800 = 54 euro/hour
  • Senior engineer at 100,000 euro: 140,000 / 1,800 = 78 euro/hour

one_time_build_cost

If you outsource: the contract price. If internal: engineer_count x build_duration_hours x fully_loaded_hourly_rate.

Critical: include the manager's time for spec review, design review, and QA. Typically 20% on top of engineer hours.

annual_maintenance_cost

Three components:

  • Hosting (VPS, managed Postgres, OpenAI API): typically 50-150 euro per month for a Slack bot
  • Bug fixes + minor updates: 2-4 hours per quarter at fully loaded engineer rate
  • Major upgrades when a dependency breaks: 1 day per year

For a typical custom Slack bot: hosting 720 euro + maintenance 12 hours x 75 euro = 1,620 euro per year.

Worked example

Custom Slack bot that auto-routes customer support tickets in a 5-person support team.

VariableValueSource
hours_saved_per_week6Median of 3 support agents' estimates x 0.8
fully_loaded_hourly_rate40 euroSupport agent salary 50k / 1,800 x 1.4
build_cost4,500 euroFixed-price contract
maintenance_cost1,200 euro/year60 euro hosting x 12 + minor fixes

Annual ROI = (6 x 40 x 52) - 4,500 - 1,200 = 12,480 - 5,700 = 6,780 euro in year 1.

In year 2 there's no build cost: 12,480 - 1,200 = 11,280 euro.

3-year ROI: 6,780 + 11,280 + 11,280 = 29,340 euro on a 4,500 euro build. 6.5x return.

When to NOT automate

  • The task changes every quarter. Automation amortizes over years; rebuilding it kills ROI.
  • Frequency is too low. A task that happens 4 times per year saves at most 1 hour per year. Not worth a 3-week build.
  • The human task involves judgment. If 30% of cases need human override, automation might add friction, not remove it.
  • The team needs to learn the task. New hires need to do PTO requests by hand once to understand the policy.

Honest payback period

Most automations should pay back in under 12 months. If your spreadsheet shows 36 months, the project is marginal and you should pivot to a higher-ROI candidate. There are always 5 candidates competing for build budget — pick the one with sub-12-month payback.

What CFOs actually care about

The discounted version. Apply a discount rate (usually 10-15% for SMBs reflecting opportunity cost) to future savings:

NPV = Σ(annual_savings / (1 + discount_rate)^year) - build_cost

For our worked example at 12% discount rate over 3 years: NPV = 6,780/1.12 + 11,280/1.25 + 11,280/1.40 - 0 = 6,054 + 9,024 + 8,057 = 23,135 euro NPV. Positive NPV at 12% = the project beats putting the same cash in a 12% return investment. CFOs nod.

Comparison

Build cost Hours saved/week Loaded rate Year 1 ROI Payback (months)
3,000 euro 2 40 euro 1,000 euro 12
3,000 euro 4 40 euro 5,000 euro 5
5,000 euro 6 50 euro 9,000 euro 5
8,000 euro 8 60 euro 16,000 euro 4
15,000 euro 10 75 euro 23,000 euro 5

FAQ

What discount rate should I use?
10-15% for SMBs (matches typical opportunity cost). Larger companies with cheaper capital can use 5-8%. Don't over-think it; the input estimates have more error than the discount rate.

Should I include freed-up capacity revenue?
Only if the freed time is provably redirected to revenue-generating work. Otherwise it's vanity savings — the person just works less, not more.

What about quality improvements?
Hard to monetize directly. Quantify the downstream effect: e.g., 'cuts ticket escalations by 30%' translates to fewer manager interventions. Use that as a separate line item.

How do I justify automation that doesn't save time?
It usually still does — it shifts time from low-value to high-value work. If the bot answers customer questions instantly, you're not saving support hours, you're saving customer churn. Quantify the right thing.

Need help building an ROI case for your project?

1-hour scoping call: we'll model hours saved, costs, and 3-year NPV for your top automation candidate.

Book a discovery call

Related Posts

Custom Slack Bot Cost Zapier Top 10 ROI
← All blog posts

Defensible ROI numbers, not vibes

We model the ROI before you approve the build. Same formula every time.

Book a discovery call