Order-email automation
A system that reads school-uniform orders arriving by email and prepares them as estimates in QuickBooks Online, with a person checking each one.
- Role
- Built during my internship at Computer Support Centre, for one of its clients.
- Dates
- July 2026
- Category
- Workflow automation
- Status
- In use
- Built with
- Python, IMAP, Claude API, QuickBooks Online, Playwright, pytest
To confirm: Confirm the system’s current status and whether the client may be named.
Overview
The client, a UK school-uniform supplier, receives orders as ordinary emails, sometimes with the item list in an attached order sheet. Each order had to be typed into QuickBooks Online as an estimate by hand. I built a two-stage system that does the reading and the preparation, while a person stays in control of what is saved.
Problem
Orders arrive in free-form language: a contact’s name instead of the account name, sizes written as ages, colours abbreviated. Every item has to become the right stock code, and a wrong code means a wrong bill.
My role
I designed and built the system, wrote its tests, ran the live trials, and prepared the package installed on the client’s computer.
Process
The first stage checks the inbox, reads each order email and any attached order sheet, and extracts the customer, items, sizes, quantities and delivery details. A validation gate then checks the result. The second stage turns the order into estimate lines following the supplier’s own rules and shows them to a person for review.
I ran about fifteen live trials against a QuickBooks test company. They exposed six bugs, all fixed, including one where an uncertain product match could silently pick the wrong item.
- Order email arrivesFree-form text, sometimes with an attached order sheet
- Order extractedCustomer, items, sizes, quantities, delivery details
- Validation gateAnything missing or uncertain stops hereStopped orders go to a person by email
- Estimate preparedItems matched to stock codes, lines grouped by the supplier’s rules
- Human reviewA person checks every line
- Saved in QuickBooksSave stays a human click
Key decisions
- A hard validation gate: if the customer, items or quantities are missing, the order stops and a person is emailed. The second stage never runs on unchecked data.
- Never guess. Product and customer matching refuse an uncertain match instead of choosing the closest one.
- Embroidery orders are always passed to a person, because they need details the email rarely contains.
- The client wanted to watch each estimate being filled in, so the final save in QuickBooks stays a human click.
Results so far
On a real two-page order sheet, the system read all 36 order lines; two sizes were misread from a low-quality screenshot of the sheet. That is why every estimate is reviewed by a person before it is saved.
The logic is covered by 37 automated tests.
Reflection
To confirm: Write what you learned about building for a real business: requirements, trust, edge cases.