Demo write-up
A support workflow run on six customer emails
This is a test run of the workflow we install, not a customer case study. Allbirds is not a customer and was not involved. We used their public refund and shipping policy pages because every Shopify store publishes these at /policies/. The orders, names and emails are invented.
What it did
- Order status, matching email: found order #58213, replied with the carrier, tracking link and estimated delivery date. Auto-sent.
- Return shipping cost: answered from the refund policy, including the return coverage option. Auto-sent.
- Worn shoes, return request: drafted a reply quoting the unworn and unwashed rule, then held it, because it declines the request.
- Unshipped order with a weekend deadline: drafted the status, held it, because a deadline needs a person.
- Order number from a different email address: gave no order details, asked the sender to reply from the order email, held for review.
- Complaint asking for compensation: acknowledged, asked for the order number and photos, made no decision, held for review.
The rules
Auto-send happens only for order status, returns or shipping questions, with confidence of at least 0.8, a reply grounded in the policy text or order data, a matching order email, and no refusal or deadline. Everything else waits for a person with a draft ready.
Screenshots

The review queue after the run, desktop view.
How it is built
A Python workflow that reads the store's /policies/refund-policy and /policies/shipping-policy pages, queries orders through the Shopify Admin GraphQL API with a read-only token, and uses a Google Gemini model to classify and draft. For a client we connect it to the support inbox and run it in draft-only mode first.