Engineering/Jan 10, 2026/6 min read

How We Reduced Order Errors by 85% with Structured AI Parsing

Natural language is messy. When a customer says "I want the chicken thing, but make it not spicy, oh and add cheese," they're communicating three things: an item selection (which is vague), a modifier (removal), and an add-on. Mapping this to a structured kitchen ticket reliably is one of the hardest problems we solve.

Our first approach was simple: send the transcript to an LLM and ask it to extract the order. This worked about 70% of the time. The other 30% included hallucinated menu items, missed modifiers, and incorrect quantities.

The breakthrough came when we switched to a constrained generation approach. Instead of asking the AI to freely generate order data, we provide it with the exact menu schema -- every item, every modifier, every variant -- and ask it to select from those options. This is essentially a structured extraction task, not a generation task.

We also added a confirmation step. Before submitting to the kitchen, the AI reads back the order in natural language and asks the customer to confirm. This catches the edge cases that even structured extraction misses.

The result: order accuracy went from ~70% to 97%. Combined with the confirmation step, effective accuracy is above 99%. Kitchens get clean, structured tickets every time.

We're now working on handling multi-turn conversations better -- cases where a customer changes their mind, adds items incrementally, or asks for recommendations before deciding. Each of these requires maintaining conversation state while keeping the order data clean.