← Field notes

Software does the routine, humans do the exceptions

The goal is not to remove people. A small operational system removes the repetitive part and routes only the cases that need judgment.

The most useful operational automation is often not the system that handles every case.

It is the system that makes the normal cases disappear from the operator's workload.

If 900 records can move safely through a known path and 100 require judgment, the target is not necessarily to automate all 1,000.

The target is to let software move the 900 and give people a precise queue of 100 exceptions.

That sounds obvious, but many automation projects are designed the other way around. They start with the ambition of removing every manual step, then accumulate special cases until the automation becomes fragile.

A better architecture starts by defining what the software is allowed to do confidently.

Everything else is a first-class exception.

Define the normal path before the automation

A workflow should have a boring path.

For a purchase order acknowledgement, it might be:

  1. acknowledgement arrives;
  2. PO is identified;
  3. supplier matches;
  4. quantity matches;
  5. price matches;
  6. promised date is unchanged;
  7. acknowledgement is recorded;
  8. workflow completes.

If those conditions are explicit, the software can process the case without human attention.

The system does not need to “understand procurement” in general.

It needs to determine whether this particular record satisfies the conditions of the normal path.

The same idea works for service closeout:

  • known work order;
  • required customer PO exists;
  • technician report is signed;
  • labor is present;
  • parts and vendor costs reconcile;
  • required attachments exist;
  • no warranty flag requires review.

When all rules pass, move the record.

When a rule fails, create an exception.

An exception needs a reason code

“Failed” is not an operational category.

A useful exception has a reason that tells the person what kind of decision is needed.

Common categories include:

Missing information

A required field, document, acknowledgement or authorization is absent.

Conflicting information

Two systems disagree about quantity, status, price, date or identity.

Ambiguous mapping

The system cannot determine which customer, PO, work order, part or supplier a record belongs to.

Policy or judgment

The data is complete, but a person must decide whether the case is acceptable.

External failure

An API, portal, vendor or downstream system did not accept the action.

Rule not covered

The case is valid but outside the rules the system currently knows.

These categories matter because they lead to different next actions.

A missing attachment may be automatically requested. An ambiguous PO needs a human choice. An external API failure may simply need a retry.

The queue is the real user interface

For many small operational systems, the most important screen is not a dashboard.

It is an exception queue.

A good queue answers five questions immediately:

  1. What happened?
  2. Why did the system stop?
  3. What evidence supports that conclusion?
  4. What decision can the person make?
  5. What happens after the decision?

A purchasing exception might look like:

PO 48172 — promised date changed
Current ERP date: September 3
Supplier acknowledgement: August 29
Source: acknowledgement received 09:14
Action: accept new date / keep current date / mark acknowledgement incorrect

That is very different from an email saying “please review PO 48172.”

The system has already done the routine work. The person is being asked for the judgment only.

Resume the workflow after the decision

Human review should not end in a dead-end note.

The decision should return the record to the automated workflow.

If a reviewer accepts the new supplier date:

  1. the decision is recorded;
  2. the ERP update is prepared or executed;
  3. downstream status is recalculated;
  4. any required customer/internal notification is triggered;
  5. the case leaves the exception queue.

The system owns the state before and after the human intervention.

That is what makes “human in the loop” operationally useful.

Otherwise the review queue simply becomes another inbox.

Use thresholds where the business actually has tolerance

Not every mismatch needs a person.

Many businesses already have informal tolerance rules:

  • price variance under 1% is acceptable;
  • delivery date changes under one day do not require escalation;
  • inventory differences under a defined quantity can be reconciled automatically;
  • a document field can be accepted if matched by a stronger system identifier.

If these rules are legitimate business policy, encode them explicitly.

Do not use vague confidence as a substitute for policy.

A threshold should answer a business question:

“What range is safe for the system to accept without a person?”

The result should be inspectable and versioned.

Do not turn every event into an alert

An automation that sends more notifications than the manual process creates a new form of work.

The normal path should be quiet.

A useful system may process thousands of events while sending almost no messages.

Alerts should represent conditions that genuinely require time-sensitive attention, such as:

  • SLA breach approaching;
  • field job blocked for tomorrow;
  • high-value invoice discrepancy;
  • warranty claim about to expire;
  • external integration failing repeatedly.

Everything else can live in the queue.

This reduces alert fatigue and makes the remaining notifications meaningful.

Exception rate is a better metric than automation rate

“95% automated” sounds impressive but says little about operational value.

A more useful set of questions is:

  • How many records no longer require a touch?
  • How many exceptions are created per 100 cases?
  • How long does an exception wait for review?
  • Which exception reasons are most common?
  • How many exceptions can be eliminated by a better deterministic rule?
  • How many require genuine judgment?
  • How often does the system make a wrong automatic decision?

This turns the exception queue into a source of product and process improvement.

If 40% of exceptions are “missing supplier mapping,” fix supplier mapping.

If 25% are “customer PO not found,” the intake process may be the real problem.

If most exceptions are legitimate judgment calls, the system is doing its job by making those calls visible.

Human review should produce reusable evidence

When a person resolves a case, record:

  • the original inputs;
  • the exception reason;
  • the decision;
  • optional structured reason for the decision;
  • the user and timestamp;
  • the downstream action.

That history is valuable even if no machine learning is involved.

It can reveal missing rules, bad source data, unreliable vendors, problematic customers and recurring integration failures.

It also makes the system auditable.

A later investigation can answer:

Why did this record move?
Which source said that?
Which rule stopped it?
Who approved the exception?

That matters when the workflow touches money, customer commitments, inventory, warranty, compliance or operational SLAs.

Full automation still has a place

Some workflows are deterministic enough that exceptions are rare.

If the source data is structured, identifiers are reliable, rules are stable and the consequences of an incorrect action are low, end-to-end automation may be appropriate.

The exceptions-to-humans pattern is not a requirement to insert manual review into every process.

It is a way to avoid pretending that uncertain cases are certain.

The system should automate as far as the business rules safely allow.

No farther.

The purpose is not headcount removal

A person who spends hours copying statuses, comparing files and checking whether routine records match is not being used for judgment.

Removing that work does not remove the need for the operator.

It changes the operator's job from:

inspect every record

to:

resolve the records that actually need a decision.

That is a much more realistic target for many operational systems.

It also makes the business case easier to evaluate. You can measure reduced touches, faster cycle time, lower exception age and fewer missed cases without assuming an entire role disappears.

Build the software around the boundary of certainty

A good small operational system has a clear boundary.

Inside the boundary:

  • structured inputs;
  • known mappings;
  • deterministic checks;
  • allowed state transitions;
  • safe actions.

Outside the boundary:

  • ambiguity;
  • missing evidence;
  • conflicts;
  • judgment;
  • unsupported cases.

The system's job is to move routine work confidently up to that boundary and present everything beyond it clearly to a person.

This is especially powerful in document-to-system workflows, where extracted records must be verified, and in the broader between-systems gap, where no existing application owns the complete process.

The best operational automation is not the one that hides uncertainty.

It is the one that makes uncertainty small, explicit and easy to resolve.

← All field notes
See working exampleShow us the manual step →