
TL;DR
- Most order edits are gap fills or reshapes, not accuracy errors
- Gaps need upstream sourcing fixes, not smarter extraction models
- Shape mismatches need deterministic mapping code, not model calls
- Only true corrections are accuracy problems worth better models
- Audit your edit log before buying any extraction automation vendor
Somebody on your team is opening orders after extraction runs and touching fields before the order goes anywhere near production. If you've priced out order-entry automation, you've probably framed that touch time as an accuracy problem: the model got it wrong, a human fixes it, buy a better model and the touch time drops.
That's not what we found when we looked at our own order-to-release automation work for an operations-heavy client this year. Most of what staff did to orders after extraction wasn't a fix. It was a gap fill or a reshape. The extraction had already captured the information correctly. It just hadn't captured it in the field the ERP wanted, or it hadn't captured anything at all because the source document never had it to begin with.
That distinction changes what you build next. If you treat a gap like an error, you'll keep retraining a model to guess at information that was never on the order. If you treat a shape problem like an error, you'll keep tuning confidence thresholds on a field that was already correct and just needed to be split. Neither gets you anywhere. Here's what we saw, edit by edit, and why the fix for each one is different.
The accuracy framing is the wrong starting point
Order-entry automation gets sold and bought on an accuracy story: the system reads the incoming document, extracts the fields, and the error rate is whatever percentage of those fields a human has to touch afterward. Drive the error rate down, drive the touch time down. Clean, simple, wrong.
It's wrong because it assumes every edit is evidence the extraction failed. In our own review of edit logs after automated extraction, that assumption didn't hold up. When we looked at what staff were actually doing field by field, order by order, the edits split into three categories that behave nothing alike:
- Gaps. The field is empty because the source document never had that information. Nobody extracted it wrong. There was nothing to extract.
- Shapes. The information is present and correct, just not in the structure the downstream system expects. The value is right. The container is wrong.
- Corrections. The extraction actually got something wrong. Misread a character, matched the wrong line, picked up a stale default.
Only the third category is an accuracy problem. The first two are design problems, and design problems don't get solved by a bigger model reading the same document more carefully. A better model still can't extract an in-hands date the customer never gave you. A better model still won't magically restructure a single free-text address block into five ERP-shaped fields, because that's not an extraction task, it's a normalization task, and it needs its own logic, not more confidence in the same pass.
We wrote about this same trap from a different angle in AI Assistance vs Automation: The Decision Tier That Matters. The tier a task lives on determines what kind of system fixes it. Order entry has three tiers hiding inside what looks like one task, and most shops are only building for one of them.
Where the edits actually went
Look at where human time went on orders that had already been through automated extraction, and a pattern shows up fast.
Address edits were almost never error correction. Nearly all address edits we saw were staff re-typing information that was already sitting in what the system captured. The customer's address was there. It just arrived as a block of text, or split across the wrong number of lines, or missing the field boundary the ERP schema wanted between street and suite. Staff weren't fixing wrong addresses. They were re-keying right addresses into a different shape. That's expensive, repetitive, and entirely solvable in code with no confidence score attached to it, because there's no judgment call involved. The information is deterministic. The container is deterministic. You write the mapping once and it holds.
Art and special instructions were almost never touched by automation and almost always added by a person. This is the mirror image of the address problem. It's not a shape issue, it's a gap. The source document, in a large share of cases, just doesn't carry structured art notes or special handling instructions in a form extraction can pull. A person reads the email thread, or looks at the attached file, or remembers a standing instruction for that account, and adds it. No amount of tuning the extraction model closes this gap, because the information often doesn't exist anywhere upstream in machine-readable form. The fix here isn't a smarter reader. It's a different question: where does this information actually live before the order gets entered, and can you get it captured once, upstream, instead of re-added by hand on every order.
Totals, tax, and shipping lines were essentially never edited. This is worth sitting with, because it tells you where the extraction is already trustworthy. Nobody was second-guessing the math. That's a signal that the parts of the order that are computed or pulled from clean structured sources don't need more attention. The system already earned trust there. Don't spend more engineering effort re-verifying what nobody has ever had to touch.
Put those three together and you get a shape of the work that looks nothing like an accuracy curve. It looks like three separate queues, each needing a separate kind of fix, and one of them (totals, tax, shipping) barely needing a queue at all.
Three edits, three fixes
Gap fills need a sourcing fix, not a smarter reader. If the field is empty because the document never had the value, extraction improvement has a ceiling of zero. You have two real options: capture the information earlier in the process, at the point where a human already has it (a standing account instruction, a proof approval note, a phone call log), or accept that the field stays a human-entry field and stop routing it through an automation queue that will never populate it. Trying to extract your way out of a real gap just burns confidence-tuning cycles on a field that was never extractable to begin with. We laid out the broader version of this argument in Intelligent Process Automation: The Real Explainer: automation has to match the actual location of the decision, not the location you wish the decision lived.
Shape mismatches need a mapping layer, not a model. An address that's fully present but wrongly split across fields is a parsing and normalization problem. Write the deterministic logic once: here's how a single address block decomposes into street, suite, city, state, zip, and here's what to do with the edge cases (PO boxes, apartment markers, foreign formats if you have them). This is exactly the kind of decision that belongs in code, not in a model call. It's testable, it's fast, it's free per invocation, and it doesn't drift. The cost of getting it wrong once is a bug you fix. The cost of routing it through a model repeatedly is a recurring inference bill for a problem that has a closed-form answer.
Corrections need the checker, and the checker needs to be measured. This is the only one of the three that's actually an accuracy problem, and it's the only one where a better extraction model or a better review layer earns its cost. But "better" is a number, and you don't have that number unless you've measured your own reviewers against known-injected errors, not just watched them catch what they happen to notice. We've written at length about why a checker's catch rate has to be measured directly rather than assumed in Who Checks the Checker? Managing Agents Is a Measurement Problem and in Human-in-the-Loop Is Not a Safeguard. A human sitting in the approval seat is not automatically a safety net. Whether they're catching real errors or rubber-stamping depends on whether anyone ever checked, and most shops never have.
Why this split matters for what you buy next
If you're evaluating an order-entry automation vendor, or building the logic yourself, the pitch you'll hear is almost always about the extraction model: more accurate, fewer hallucinations, handles more document formats. That pitch is answering the wrong question if most of your edit volume isn't extraction error.
Ask instead: of the edits my staff make today, how many are filling a field the source never populated, how many are re-keying a value that was already captured correctly but in the wrong shape, and how many are actually fixing something the system got wrong. If you don't know that split, you don't know what you're buying a fix for.
This is also why we build order-entry automation as applied business logic rather than a single extraction call plus a review queue. The address-shaping problem gets its own deterministic mapping layer. The gap-filling problem gets a separate conversation about where the missing information actually originates and whether it's worth capturing upstream at all, or whether some fields are staying human-entry by design. The correction problem gets routed to review with a checker whose catch rate is actually measured, not assumed, because a review step nobody has calibrated is a step that gives you false confidence at exactly the moment you need real confidence. We go deeper on why a single confidence score across a whole order is the wrong unit of measurement in No learner without a decorrelated checker: a number nobody checks against something independent is a guess with better production values.
What this looked like on the ground
A few other things showed up in that same review that reinforce the same point.
Ship dates on the orders we looked at got re-baselined constantly as schedules slipped, and the ERP's estimated ship date almost never matched what the customer had actually requested, with no consistent direction to the mismatch: sometimes the estimate ran ahead, sometimes behind. That's not an extraction failure either. It's two different pieces of information (an operational estimate and a customer ask) that were never the same number to begin with, living in fields that look like they should agree. In-hands date was missing on a large share of open orders. Order type, by contrast, was present on essentially every order and reliably encoded the service level. That last one is a field extraction had fully solved. Nobody needed to touch it. Which is exactly the kind of thing you only notice if you're looking at the edit log honestly instead of assuming every touch is a defect.
The same logic showed up in routing. For one large reseller account, staff almost always routed approved orders past a particular production step, because that account supplies its own ready-to-print art and doesn't need it. That's not a data quality issue at all. It's an account-level business rule that had never been written down anywhere except in the habits of the people processing those orders by hand. When an automatic release step first went in using a fleet-wide default, it misrouted a run of that account's orders within days. The fix wasn't a smarter model. It was an account-level override, tested by replaying the change against the rest of the order population to confirm nothing else moved. That's the modular, parallel-operation approach we build around generally: change one rule, run it alongside the existing process, verify the blast radius before you cut over. We cover that pattern in more depth in Risk Mitigation Through Modular Software Implementation and Parallel Operation Deployment: Zero-Disruption Automation.
What to do before you buy anything
Pull your own edit log. Not a sample someone eyeballed, the actual log of every field touched after extraction over a real stretch of orders, a few weeks at minimum. Then sort every edit into the three buckets:
- Gap, the source never had this value.
- Shape, the value was present and correct, just structured wrong.
- Correction, extraction actually got it wrong.
You'll probably find, like we did, that gaps and shapes dominate and corrections are a minority. If that's true for your operation, the highest-leverage engineering work isn't a better extraction model. It's a mapping layer for the shapes and a real conversation about where gap-filling information should get captured upstream, closer to the point where a human already knows it. The correction bucket still matters, but it's smaller than it looks, and it's the only bucket where model quality is actually the lever.
This is the same discipline we apply before we touch a client's order pipeline: model the business logic chain as it actually runs, not as the ERP schema assumes it should run, then automate the deterministic parts before spending anything on the parts that require judgment. If you want a longer walk through what a business logic chain actually looks like against generic workflow tooling, that's laid out in Business Logic Chains Explained: Why RPA Is Just Button-Clicking.
Your CSRs aren't bad at their jobs and your extraction isn't necessarily broken. They're doing what the gap between the source document and the ERP schema requires somebody to do. Automate that gap correctly and the shape problems disappear from the queue entirely. What's left is a much smaller, much more honest accuracy problem, and that's the only one worth paying a vendor to solve.
If you want a second set of eyes on your own edit log and where the real leverage sits, book a discovery call and bring the log. We'll tell you which bucket is actually costing you time.