Workflow Automation Starts With Knowing What Your Model Can't Tell You

OpenHarness editorial ·

English Wikipedia main page on a MSI laptop computer.
Illustrative image. Kristoferb at English Wikipedia · CC BY-SA 4.0 · Cropped and resized. Image source

Most workflow automation failures do not announce themselves. A step produces a slightly wrong field, the next step builds on it, and by the time someone notices, the error has touched invoices, tickets, or customer records. The problem is rarely that a model is always wrong. The problem is that a single model gives you one answer with the same confident tone whether it is right or drifting. This article takes a narrower angle than general automation advice. It focuses on the question of what each step cannot tell you about itself, and how a technical operator can design around that gap using comparison, logging, and deliberate pauses.

Start by Listing What Each Step Assumes

Before adding any review mechanism, write down the assumptions each automated step makes. A classification step assumes the input categories are complete. An extraction step assumes the source document follows a consistent layout. A summarization step assumes the source text is in the language and domain the model handles well. These assumptions are invisible when things work and become the first suspects when they don't.

A useful exercise is to map each step on a single page with three columns: what goes in, what comes out, and what the step is implicitly relying on. Be concrete. Instead of writing that the step 'understands customer intent,' write that it assumes the customer message contains one request and that the product catalog it references is current. The more specific the assumption, the easier it is to design a test for it later.

Once the assumptions are listed, mark which ones would fail quietly. A missing required field that causes an obvious error is less dangerous than a plausible-looking value that is subtly wrong. Quiet failures deserve the most attention, because they are the ones that propagate without triggering alarms.

Compare Outputs at Stage Boundaries, Not Only at the End

Many teams only inspect the final output of a multi-step pipeline. This makes root-cause analysis slow, because by the time an error reaches the end, several steps have transformed it. A better pattern is to place comparison points at the boundaries between stages, where the output of one step becomes the input of the next.

At these boundaries, you can run the same input through several models in parallel and look at where their outputs diverge. Agreement is useful information, but disagreement is more useful, because it tells you where a single model's answer is not safe to pass downstream without a check. Open Harness is one example of a tool built around this idea: it lets you run up to six models from one prompt inside a private, wallet-gated operator lane, so drift and weak outputs surface during testing rather than after deployment.

The goal is not to run six models on every step forever. That is expensive and rarely necessary. The goal is to run comparisons during design and periodically afterward, so you learn which steps are stable and which need a standing check.

Decide What Disagreement Should Trigger

A comparison is only valuable if your team has agreed in advance what to do when models disagree. Without that decision, disagreement becomes an interesting observation that gets ignored under deadline pressure. Write a short rule for each boundary: if two of three outputs match, pass the result; if they split, route the item to a human; if all differ, halt the workflow and log the input.

These rules should match the cost of being wrong at that stage. A disagreement in a internal tagging step may only warrant a log entry. A disagreement in a step that writes to a customer-facing record should block the write. Avoid applying one uniform threshold to everything, since that either overwhelms reviewers or lets important errors through.

A Practical Checklist for Your Next Pipeline Review

Use the following questions when reviewing an automated workflow. First, for each step, what is the single most likely way it fails, and would you notice within one day? Second, which steps write to systems that other people or other automations read from? Those are the places where errors compound. Third, do you keep the raw input alongside every output, so you can reconstruct a decision later?

Fourth, when a model's output changes after a provider update or prompt edit, do you have a way to detect the change before it reaches production? Fifth, who is named as the owner of each disagreement rule, and do they know they own it? Sixth, can someone who did not build the workflow explain what each step is supposed to do? If not, the workflow is more fragile than it looks.

Finally, schedule a periodic re-run of a fixed set of test inputs through each stage. Store the expected outputs and compare against them. Drift is much easier to catch when you have a stable baseline to measure against.

Logging Decisions So You Can Reconstruct Them

When an automated workflow produces a bad result, the first question is usually why. Without logs that capture inputs, intermediate outputs, which model produced each one, and what rule applied, the answer is guesswork. Good logs make it possible to separate a model problem from a data problem from a rule problem.

Keep logs structured and queryable rather than buried in free text. Record a timestamp, the step name, the model or version used, a hash or reference to the input, the output, and the decision taken. Retain them long enough to cover your typical review cycle. The effort is modest compared with the cost of reconstructing an incident from memory weeks later.