Guide · AI

Automate the deadline work, not the thinking

Most AI automation projects fail on selection, not technology. The tasks worth automating share a specific shape, and the ones that burn money share a different one.


The filter

A task is a good automation candidate when it is repetitive, structured, deadline-driven, and cheap to verify. That last one carries most of the weight: if checking the output takes as long as producing it, automation has moved the work rather than removed it.

AutomateKeep human
Drafting a first versionSending anything that commits you
Extracting fields from documentsDeciding what the fields mean for the relationship
Classifying and routing inbound messagesHandling the angry one
Chasing missing paperwork on a scheduleNegotiating price
Summarising a long threadMaking the call the thread was about
Monitoring dates and flagging expiryDeciding what to do when something expires

A scoring rubric, so the decision is not a mood

Everyone has an intuition about what to automate and the intuition is usually wrong, because it is driven by which task is most annoying rather than which is most valuable. Score candidates on five criteria, weighted. Maximum score is 55.

CriterionWeightScore 1Score 3Score 5
Frequency×3Monthly or lessA few times a weekMany times a day
Structure of the input×3Free-form, no patternSemi-structured, varies by sourceConsistent shape every time
Verification cost×2Checking takes as long as doingChecking takes half the timeChecking is a glance or a code assertion
Reversibility if wrong×2Irreversible and customer-facingRecoverable with an apologyNothing leaves the building
Input-format stability×1Upstream format changes constantlyChanges a couple of times a yearHas not changed in years

Then apply thresholds: 38 or above, build it. 28 to 37, build it but run it in shadow mode indefinitely. Below 28, leave it alone. Three worked scores, on tasks that look superficially similar:

CANDIDATE A - drafting follow-up emails to a lead list Frequency 5 x3 = 15 (dozens per day) Structure 4 x3 = 12 (lead record fields, consistent) Verification 4 x2 = 8 (skim against the record) Reversibility 2 x2 = 4 (it reaches a real person) Format stability 4 x1 = 4 --------------------------------------------- TOTAL 43/55 → BUILD CANDIDATE B - writing the monthly board narrative Frequency 1 x3 = 3 (12 times a year) Structure 2 x3 = 6 (different story every month) Verification 2 x2 = 4 (you must read every word anyway) Reversibility 2 x2 = 4 Format stability 3 x1 = 3 --------------------------------------------- TOTAL 20/55 → LEAVE IT ALONE CANDIDATE C - extracting fields from inbound invoice PDFs Frequency 5 x3 = 15 Structure 5 x3 = 15 (invoices have a fixed vocabulary) Verification 5 x2 = 10 (assert totals match line items) Reversibility 4 x2 = 8 (writes to a record, nothing sent) Format stability 3 x1 = 3 (each vendor redesigns eventually) --------------------------------------------- TOTAL 51/55 → BUILD THIS FIRST

Candidate B is the one people build, because writing the board narrative is the task the founder resents most. Candidate C is the one that pays, because verification is nearly free and nothing it produces can embarrass anyone. Resentment is not a prioritisation signal.

The ROI calculation, worked end to end

Illustrative numbers throughout — substitute your own. The point is the shape of the calculation, in particular that the review time after automation is never zero and the maintenance line is never zero either.

TASK: drafting outreach follow-ups BEFORE Frequency 60 per week Manual time per item 6 minutes Weekly time 60 x 6 = 360 min = 6.0 h Annual time 6.0 x 52 = 312 hours Error rate (sent wrong) ~3% = 1.8 items/week AFTER Review time per item 1.5 minutes Weekly time 60 x 1.5 = 90 min = 1.5 h Annual time 1.5 x 52 = 78 hours SAVING Weekly 6.0 - 1.5 = 4.5 hours Annual 4.5 x 52 = 234 hours COST Build 28 hours Maintenance 1 h/month = 12 h/year Inference (local model) ~0 marginal PAYBACK Build hours / weekly saving 28 / 4.5 = 6.2 weeks NET, at an illustrative internal value of $30/hour Value of hours saved 234 x 30 = $7,020 Less build (one-off) 28 x 30 = $840 Less maintenance (annual) 12 x 30 = $360 --------------------------------------------------- Year one net $5,820 Year two onward $6,660

Three things this calculation catches that hand-waving does not. A payback measured in weeks is a build; a payback measured in years is a hobby. A review time of zero is a lie, and pretending otherwise is how projects come in at half the promised saving. And a task that occurs twice a month cannot clear any reasonable build cost no matter how much you dislike it.

The two-tier pattern

The architecture that consistently works is two-tier. A cheap local model does the volume — drafting, tagging, extraction, overnight batches — at zero marginal cost. A frontier model does the judgement: the final pass, the hard reasoning, anything customer-facing. Between them sits the piece most people skip.

TierWhat it doesMarginal costWhat it must never do
Local model on your own hardwareBulk drafting, tagging, extraction, classification, overnight batchesElectricity onlyBe trusted without a gate; be the final word on anything sent
Automated quality gate (code, no model)Hard invariants, deterministic checks, quarantineEffectively zeroContain judgement. Every rule must be a boolean
Frontier modelHard reasoning, final polish, ambiguous cases, anything customer-visiblePer token, meaningful at volumeRun on every item when 90 percent of items are easy
HumanExceptions, irreversible actions, relationshipsThe scarce resourceSee the whole queue. They should see only what the gate could not resolve

The economics of the split are the point: the cheap tier absorbs the volume, the expensive tier absorbs the difficulty, and the gate decides which is which. Running the frontier model on everything is the most common way to make a working pipeline uneconomic. Setting the cheap tier up is covered in the local LLM guide, keeping its output machine-checkable in the structured output guide, and cutting the cost of the expensive tier in the prompt caching guide.

The quality gate is the product

Generated output at volume is worthless without an automated check, because the failure rate is never zero and one bad artefact reaching a customer costs more than the whole batch saved. A gate is a set of hard invariants, checked in code, that quarantines anything failing them.

InvariantWhat it catchesHow it is checked
Required fields present and non-emptyTruncated generations, silent API failuresPresence and length assertion per field
No placeholder text or unfilled template variablesLeaked brackets, XX, TODO, lorem ipsum, [NAME]Regex blocklist over the rendered output
Names, amounts, and dates match the source record exactlyThe single most damaging class of error: confident wrong specificsString equality against the source record, not similarity
Length and format within boundsRambling output, missing structure, wrong file typeCharacter and line counts; schema validation
Banned-phrase listAnything that would embarrass you, plus spam-filter triggersCase-insensitive substring match
Deduplication against what has already been sentThe same person receiving the same message twiceHash or key lookup against a send log
Recipient and identifier sanityWrong record joined to right templateCross-field consistency check between record and rendered text
Encoding and whitespace cleanMojibake, doubled spaces, stray markdown artefactsNormalisation pass plus a character-class assertion

Everything failing the gate goes to a quarantine folder rather than out the door. Volume without a gate is not throughput, it is liability at scale.

A worked pass and fail

SOURCE RECORD company = Ridgeline Logistics contact = Dana Osei city = Reno last_load = 2026-06-14 CANDIDATE 1 "Hi Dana - saw Ridgeline Logistics is running out of Reno. We last worked together in June. Worth a short call this week?" required fields present ......... PASS no placeholders ................. PASS names match source .............. PASS (Dana, Ridgeline Logistics, Reno) length within bounds ............ PASS (168 chars, limit 600) banned phrases .................. PASS dedup against send log .......... PASS ------------------------------------------------ RESULT: SEND-ELIGIBLE CANDIDATE 2 "Hi Dana - saw Ridgeline Logistics is running out of Sacramento. We last worked together in [MONTH]. Worth a short call this week?" required fields present ......... PASS no placeholders ................. FAIL ([MONTH] survived rendering) names match source .............. FAIL (Sacramento not in record) ------------------------------------------------ RESULT: QUARANTINED, 2 violations

Candidate 2 is the important one, because a human skimming a batch of eighty would very likely catch [MONTH] and would very likely miss Sacramento. The city is plausible, well-formed, and completely invented. That is precisely the failure class a string-equality check catches for free and human review does not.

Shadow mode, and how to measure it

Shadow mode means the pipeline runs end to end — generate, gate, log — and sends nothing. It exists so that the decision to go live is made against data rather than against optimism. Give it a defined exit condition before you start, or it runs forever or ends the first time you get impatient.

  1. Run at least 200 real items through generation and the gate. Real inputs, not test fixtures.
  2. Record the gate pass rate. The proportion of generated items that clear every invariant.
  3. Human-audit a random sample of the passes. Thirty is a workable number. You are looking for escapes: items the gate approved that a human would not have sent.
  4. Human-audit all the failures too, at least early. Failures that a human would have approved are false positives, and a gate with a high false-positive rate quietly gets switched off.
  5. Set the exit condition in advance. A reasonable one: gate pass rate at or above 95 percent, and zero escapes in 30 audited passes, sustained across three consecutive batches.
  6. Keep shadow mode running after go-live on a sample. It becomes your regression test for the day an upstream format changes.
MeasurementWhat it tells youBad result means
Gate pass rateHow good the generator isBelow 85 percent: fix the prompt or the inputs, not the gate
Escape rate in audited passesHow good the gate isAnything above zero: add an invariant, do not go live
False-positive rate in audited failuresWhether the gate is too strictAbove 20 percent: you are quarantining good work and will start ignoring the queue
Time per human reviewWhether the saving is realIf review is not much faster than doing it manually, the ROI was fiction
Distribution of failure reasonsWhere to spend the next hourOne reason dominating usually means one prompt fix removes most failures

A failure taxonomy

Every one of these will happen. Knowing the list in advance is the difference between a gate designed against reality and a gate designed against imagination.

FailureWhat it looks likeDetectionMitigation
Confident inventionA plausible city, date, or figure that appears nowhere in the sourceString equality against the source recordNever allow a specific to originate in the model
Placeholder leakage[NAME], XX, TODO, lorem ipsum surviving into outputRegex blocklistFail closed; never strip and send
Wrong record joinedRight template, wrong customer's detailsCross-field consistency assertionPass one record object, never loose variables
Silent truncationOutput stops mid-sentence at a token limitMinimum length plus terminal-punctuation checkRaise limits; assert on completion reason
Upstream format driftA vendor redesigns a PDF and extraction returns nullsSudden change in gate pass rateAlert on pass-rate deltas, not just on absolute failures
Duplicate sendThe same recipient contacted twice in a weekSend-log key lookup before dispatchDedup at dispatch time, not at generation time
Encoding damageSmart quotes turning into mojibake in a plain-text channelCharacter-class assertionNormalise to a known character set at render
Partial batchA run dies halfway and is re-run from the startIdempotency key per itemMake every write idempotent before you make it automatic
Tone driftTechnically valid output that does not sound like youHuman sample review onlyThis one genuinely cannot be automated. Keep sampling

Sequencing a real build

PhaseWhat you doTimeExit condition
1. InstrumentCount occurrences, time the manual version, price an error3–5 hYou have frequency, minutes, and error rate written down
2. Specify the gateWrite the invariants as assertions before any generation exists2–4 hEvery rule is a boolean a machine can evaluate
3. Build the data pathGet the source records into a structured form the generator can read8–20 hOne record object, all fields, no scraping at generation time
4. Build the generatorPrompt, template, render. Cheap tier only4–10 hIt produces plausible output on 20 real records
5. Shadow modeRun, gate, log, audit, iterate1–3 weeks elapsedPass rate and escape thresholds met across three batches
6. Human-fired sendsOutput goes out only when a person clicksOngoingWeeks of clean batches and a reviewer who is bored
7. Selective automationAuto-send only the highest-confidence slice, humans keep the restOngoingYou would bet your own money on the pass rate

Two rules that hold across all seven phases. Write the gate before the generator — if you cannot specify what correct output looks like in code, you are not ready to generate it. And keep a human at the point of irreversibility until the pass rate has been stable for long enough that you would bet on it. Most of the value arrives at phase 6, not phase 7, and phase 6 carries a fraction of the risk.

What it actually costs, itemised

Less than people expect on tokens and more than they expect on plumbing. Illustrative figures for a single high-volume drafting pipeline built by one person on hardware they already own.

Line itemOne-offRecurringNotes
Model inference, local tier$0Electricity, effectively noiseRequires hardware you already have. If you do not, this line becomes a purchase
Model inference, frontier tier$0Per token; material only if you route everything through itThe gate exists partly to keep this line small
Integration and data plumbing8–20 h of buildThe largest genuine cost, and the one nobody budgets
Gate specification and testing2–6 hCheap, and the highest-return hours in the project
Storage and logging~$0PenniesA send log and a quarantine folder. Do not skip because it is cheap
Monitoring and alerting1–3 hAlert on pass-rate change, not just on crashes
Maintenance0.5–2 h/monthUpstream formats change. Budget for it or the pipeline rots
Human review timeScales with volume until the gate is trustedThis is the line that determines whether the ROI was real
The first bad artefact that escapesUnboundedWhich is the entire argument for the gate

Which is the honest summary of this whole field right now — the model is the cheap part.

A worked example of all of this in production is FreightDesk AI: local model drafts overnight, an automated audit quarantines anything failing its checks, a human sees only exceptions. The freight-specific version of the same problem is in the back office guide, the retrieval half is in the RAG guide, and if you want the build done rather than described, that is the services page.

Tools referenced in this guide


FAQ

Quick answers

Which business tasks are worth automating with AI?

Tasks that are repetitive, structured, deadline-driven, and cheap to verify — drafting first versions, extracting fields from documents, classifying and routing messages, chasing paperwork on a schedule, summarising threads, and monitoring expiry dates. If verifying the output costs as much as doing the work, automation has moved the work rather than removed it.

How do you decide which task to automate first?

Score candidates on frequency, input structure, verification cost, reversibility if wrong, and format stability, with frequency and structure weighted heaviest. Build anything scoring high, and leave low scorers alone regardless of how annoying they are. Resentment is not a prioritisation signal, which is why founders build the monthly board narrative instead of the daily document extraction.

How do you calculate the ROI of an automation?

Multiply frequency by minutes saved per item to get weekly hours, subtract the review time that still exists after automation, and divide build hours by the weekly saving to get payback in weeks. A payback measured in weeks is a build and a payback measured in years is a hobby. Never model review time as zero.

What should stay human in an automated workflow?

Anything that commits you or depends on a relationship: sending final communications, negotiating price, handling complaints or claims, and deciding what to do when something the system flagged actually happens.

What is the two-tier model pattern?

A cheap local model handles high-volume, low-difficulty work such as drafting, tagging, and extraction at zero marginal cost, while a frontier model handles judgement, hard reasoning, and anything customer-facing. An automated quality gate sits between them and decides which items need the expensive tier.

Why does an automation pipeline need a quality gate?

Because generation at volume always has a non-zero failure rate, and one bad artefact reaching a customer can cost more than the entire batch saved. A gate checks hard invariants in code — required fields, no placeholder text, exact string matches for names and amounts, deduplication — and quarantines anything that fails.

What is shadow mode and when can you turn it off?

Shadow mode runs generation and the gate end to end while sending nothing, so the go-live decision is made against data. A workable exit condition is a gate pass rate at or above 95 percent with zero escapes in 30 audited passes, sustained across three consecutive batches, and even then the next step is human-fired sends rather than full automation.

What does AI automation actually cost?

Less than expected on model inference, especially with a local model on hardware you already own, and more than expected on integration — connecting data sources, defining invariants, handling exceptions, and maintaining it when an upstream format changes. Budget half an hour to two hours a month of maintenance forever. The model is the cheap part.