Skip to main content
Viithiisys
Wholesale distribution

Order-to-cash automation

Order entry fell from 9 minutes to 40 seconds, and 72% of orders stopped being touched at all.

Company
$85M distributor, 240 employees
Team affected
12-person order desk
Systems
NetSuite + Shopify B2B
Volume
1,100 orders a week
Build
6 weeks
Diagnostic
5 days on the order desk
How the build is wired: Email PDFs (62%), Shopify B2B portal (22%), EDI (11%), Phone and fax (5%), through Intake and line-item extraction, Customer part number to internal SKU, Price, MOQ, credit hold, live stock, Exception triage, into NetSuite sales order, Human review queue.

Arrives from

Email PDFs (62%)Shopify B2B portal (22%)EDI (11%)Phone and fax (5%)

Pipeline

  1. Intake and line-item extraction
  2. Customer part number to internal SKU
  3. Price, MOQ, credit hold, live stock
  4. Exception triage

Lands in

NetSuite sales orderHuman review queue

Two model calls per order. $0.11 of inference per order.

Outcomes at a glance

What the build changed.

The arithmetic behind every one of these is further down this page.

0 sec

Touchless order entry

0%

Orders never touched

0%

Order-entry error rate

0%

Miss the same-day cutoff

In plain terms

What this build actually is.

This is AI-powered order processing automation. You will also see it called intelligent order management, or order-to-system automation.

The system automates the journey from receiving a customer order to entering and validating it in the company ERP. A customer sends an order however they like. The system reads it, works out what was actually ordered, checks it against the rules, and either posts it or hands it to a person with the problem already identified.

What the system does

  • Extracts order details from emails and PDFs.
  • Matches customer part numbers to internal product SKUs.
  • Validates prices, stock, credit holds and minimum order quantities.
  • Sends problematic orders to a human for review.
  • Automatically posts eligible orders into NetSuite.

The result that matters

Order entry falls from 9 minutes to 40 seconds, and 72% of orders are processed without human intervention.

The situation

Four people, full time, typing what a customer had already typed.

Eleven hundred orders a week arrived in four shapes: email PDFs (62%), the Shopify B2B portal (22%), EDI (11%), and phone or fax (5%). Only the EDI stream landed in NetSuite on its own. Everything else was keyed by hand.

Average keying time was 9 minutes, with a long tail. A 40-line order with customer part numbers took 25. Across 1,100 orders that is 165 hours a week, or just over four full-time people doing nothing but typing what a customer had already typed.

What the five-day diagnostic found

  • 3.4% of orders were keyed wrong, 37 a week, and each one cost roughly $85 in credits, reships and admin before it was closed out.
  • The dominant error was not typing but part-number translation. The catalogue held 14,000 SKUs against 31,000 customer cross-reference rows, and the desk resolved those from memory.
  • 18% of orders arrived after the 2pm cutoff purely because they sat in a shared inbox, not because the customer sent them late.
  • Non-portal customers waited 2.3 days for an acknowledgement, which generated a second wave of chase emails into the same inbox.
  • Nobody had a queue. Orders were worked in roughly the order they were noticed.

Where we stopped

What we did not automate, and why.

Scoping these out at the diagnostic stage is cheaper for everyone than discovering them in month three. Each one is a decision we would make again.

Stays with a person

First orders from new customers

There is a credit decision inside them. That is judgment, and it stays with a person.

Stays with a person

Any PDF with a handwritten amendment

We can read the handwriting. We cannot tell whether the customer’s warehouse manager had authority to change the quantity.

Stays with a person

Orders above $40,000

Their policy, and we did not ask them to relax it to make our numbers look better.

Stays with a person

Returns and RMAs

Eleven a week. The volume will never repay the build, and saying so early is cheaper for everyone than finding out later.

What we built

Five stages, each with exactly one job.

Built over six weeks, with the delivery week against each stage. Autonomy was earned, not granted: for the first three weeks every order the agent built sat in a review queue and a person released it. Straight-through posting switched on only after the queue stopped finding anything.

  1. Intake

    Pulls from the shared inbox, the portal and the fax gateway, splits multi-order attachments, and extracts line items.

    Weeks 1 to 2

    Email and portal flowing into a review queue. 91% extraction accuracy.

  2. SKU resolution

    Maps the customer part number to an internal SKU against the catalogue and the 31,000-row cross-reference table.

    Weeks 3 to 4

    Cross-reference table ingested. Credit and stock checks wired.

  3. Validation

    Price list, minimum order quantity, credit hold, live stock. All four are database reads, not model calls.

    Weeks 3 to 4

    Every rule the desk applied from memory now applied in code.

  4. Exception triage

    Anything that fails routes to a person with the order, the conflict and the customer’s last six orders already assembled.

    Week 5

    Routing live. The review queue stopped catching errors.

  5. Straight-through posting

    Clean orders post directly into NetSuite with no review step, once the queue had proved it had nothing left to catch.

    Week 6

    Touchless on 72%. Fax left on review-queue-only.

Where the model is actually used

Two calls per order: one to extract the line items, one to resolve an ambiguous part number. Price lookup, credit check, stock check and the cutoff clock are plain code, because the rules and the inputs are both fixed and code is faster and cheaper than a model at that job.

We track inference per order, because a build whose running cost quietly exceeds the labour it replaced is not an improvement. It is a more expensive way to be wrong.

$0.11

of inference per order processed

Results

Every number the build moved.

40 sec

Touchless order entry

Down from an average of 9 minutes a keyed order, and 25 minutes for a 40-line order with customer part numbers.

72%

Orders never touched

From zero. Nothing outside the EDI stream reached NetSuite without a person typing it first.

0.6%

Order-entry error rate

From 3.4%, which was 37 wrong orders a week at roughly $85 each in credits, reships and admin.

5%

Miss the same-day cutoff

From 18%, nearly all of which were orders sitting in a shared inbox rather than orders sent late.

11 min

Order acknowledgement

From 2.3 days for customers not on the portal, which was generating a second wave of chase emails into the same inbox.

38 hrs

Weekly desk hours on entry

From 165 hours a week, which is just over four full-time people typing what a customer had already typed.

How we know

A golden set, built before anything changed.

Before changing anything we built a golden set: 200 historical orders, hand-labelled with the correct NetSuite entry by their order-desk lead.

That set is what every accuracy number below is measured against, which is why the measurement starts in week one rather than at the end.

Scroll the table sideways for Week 6 and the gate.

Evaluation results, Week 1 compared with Week 6.
MeasureWeek 1Week 6Gate
Line-item extraction accuracy91.2%98.6%
SKU resolution accuracy86.0%97.1%
Routed to a human24%7%below 0.90 confidence

Anything the system is less than 90% confident about goes to a person. That threshold is a dial, and moving it is the single fastest way to trade touchless rate against error rate.

What it is worth

Value, with the maths.

Every line below is the return to the business running the build. Substitute your own loaded hourly rate, your own error cost and your own volume, and the structure still holds.

Capacity recovered on the order desk

$110-150k

127 hrs/wk x 50 wks x $28 fully loaded, discounted 30% for partial realisation

Order errors avoided

$95-130k

30.5 fewer bad orders/wk x 50 wks x $85 per incident

Expedite freight avoided

$55-80k

86 orders/wk now shipping same day x 50 wks x $18, assuming only 60% were previously expedited

Recurring annual value

$260-360k

The range is assumption sensitivity, not optimism. The low end assumes every discount above holds at its most conservative setting.

One-time, and kept out of the annual figure
Invoicing moved roughly two days earlier, releasing about $466k of working capital ($85M divided by 365, times 2). That happens once. The freed cash stays freed, but it does not recur, so it is not in the total.
Headcount
Four of the twelve order-desk staff moved to account management. There were no redundancies, and we are not claiming any: the capacity line above is costed as recovered time, not removed salary.
Excluded on purpose
The order desk now answers “where is my order” without opening four tabs, and customers noticed. We have no clean way to attribute revenue to that, so it is not in the table.

What we got wrong

What we would do differently.

We wired the fax gateway in week two because it was interesting. It is 5% of volume and it took as long as the portal integration, which is 22%. It should have been last, or scoped out.

The order the stages ship in is a commercial decision, not a technical one, and we let the technical one win.

Where this goes next

The honest next step is not a proposal. It is five days on your order desk, building the golden set against your own historical orders, which is the only way to find out whether 72% is the right number for your volume mix.

Tell us about your project.

A 30-minute discovery call with a senior engineer. Concrete next steps, honest scope, no boilerplate decks.