Sales email to ShipStation · 2026
Parse a sales email, hold it or build a label
Laboratoryscrocle.cloud/demo/shipstationIndependent engineer

Orders arrive by email, and staff type the shipping address, SKU, and quantity into ShipStation one field at a time. A missing ZIP code still produces a label, so a bad address can ship. The goal is to extract the order, validate it, and hold it before anything ships.
The constraint
This demo does not watch Gmail and does not call a live ShipStation store. Extraction is patterns plus Pydantic, so every rule is readable and testable. Production would attach the inbox and POST the same JSON.
Built with
PythonFastAPIPydantic
How it works
Email in. Parse and validate. If it is complete, build order and label JSON. If not, hold. No live carrier.
The calls that shaped it
Each decision with the pressure that forced it and the price it keeps costing.
Check before you print
A missing ZIP still produced a label in the old flow, so a bad address could ship before anyone read it.
A bad city, state, or ZIP goes to hold. The demo will not invent a label for an incomplete address.
The cost: An incomplete order stops, so a person has to resolve it before it ships.
Payloads you can read
An integration that posts straight to a live carrier cannot be reviewed before it acts.
The create-order and create-label JSON are the same shapes ShipStation expects. You can see them. They are not sent.
The cost: The demo stops short of the last step; a production build attaches the inbox and the store.
Open an inbox message and run it. A complete order builds ShipStation JSON and a label preview; a missing ZIP goes to hold. Try the missing-ZIP case: that hold path is the part that protects a real store.
Where it stands
Demo. Live at scrocle.cloud/demo/shipstation. The extract, validate, hold path runs against example orders.
- A complete order builds ShipStation-shaped order and label JSON; an incomplete one goes to hold.
- Extraction is patterns plus Pydantic, so every rule is readable and testable.
- No live carrier: the writes are simulated and no store is contacted.
- Live demo. The extract, validate, and hold path runs against example orders.
What was handed over
- How to run the FastAPI demo locally
- That ShipStation writes are simulated
- What a production inbox watch would add