← Projects

Order Desk

live

AI order entry for a nut and bolt wholesaler

for
A nut and bolt wholesaler. Client work, so they aren't named.
started
11 May 2026
in
A customer's order email, often with a PDF purchase order
out
A draft quote or order in MYOB, once the desk has approved every line
catalogue
About 18,000 items

The Order Desk reads customer order emails for a nut and bolt wholesaler and turns them into draft orders in MYOB. Someone on the sales desk approves every line before anything reaches the accounts.

The Order Desk review queue: incoming orders and quotes, each with a coloured bar showing how many lines matched confidently

Screenshot with invented data. Every customer, person, order and part code is made up.

  • Reads the email and any PDF purchase orders, and pulls out the customer, the PO number, and each line with its quantity.
  • Matches each line against an 18,000-item catalogue in two stages: a search builds a shortlist of 80, then Claude picks one or says there’s no match, with a one-sentence reason.
  • Queues the order for review, with the pick, a confidence score, the reasoning and some alternatives on every line.
  • Writes the approved draft into MYOB as a quote or an order, after checking the PO hasn’t been sent already.

Every correction the desk makes is kept and feeds the next tuning round.

It’s an internal tool, so there’s no public link, and the client isn’t named.

Stack

Claude
Reads the email and any PDFs into a structured order, then picks each line from the shortlist or says there's no match.
OpenAI embeddings
Turns every catalogue description and every order line into a vector, so a search can build the shortlist.
Microsoft Graph
Reads the order emails out of the desk's mailbox. Read-only.
FastAPI
The review queue the desk works in.
SQLite
Holds the queue, the catalogue and every correction the desk makes.
MYOB API
Takes the approved draft as a quote or an order. Prices and delivery are still edited in MYOB.

Build log

  1. A long order failed with an error that pointed at the PDF. The PDF was fine. The model had run out of room to finish its answer. It now says so, and tries again with more room.

  2. Handwritten counter dockets can be scanned in as a stack. Each docket lands in the queue as its own order. Each is read more than once, and where the reads disagree the order says what to check against the paper.

  3. The matcher now writes its reasoning before its pick. It had been choosing a part, then explaining why a different one was right.  Read →

  4. When a customer quotes the wholesaler's own part code, an exact match now skips the AI. Exact only, because one character out is a different part.

  5. The "no match" answers pointed at a hole in the catalogue export I'd been given. The business sent the missing 139 items and they went in.

  6. Approving an order now puts a real draft into MYOB. The first two went through. The duplicate check stopped an earlier try, because that purchase order was already in the books.  Read →

  7. The two-stage matcher is wired in behind a review queue. Each line gets approved, swapped for an alternative, or marked no match. It gets 27 of 31 graded lines.

  8. Started. The first plan had the AI writing drafts straight into MYOB. By that night there was a review step in the middle, and it had read 14 of 14 real order emails.

Writing