A large regional electrical distributor with 2,800 non-EDI purchase orders a month, arriving by email and as portal exports. We built a pipeline that classifies POs by customer, extracts to line items, and posts into Epicor Prophet 21 against the contract price list.
| PO # | Account | Lines | Match % | Posted |
|---|---|---|---|---|
| P21-188402 | Rosenberg Electric | 14 | 0.97 | posted |
| P21-188403 | Brightline Contractors | 6 | 0.95 | posted |
| P21-188404 | Foothill Power Group | 22 | 0.89 | review |
| P21-188405 | Maple City Electric | 9 | 0.94 | pending |
| P21-188406 | Northstar Industrial | 31 | 0.96 | posted |
| P21-188407 | Westbrook Builders | 11 | 0.91 | pending |
| P21-188408 | Cedar Mill Electric | 7 | 0.85 | review |
| P21-188409 | Harbor Voltage Co. | 18 | 0.98 | posted |
At a glance
Top 120 customers carry the volume. Each customer has a contract price list that the order desk had been cross-checking by hand. The pipeline brought the price list inside the intake.
The engagement
The stack
ISO 27001 · ISO 9001 · DPA and NDA signed at kickoff.
Before, the order desk
The order desk ran six clerks against an email queue that rose every morning and fell by the afternoon. The bottleneck was not parsing the POs. It was matching the lines back to the contract price list.
Top accounts dropped POs into a shared mailbox. Mid-tier accounts sent portal exports, each portal with its own PDF layout. Clerks opened each PO, typed the header into Prophet 21, then keyed each line against the customer's contract price list in a second window.
Pre-build baseline: 7 minutes per clean PO, 18 minutes per PO with a price mismatch.
Every customer had a tiered contract price list by category and quantity break. The list lived in Prophet 21, but not on the PO entry screen. Clerks held two windows open, one for the PO, one for the contract, and moved between them line by line.
Pre-build baseline: approximately 4% of lines posted at the wrong contract price, corrected at invoicing.
When a line posted at list instead of contract, the customer caught it on the invoice and called. The reversal cost the credit team a call and the branch a trust dent. On the worst month of the prior year, the AR team logged 140 pricing-related credit memos.
Pre-build baseline: 94 to 140 pricing-related credit memos per month across the prior fiscal year.
What we built
The pipeline runs the same five stages we implement on every distribution engagement. The details below are the ones we wrote for this distributor's contract structure, not a generic template.
Shared mailbox polled on a 5-minute cadence. Customer portal exports routed via SFTP or mailbox forwards. All POs normalised to a single order ID before classification.
PO classified by customer from header and layout signals. Classification below 0.92 confidence holds for a clerk to tag. Customer resolution keyed to the Prophet 21 account master.
Ship-to, PO number, requested date, and line items with part, quantity, UOM, and requested price. LlamaParse primary, Google Document AI fallback for portal layouts LlamaParse cannot resolve.
Every line priced against the customer's contract price list in Prophet 21, with category and quantity break resolved. Mismatches flagged with the contract price the line should have carried.
Clean POs posted to Prophet 21 via the order API with the source PDF attached. Exceptions routed to a named clerk queue with the flag in plain English.
After, the numbers the order desk signs off
Same clerks, same customers, same contracts, same branches. The pipeline collapsed the two-window workflow and fed Prophet 21 a priced order per PO. The credit-memo queue fell because the pricing never left the intake.
The order desk still owns the exception queue. Clerks still review every PO flagged for a ship-to or a new part number. The difference is that on a clean PO, the order is in Prophet 21 at contract price before the clerk clicks in. On a bad PO, the clerk sees one flagged line, not a two-window re-price.
From the order desk
The contract price list used to live in a second window. Now it lives inside the PO, and our credit-memo queue stopped being a weekly problem.
Order management leadElectrical distributor, Mid-Atlantic
Handover
The engagement ends at a clean handover. The order desk and the IT team run the pipeline; Hexaa stays on call for a fixed retention period, then steps back.
Related cases
Each links to a named client, a named document, and the system the clean data lands in. We publish only what the client signed off to publish.
Line-level pricing checks against tiered contracts across 1,400 accounts, with mismatches flagged before the order posts. Built on LlamaParse and Infor CloudSuite Distribution.
→Distribution · 2026HVAC distributor · emailed POs to Prophet 21Emailed POs classified, extracted, and posted same business day to Prophet 21. 3,400 POs per month, line-level error rate under 1%.
→Distribution · 2024Food service distributor · contract pricing verified pre-postContract pricing checked against the customer's schedule before the order posts. 1,100 contract customers, credit-memo queue down 82%.
→Free 30-minute call
You'll leave with a clear next step.
The customer PO requests a price. The contract price list carries the correct price for that customer, category, and quantity break. The pipeline compares both at the line level and flags the mismatch with the price the line should have posted at.