Case study
Small Batch Roasting
Operational overhaul and edge systems design for a green-coffee supplier: from a brittle WordPress setup to inventory the business can trust.

The problem
The business ran on WordPress with a tangle of plugins. Stock counts were inaccurate, phantom stock appeared across multi-origin lots, and overselling was frequent.
The deeper issue was representation: the warehouse reality of raw harvest lots and physical barrels had no faithful model in the system. When the software disagrees with the warehouse, nobody trusts the numbers, and every team invents its own workaround.
“The software should tell the truth about the warehouse.”
The model: Coffee Pools
The core design move was an information architecture that mirrors the warehouse. Raw harvest lots and physical barrels became an abstract parent data model (“Coffee Pools”) that dynamically governs child SKUs and multi-bean blends.
Blend availability derives from its underlying pools, so a stockout risk in one lot propagates honestly instead of silently overselling. This kept the range distinct from a standard Greenfield-style SaaS build: the emphasis here is operational overhaul, translating physical reality into data.
The engine: serverless edge
Shopify webhooks feed a serverless edge engine built on Cloudflare Workers with Cloudflare D1, performing atomic deductions in real time as orders land.
Moving this off the legacy stack removed the plugin failure modes and made counts accurate at the moment of sale, which is the only moment that matters for overselling.
The portal: built for the warehouse
A multi-persona internal tool covers dispatch, with a spatial lot and barrel map; operations, with blend stockout-risk alerts; and intake. Each role sees the same pools through the lens it needs.
This part of the work is internal to the company, so there is no public link to share. What follows is the lots board: live pool stock with lifecycle actions, exactly as the warehouse team uses it.

The storefront
Up front, customers get honest numbers and help finding their coffee. The Flavour Finder matches stated tastes against live lot data, so recommendations are always tied to what is actually in stock.
It is the same pools model wearing a shopper-friendly face: shade in the flavours you enjoy, avoid the ones you do not, and the matches respect real availability.
