I spent time working in a food manufacturing plant in Australia, on the factory floor rather than behind a screen. Watching operators work daily surfaces friction that's invisible from the outside: not carelessness, but tools that were never built for the actual pace and pressure of the job. Goods reception was the clearest case, so I solved it.

Me on the factory floor

The problem: a two-person process with zero margin for error

The plant processes pasteurised liquid egg. Every delivery, 6 to 20 pallets per truck, has to be unloaded fast because the truck costs money for every idle minute, and processed correctly, because production can't mix quality grades. For each pallet: remove bracing, retrieve the supplier sheet, weigh it, calculate net weight by hand, read the temperature, record everything on paper, label it, and store it in the correct zone.

Two people run this in parallel, a forklift operator moving pallets continuously and a second person doing the paperwork, and the paperwork has to be finished before the next pallet lands on the scale, because the weight display disappears the moment the pallet is lifted off. That rhythm is where the errors happen: transposed digits, a misread date, a missed label under time pressure, none of it negligence, all of it a direct consequence of writing critical data by hand while a forklift keeps moving.

There was also no redundancy. A wrong temperature written down goes uncaught. No live visibility for the supervisor either; problems surface only after the forms are collected and manually reviewed, hours after the fact.

The moment this became a project

One evening, reviewing a stack of the day's forms, I recognized a real mistake: I'd logged a free-range pallet as cage production because I hadn't caught a difference in label color during a rushed reception. It was only caught later during manual review. The fix seemed obvious: four photos in under 30 seconds instead of handwriting numbers under pressure with no way to catch an error before it enters the system.

The build: Paperwork

The principle: the operator takes photos instead of writing. AI extracts the data. The supervisor sees it in real time. I set three non-negotiable constraints going in. It cannot slow the operator down, taking a photo has to be faster than writing, full stop. It has to work offline, because network connectivity in a refrigerated warehouse isn't guaranteed, and the app saves locally and syncs automatically the moment a connection is available. And it has to give the supervisor visibility without adding any workload on their end.

System architecture diagram

The system has four parts: a React Native mobile app for the operator, a React Native Web supervisor dashboard sharing the same codebase, a Node.js/Express API orchestrating AI processing, and a PHP factory simulator I built specifically to demo the flow without needing a live plant. You can try the simulator here.

AI runs on Gemini 2.5 Flash, twice per pallet. First, extraction: from a photo of the supplier sheet, it pulls farm name, pallet ID, lay date, declared weight, production system, and treatment, normalising date formats along the way. Second, cross-verification: a composite image of the scale, thermometer, and label gets compared against the supplier sheet data, and any mismatch is flagged automatically.

The critical architectural decision was making all of this fully asynchronous. The operator takes their photos and moves immediately to the next pallet. Processing happens in a background queue. Results appear progressively on the supervisor's screen without costing the unloading process a single second.

What it looks like end to end

The operator opens a new arrival, logs the truck temperature, confirms entry checks, then photographs the pallet in sequence: temperature, scale, thermometer, label, supplier sheet.

Adding a pallet — 4 photos in sequence

Six seconds later, the full record appears on the supervisor's screen: farm, pallet ID, normalised date, weight, production system, treatment, each field validated in green, with source photos available for manual check if needed.

AI extraction in real time — data appears on the supervisor view

To stress-test the detection logic, I built an error mode into the simulator that deliberately alters the data relative to what's on the supplier sheet, simulating a wrong pallet, a scale error, or a broken cold chain. The operator's workflow looks identical from their side; nothing warns them anything is wrong.

Pallet record on the operator app showing AI warnings

Seconds later, an alert surfaces on the supervisor view and on the operator's own record: a temperature at 20.4°C against a 15°C threshold, a weight gap of nearly 180kg against the declared figure, a production system mismatch between the label and the sheet. Three anomalies, caught automatically, without the operator changing a single thing about how they work.

Why this is economically obvious

Two Gemini API calls per pallet cost under $0.0003. A full 12-pallet reception costs under $0.005. A month at two receptions a day runs about $0.15. A single mislabelled or out-of-temperature batch making it into production can cost thousands in recalls or client penalties. The comparison isn't close.

What generalises beyond this factory

AI on a factory floor has to be invisible to the operator; the moment it requires new behavior or a wait before continuing, it gets abandoned, no matter how good the underlying model is. The best automation target isn't the most complex task in the building, it's the repetitive, high-pressure task with structured data and a real, measurable error rate. Photographic proof isn't a convenience upgrade over handwritten forms, it's a shift from an unverifiable process to full traceability. And offline-first isn't optional for anything running in a warehouse or production zone; connectivity there is never guaranteed, so the tool has to work without it and sync cleanly once it returns.

This was designed and built in one week, with AI-assisted development handling the backend implementation speed, API, database, async queue management, while I focused on the operator-facing decisions. If you're in manufacturing or logistics and this problem sounds familiar, whether it's exactly this or another workflow worth automating, I build exactly this kind of tool: custom, grounded in your actual floor, not a generic platform.