Sales email to ShipStation · 2026

Parse a sales email, hold it or build a label

Laboratoryscrocle.cloud/demo/shipstationIndependent engineer

Sales email to ShipStation interface

Orders arrive by email, and staff copy the shipping address, SKU, and quantity into ShipStation by hand. 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, not a model. Production would attach the inbox and POST the same JSON.

Built with

  • Python
  • FastAPI
  • Pydantic

How it works

Email in. Parse and validate. If it is complete, build order and label JSON. If not, hold. No live carrier.

  1. Sales email
  2. Parse
  3. Validate
  1. ShipStation JSON
  2. Label preview
  3. Hold / review
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.

  1. Check before you print

    A bad city, state, or ZIP goes to hold. The demo will not invent a label for an incomplete address.

  2. Payloads you can read

    The create-order and create-label JSON are the same shapes ShipStation expects. You can see them. They are not sent.

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.

What was handed over

  1. How to run the FastAPI demo locally
  2. That ShipStation writes are simulated
  3. What a production inbox watch would add

Open the live demo

Next project Telegram agent walkthrough How a production AI agent stack is wired