A multi-branch plumbing distributor with 1,600 faxed and screenshot-quality POs a month. We built a pipeline that extracts order lines from low-resolution inputs, resolves ship-to against the customer master, and posts into Infor SX.e with the source document attached.
| PO | Customer | Ship-to | Conf. | Status |
|---|---|---|---|---|
| FX-44218 | Rio Grande Plumbing | C-814-OAK | 0.96 | posted |
| FX-44219 | Hill Country Mechanical | C-622-MAIN | 0.94 | posted |
| FX-44220 | Lone Star Plumbing Co. | C-318-LAREDO | 0.91 | pending |
| FX-44221 | Travis & Sons Plumbing | C-905-JOB14 | 0.97 | posted |
| FX-44222 | Brazos Mechanical Group | C-441-EAST | 0.88 | review |
| FX-44223 | Alamo Pipe & Supply | C-712-SAT | 0.95 | posted |
| FX-44224 | Pecos Builders Mechanical | C-217-ODES |
| 0.93 |
| posted |
| FX-44225 | Gulf Coast Plumbing LLC | C-558-HOU | 0.92 | pending |
At a glance
Faxed POs and phone-screenshot PDFs carry the volume on the customer side. The pipeline had to read them clean, resolve ship-to reliably, and post to SX.e without losing the source.
The engagement
The stack
ISO 27001 · ISO 9001 · DPA and NDA signed at kickoff.
Before, the branch order desk
Branch order clerks took pride in turning a fax around same day. They also carried the cost of reading faxes no one should have to read.
A branch clerk opened the PO in the shared mailbox, squinted at the part numbers, and keyed the order into SX.e. Screenshots from a plumber's phone came in sideways, blurred, and sometimes with the contractor's thumb across the part list.
Pre-build baseline: 9 minutes per clean fax, 22 minutes per PO requiring a callback to the customer.
Customers had multiple ship-to locations. The PO often wrote the job site by name, not code. Clerks picked the nearest branch and the truck left. When a PO needed to go to a different jobsite, the truck went to the wrong one.
Pre-build baseline: approximately 7% of orders delivered to the wrong ship-to, reconciled by return freight.
After the clerk keyed the PO, the PDF stayed in the mailbox. When a customer called two weeks later asking about the order, the clerk searched the mailbox by date, not by order number. Reconciliation was a small daily cost that added up.
Pre-build baseline: approximately 11 minutes average to locate the original PO on a customer query call.
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 low-resolution inputs and a multi-site customer master, not a generic template.
Fax queue feeds a shared mailbox. Customer-emailed screenshots arrive in the same mailbox. All inbound normalised to a single order ID and image preprocessed for resolution and orientation.
Customer resolved from header, logo, and account number. Layout tagged as faxed PO, photo PDF, or portal export. Low-resolution inputs routed to LandingAI; typed PDFs to LlamaParse.
Part number, quantity, UOM, requested price per line. Ship-to extracted as a literal from the PO. LandingAI primary on low-resolution; AWS Textract fallback when the image fails the SLA.
Ship-to literal matched to the customer's ship-to hierarchy in SX.e. Part numbers resolved to the distributor's catalogue. Below 0.90 on either, the PO holds for a clerk to tag.
Clean orders posted to SX.e via the order API with the original PO attached. Exceptions routed to a named clerk queue, one per branch, with the flag in plain English.
After, the numbers branch ops signs off
Same clerks, same customers, same branches, same fax queue. The pipeline absorbed the low-resolution pain and carried the source PDF onto the order. Orders posted same day, and the truck went to the right jobsite.
Branch clerks still sign off every order flagged for a new ship-to literal or a new part. The difference is that on a clean fax, the order is in SX.e at the right ship-to with the PDF attached before the clerk gets to it. On a bad fax, the clerk sees one flagged field, not a squint.
From the branch
The fax queue used to be the thing we dreaded on Monday morning. Now it runs quietly, and the truck goes to the right jobsite.
Branch operations leadPlumbing distributor, Texas
Handover
The engagement ends at a clean handover. The branch clerks 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.
Faxed POs routed across three operating entities, keyed into Infor SX.e with entity resolution at capture. Built on LlamaParse and LandingAI.
→Distribution · 2025Electrical distributor · non-EDI PO extraction2,800 emailed and portal POs a month, extracted and posted to Prophet 21 against the customer contract price list. 93% line-level accuracy.
→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%.
→Free 30-minute call
You'll leave with a clear next step.
The fax PO carries a ship-to by name, not by code. The customer master holds the hierarchy of sites. The pipeline matches the literal to a ship-to code and flags the order where the match is below threshold.