A food service distributor with 1,100 contract customers, each on a negotiated price schedule, and an order-entry process that posted 3% of lines at list price. Credit memos cleaned up the variance weekly. We rebuilt the posting path: LlamaParse on the intake, a rule engine keyed to each contract schedule, a custom ERP on the backend, clean pricing verified before every post.
| PO | Customer | SKU | PO price | Contract price | Status |
|---|---|---|---|---|---|
| PO-58231 | Coral Gables Hospitality Grp | DAIRY-2210 | $4.90 | $4.62 | review |
| PO-58232 | Sunbelt School Nutrition | PROD-1145 | $1.84 | $1.84 | posted |
| PO-58233 | Biscayne Healthcare Kitchens | PROT-3308 | $6.25 | $6.25 | posted |
| PO-58234 | Palmetto Restaurant Group | DRY-4072 | $2.18 | $2.05 | pending |
| PO-58235 | Tropic Bay Catering Co. | FROZ-8819 | $3.40 | $3.40 | posted |
| PO-58236 | Magnolia Senior Living | DAIRY-2210 | $4.62 | $4.62 | posted |
| PO-58237 | Everglades Cafeteria Svcs | BEV-6601 | $0.92 | $0.88 | pending |
| PO-58238 | Key Largo Resort F&B | PROT-3315 | $8.40 | $8.40 | posted |
| PO-58239 | Doral Country Club Dining | PROD-1162 | $2.74 | $2.74 | posted |
At a glance
One sales-operations desk, 1,100 contract customers, a custom ERP that was not going to change. The pricing rule engine was the product of the engagement.
The engagement
The stack
ISO 27001 · ISO 9001 · DPA and NDA signed at kickoff.
Before, the sales-ops desk
The sales-ops team had a workable process. It worked when the contracts did not change, and every contract changes. These were the patterns we found in discovery.
When an order arrived fast and the reviewer could not find the right schedule, the line posted at list. The customer was charged the wrong amount. A week later, the A/R team issued a credit memo. Every mispriced line was cash out and then cash back, plus a reversal entry.
Pre-build baseline: approximately 3% of lines mispriced at post, measured against issued credit memos in the prior year.
Every customer had a price schedule; every schedule was updated on its own cadence. When a schedule changed mid-month, the sales-ops desk did not always hear. Orders kept posting against the prior month's prices until someone caught it.
Pre-build baseline: up to 18 days of lag between a schedule update and the first clean post at the new price.
Credit memos were the A/R team's problem. They processed them on Fridays; mispriced orders from the prior week got cleaned up in the following week's cycle. Customers saw the correction two statements after the original invoice.
Pre-build baseline: credit-memo backlog averaged 5 to 8 business days.
What we built
The pipeline follows the same five stages we run on every distribution engagement. The pricing rule engine is the part we tuned specifically against the client's contract schedules.
Mailbox polled on a 5-minute cadence. Customer portals polled on a 15-minute cadence. Contract schedules picked up from SFTP on change. All normalised to a single order or schedule ID before extraction.
Document type tagged on ingest. Customer POs, contract price schedules, and promotional calendars routed separately. Schedules written to the price library, promos scoped by date and customer.
Customer account, contract reference, ship-to, and line-level SKU and quantity. Contract reference resolved against the customer master so the right schedule applies.
Every line priced against the current contract schedule plus any active promo. List-price fallback is blocked by rule. Below 0.95 confidence on contract match, the line holds for sales-ops review.
Clean orders posted to the custom ERP via REST. Source PO and the matching schedule version attached to the order record. Exceptions routed to a named sales-ops queue with the flag in plain English.
After, the numbers the desk signs off
Same sales-ops desk, same A/R team, same 1,100 contract customers. The pipeline verified every line before the order posted, and the Friday credit-memo cycle emptied out.
The sales-ops desk still owns the exception queue. They still sign off any variance above the contract threshold. The difference is that the price-check that used to happen a week late, on a reversal entry, now happens before the order posts, on the source PO.
From the desk
The week I stopped writing credit memos for prior-week pricing is the week I finally trusted this pipeline.
Sales operations leadFood service distributor, Miami
Handover
The engagement ends at a clean handover. The sales-ops desk runs 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.
Emailed POs classified, extracted, and posted same business day to Prophet 21. 3,400 POs per month, line-level error rate under 1%.
→Distribution · 2023Janitorial distributor · Credit memos matched to originating invoiceCredit memos matched to invoice and entity across six entities, posted to NetSuite. 96% first-pass match, reversal workload cut.
→Distribution · 2024Shared-service AP · GL coding from the invoice headerInvoice coding proposed from the vendor and ship-to pair, posted against the prior-year pattern. Analyst reviews the exceptions.
→Free 30-minute call
You'll leave with a clear next step.
The PO quotes a unit price that matches neither the contract nor the promo. The pipeline compares the PO line to the contract schedule and the active promo, decides, and posts against the correct price. A mismatch between what the PO expects and what the schedule says holds the line for sales-ops.