Five systems, one shop floor
- The system
- Dock intake, inventory sync, a production ledger, a shipping kiosk and a watcher, all on one self-hosted workflow engine at a precision manufacturer with an online storefront.
- How it works
- The model reads and code decides. Failures stop the order and go to a person. Each station is a small web app with an explicit contract.
- Results
- About 350 staff hours a year, estimated across seven routine automations, and the owner no longer has to be the link between systems.
- My role
- Architect and engineer, from design through production support.
What it replaced
People retyped part numbers between a desktop accounting system, a storefront and an operations workbook all day, and each retype could create a bad record nobody would find for weeks. The floor can't slow down, the team is small, and old and new systems have to run side by side.
How the five fit together
In. Dock intake reads pallet labels with a vision model, checks them against the supplier's packing list, and creates batch-traced stock records and accounting receipts. Pallet receiving went from 3 people to 1 on a phone, by my own count.
Counted. Inventory sync pulls stock from the accounting system three times a day and routes reorders to the right work station, which a person used to do by hand each morning, when it got done at all.
Made. The production ledger put a raw stock rack into a system for the first time, then tracks each part through stations, labels and accounting receipts. Its assistant can plan any action on the floor tab but cannot commit one: the server enforces a person's Yes.
Verified. The shipping kiosk photographs packed orders. A vision model reads what is in the box, and code compares that with the order system.
Watched. The watcher scans every five minutes in working hours for known failure classes. It looks above all for this one: the system said something was wrong and the work moved on. It reads the other systems without writing to them.
All five share one pattern. A self-hosted workflow engine connects everything through explicit webhook contracts. Each station gets a small web app in a container, so updating one container updates every desk. When a model reasons past evidence it read correctly, I add a deterministic check and don't reach for a better prompt, because a rule can be tested and replayed.
Results
| What | Value | How it was measured | Tag |
|---|---|---|---|
| Staff hours returned per year | About 350 | Seven routine automations, on minutes per task I estimated | Estimate |
| Hosting avoided per year | $9,000 | A vendor's list price for this volume | Modeled |
| Automation runs a day | 1,200 | About, from 9,535 server runs in 8 days | Measured |
| Reference intake packing slip | 36 of 36 | On real phone photos | Measured |
| Demand found on the wrong station | 101 | Found while designing the ledger | Measured |
Problems it surfaced, and what I did about them
A sync defect had frozen station assignments on an estimated 212 rows while looking healthy, which is why automation now stays out of columns people own. A dead AI step billed silently for 18 hours before the morning check and an audit found it, so that failure now has its own rule. Each watcher rule records the incident that created it.
Stack
Claude for vision, JavaScript, Python, Docker, a self-hosted workflow engine, a Raspberry Pi and small-form-factor PCs at the stations, and Claude Code for the build.
My role
I am the architect and engineer of these systems. I decide what gets built and how, set the guard rails, make the release calls and answer for the results in production. I direct Claude Code agents to write much of the code, and the tests, replays and watcher exist so each change is checked before and after it ships.
Run all five demos on made-up data.