Applied AI · in production
A pilot that had defeated four years of attempts
The problem
A large share of customer orders never arrives as clean EDI. They arrive as PDFs — exported from a customer's own ERP, scanned, screenshotted, forwarded, or assembled by hand in Excel and printed. Every one of them has to become structured order lines in the ERP, and until recently a person did that by reading the document and typing.
The idea was not new. The project had been open for roughly four years, and capable people had taken a run at it before me. The technology was not the blocker — by the end there were capable models available to anyone. The blocker was that nobody had defined the problem tightly enough for a solution to be finishable.
What I changed
I started by narrowing it. Not ‘parse any document’ but: which fields, at what confidence, for which document families, failing how, and into which existing order path. Once that was written down, most of the work became ordinary engineering.
- Extraction against a strict output schema rather than free text, so a bad response is detectable instead of plausible
- Defaulting and enrichment for the fields customers routinely omit — ship-to, order class, whether the order must ship complete
- Throttling, back-off and retry handling; the difference between a demo and something that runs unattended at volume
- Infrastructure as code with Terraform, deployment on Kubernetes, pipelines in Azure DevOps
- New API endpoints and the front end for the human-review path, because the parts a person touches decide whether the automated parts get trusted
- An evaluation set of real documents, scored per field, so improvement is a measurement rather than an opinion
Where it landed
It runs. Over recent months the volume of AI-parsed billed orders has grown close to exponentially, and the ceiling now is adoption and document supply rather than the system.
The honest lesson is not a flattering one about me. Several capable people had worked on this. What I brought was not better modelling — it was being willing to spend the first weeks arguing about scope instead of building.
The interesting engineering in an LLM feature is almost never the prompt. It is the schema, the retries, the review path and the evaluation set.
