‹ all projects
Napolicaffe · 2026–present

The e-commerce that runs itself

I built this coffee shop's online store from scratch, the family sold it in 2024, and in 2026 the new owners hired me back to automate it with AI. Pricing and restocking now run on their own; support and marketing are getting there.

automationforecastingpricingml
The e-commerce that runs itself

I built this shop’s online store from scratch between 2022 and 2024. Then the family sold the business. In 2026 the new owners called me back, because they’d looked at what they’d bought and seen how much of it AI could run. So now I’m automating a shop I no longer own, for the people who bought it.

Most of the day-to-day was still manual or half-scripted, and the hard part wasn’t any single task. It was keeping the whole picture connected. You can’t set a price without knowing the cost moved. You can’t reorder without a demand forecast. Held together by hand, that web of dependencies was the bottleneck.

So I built an application that does the analysis Shopify doesn’t, and then acts on it. Some of the pieces run unattended today; others are being brought under automation as I write this. Here’s the state of each.

one loop, every module

sense: costs, stock, competitors, customers→ decide: forecast & margin→ act: reprice, reorder, tag, adjust→ human: logistics only

Costs, stock, pricing and competitors kept in sync so the loop can close on its own, and my job is to review what the automation decides.

See it working

The screens below are the real interface, running on a fictional catalog: invented brands, SKUs, prices and competitors, so I can show the whole thing without exposing the shop’s numbers.

Launch the interactive demo ↗

The actual app in your browser, on sample data. Walk the grouped nav (Costs, Selling, Operations) and open any product. Anything that would write data, call Shopify or email a supplier is switched off by design.

Cost watch, and the bill that didn’t add up

The supplier exposes no API, so the tool logs into their portal and reads every product’s cost the way a person would. One stretch, the numbers stopped matching. We lined up the bills against scrapes of the supplier’s own site and found heavy discrepancies: a +34% overcharge on one blend. I built a tracker so we’d be told faster if it happened again. We went back to the supplier. They gave back the money.

The cost-review desk: biggest movers, a flagged price anomaly with the caught overcharge, and the selected product's price-evolution chart against both bills and portal prices

Marginality

A monthly P&L that carries costs all the way down: COGS, delivery, discounts, fixed costs, to a net margin per blend. Every product then sits on a map by margin against revenue, so the quiet money-losers stop hiding inside the monthly average.

Per-product margin map: each blend plotted by gross margin against revenue, bubble size by units sold

Auto-restock

Sales velocity from Shopify drives a demand forecast. Anything about to run out surfaces with a suggested quantity, and the weekly schedule places the order through that same human-only supplier portal, carrying out the email exchange the order needs and writing the new stock back into inventory. A human’s afternoon of clicking and correspondence happens unattended. Receiving the pallet is the part left for a person.

The restock forecast: stock and days-of-cover per product, colour-coded urgency, suggested order quantities, and the automatic weekly re-order toggle

Market

Competitor prices are scraped and lined up against ours, so the pricing engine isn’t repricing in a vacuum. It knows where each blend sits versus the market before it moves a number.

The competition view: our cost and price against each competitor per product, with a cheapest / mid-range / most-expensive position label

Where it stands

The platform shipped recently, so it’s still proving itself, and I want to be straight about how far it’s got. Pricing and restocking run on their own now. Customer support, email marketing and digital marketing are being brought under automation as I write this, not there yet. I built dashboards over all of it so the whole business fits on one screen. The number that’s already real: the cost watch has recovered thousands of francs in supplier overcharges. The refund is how we measured it.

Notes

No single automation was ever the difficult bit. What took the work was tying pricing, costs, stock and marketing into one system that reasons about the whole business at once. And because the suppliers expose no API, the modules that touch them behave like a person would: reading and driving web portals built for humans, then closing the loop by email. The demo runs that same production code, pointed at a fake catalog with every write switched off.

next project: Building a CHF 500K+ e-commerce from scratch →