Northwind Freight
Logistics
2026
7 weeks
NetSuite / Postgres / OpenAI / Slack

Returned to the finance team each quarter
Cost per invoice, all in
Lines matched on the first pass
[CASE] Field notes
Written with the client team. Numbers are measured against the eval set agreed in the audit.
The problem
Northwind moves freight for 300 shippers through 41 carriers. Every carrier invoices differently: PDF, CSV, a photo of a printed sheet, a body of an email. Four people keyed them into NetSuite by hand, and roughly one line in twenty was wrong.
What we built
An intake agent watches the invoices inbox, reads each document, and turns it into structured lines. A second step matches every line to a shipment, a rate card and a proof of delivery. When all three agree, the invoice is approved and posted. When they do not, the agent writes a short note explaining the gap and drops it in a Slack queue for a person.
How it runs
Every decision is logged with the source document, the extracted values and the rule that fired. We built an evaluation set of 1,800 real invoices before writing a single prompt, and every change to the agent has to beat it before it ships. Finance owns the rules; the agent only applies them.
Results
After seven weeks the agent handled 92% of invoices end to end. The team that used to key them now works the disputes, and recovered $186,000 in overbilling in the first two quarters.

[Q] From the client
Lena Hartmann, Finance Director, Northwind Freight
Next case