Project 03·AI Automation·2025 to 2026

Messy emails
in. Clean data
out. Sold.

An end-to-end email-to-inventory automation that reads unstructured order emails with the Claude API and turns them into clean, structured records a business can act on in real time. Sold as a recurring subscription to a paying brand.

Role
Founder & sole developer
Outcome
$50/mo to a six-figure brand
Stack
Claude API · Apps Script · Gmail OAuth
Scope
Up to 8 inboxes monitored
Execution log of scheduled order-processing runs, each completing successfully

Real data. The automation running on schedule: every time-driven pass reads new order emails and completes in a few seconds. Rebuilt in the site's theme from the live execution log.

The problem

Who it's for

A reselling brand buys inventory from dozens of suppliers, and every order arrives as an email in a different format, purchased, confirmed, or cancelled. Tracking stock and spend meant someone reading inboxes by hand and re-typing the numbers into a sheet.

Order emails are unstructured: no two suppliers lay out the supplier name, order number, item, quantity, or totals the same way. That's exactly the kind of messy, real-world data a large language model is good at reading, if you wrap it in the right pipeline.

How it works

  1. Watch every inbox

    A Google Apps Script pipeline searches up to 8 connected Gmail inboxes, auto-forwards and filters messages, and isolates the order emails (purchased, confirmed, or cancelled) across all accounts.

  2. Read each email with Claude

    Each order email is routed to the Anthropic Claude API for structured field extraction: supplier, order and confirmation numbers, item, quantity, subtotal, shipping, tax, total, and recipient.

  3. Deduplicate and log

    Results are deduplicated by order number so the same order is never counted twice, then logged to an interactive inventory dashboard for real-time stock and spend tracking.

  4. Owned the whole lifecycle

    From OAuth-scoped Gmail integration and prompt design through deployment and customer delivery, I built, shipped, and supported it as a real product.

Why a language model, and where it breaks

Reading messy data safely

A normal parser works when every email looks the same. Order emails do not. One supplier writes Qty: 3, another writes "you ordered 3 units," a third buries the number in a sentence. A language model reads all of them, which is exactly why it fits here.

But a model can also be confidently wrong, so the pipeline never trusts a single read blindly. It pins each record to the order number, drops duplicates before anything is logged, and keeps the original email so any figure can be traced back to its source. A double-counted order erodes trust faster than almost anything, so that guard mattered more than any clever feature.

That gap, between a parser that works in a demo and one a business will pay for every month, is most of what this project taught me. The model does the reading; the engineering around it makes the numbers trustworthy.

Real orders it has parsed

Two real order emails the system read and turned into structured records. Every supplier formats things differently, which is exactly the point.

Order confirmation for a Topps baseball case, totaling 3,179.90 dollars
Order confirmation, $3,179.90
Order confirmation for Topps Chrome Disney boxes, totaling 1,810.16 dollars
Order confirmation, $1,810.16
A TikTok Shop order with the shipping address and contact details blurred out
TikTok Shop order (details blurred)

Real data. Personal details on the second order (name, address, phone, email) are blurred. The system keys on the order number and the line items.

The pipeline, visually

order-to-inventory pipeline
8 Gmail inboxes Filter & route orders Claude extracts fields Dedupe by order # Live dashboard

A simplified diagram of the live pipeline. The product itself runs against a customer's private inboxes, so it isn't publicly embeddable.

What I learned

This was my first time charging money for software, and selling it taught me more than building it. A paying customer doesn't care about your architecture, they care that the numbers are right and the thing doesn't break. Deduplication and reliable parsing mattered more than anything clever, because one double-counted order erodes trust fast.

If you're learning this: don't reach for a heavy framework. A scripting layer (Apps Script) plus a good LLM prompt plus careful handling of duplicates and edge cases can be a real, sellable product. Ship the smallest thing that's actually useful, then let a real user tell you what's wrong.

Anthropic Claude APIStructured output parsingGoogle Apps ScriptGmail OAuth 2.0DeduplicationDashboard UIProduct & sales
PreviousImage Library MCP