A food service group running 32 locations on Restaurant365, with AP coders working against a 400-line chart of accounts and a training curve that lost the firm a month per new hire. We built a coder trained on the client's own two-year ledger history: LlamaParse on the intake, Restaurant365 as the system of record, first-pass coding accuracy the controller can audit.
| Invoice | Vendor | Amount | GL | Location | Status |
|---|---|---|---|---|---|
| SY-441208 | Sysco Central Texas | $4,182.60 | 5110 | Loc-04 | coded |
| BK-09714 | Ben E. Keith Foods | $2,917.44 | 5110 | Loc-12 | coded |
| RB-22087 | Republic Beverage | $1,648.20 | 5231 | Loc-08 | coded |
| EC-55129 | Ecolab Services | $612.18 | 6420 | Loc-21 | approver |
| RG-18802 | Reliant Energy | $3,941.07 | 6510 | Loc-17 | coded |
| HD-77410 | Halperns' Steak & Seafood | $5,326.91 | 5120 | Loc-12 |
| coded |
| CN-30661 | Coca-Cola Southwest | $894.50 | 5231 | Loc-04 | drift |
| PG-04217 | Pure Grain Bakery | $1,074.32 | 5110 | Loc-29 | approver |
| WS-66509 | Waste Connections | $418.75 | 6610 | Loc-17 | coded |
At a glance
One AP team, 32 locations, a 400-line chart of accounts. The training data was the client's own ledger. Everything else was implementation detail.
The engagement
The stack
ISO 27001 · ISO 9001 · DPA and NDA signed at kickoff.
Before, the AP desk
The desk worked. It worked the way desks work when a 400-line chart lives on a wall-mounted poster, new hires take two months to hit accuracy, and the controller audits coding by sampling at close. These were the three patterns we found in discovery.
Every new hire started at roughly 70% first-pass accuracy against the 400-line chart. They climbed the curve by asking the senior coders, who knew the chart cold. The group turned over AP coders on roughly an 18-month cycle. A full third of the headcount at any time was still learning.
Pre-build baseline: 60-day median ramp to accuracy plateau for new AP hires, prior two years.
The controller ran a sample each month and recoded what she found. Misclassifications clustered in vendors that sold across categories (a food vendor who also sold cleaning supplies, a beverage distributor who delivered CO2). The recoding work ate a full week of her month-end.
Pre-build baseline: 12% recoding rate at close, prior fiscal year.
A distributor added a new product line; half the invoices now carried items that belonged in a different GL. Nobody updated the poster. Coders kept coding to the old account. The variance showed up at quarter-end as an unexplained swing in cost of goods.
Pre-build baseline: three distinct vendor mix shifts in the trailing twelve months caught at quarter-end review.
What we built
The pipeline follows the same five stages we run on every AP engagement. The details below are the ones we actually implemented for this group, not a generic template.
Vendor email polled on a 10-minute cadence. Store manager scan-to-folder picked up on write. Distributor portals polled hourly. All normalised to one invoice ID, with the location tagged from the addressee.
Document type tagged on ingest. Typed invoices routed to LlamaParse, paper receipts routed to AWS Textract. Statements held aside from the coding queue. Below 0.90 confidence, the document holds for AP tagging.
Vendor, invoice number, line items with quantity and amount, location. Line-level detail preserved because the GL code lives at the line, not the header.
Each line scored by the classifier trained on the client's two-year coded ledger. GL code proposed per line with a confidence. Below 0.85 confidence, the line holds for AP coder review.
Coded invoices posted to Restaurant365 via the AP Automation API with GL, location, and department per line. Source documents attached. Exceptions routed to a named AP coder with the flag in plain English.
After, the numbers the desk signs off
Same AP coders, same controller, same 32 locations, same 400-line chart. The pipeline coded the line and flagged the drift. What changed was the ramp, not the team.
AP coders still own the edge cases. The controller still owns the audit. The difference is that on a clean day, the pipeline proposes the GL code from the client's own history and the coder confirms. On a bad day, a drift flag fires before the variance hits cost of goods at quarter-end.
From the desk
We trained the classifier on our own ledger, not a generic model. New coders are productive in week one, and the chart stays honest.
VP financeFood service group, Texas
Handover
The engagement ends at a clean handover. The AP team 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.
Retainage-aware three-way match across four entities. 98% auto-match rate, Sage Intacct as the system of record.
→Construction · 2024Infrastructure contractor · pay apps reconciled with retainageAIA G702 and G703 reconciled against the schedule of values across 12 active projects, retainage handled in the approval path. Built on LlamaParse and Sage 300 CRE.
→Distribution · 2026HVAC distributor · emailed POs on Prophet 21Emailed purchase orders posted to Prophet 21 the day they arrive. Same shape of work: classifier trained against the client's own history.
→Free 30-minute call
You'll leave with a clear next step.
The invoice line names a product, the historical ledger names the account that line landed in last month, the vendor drift detector flags if the pattern just changed. The pipeline compares all three at the line level, proposes a GL code with a confidence, and holds the line when the pattern shifts.