Gostockup project · since January 2026 · beta
Warehouse app
How manual picking errors turned into our own web app for the warehouse: from a spec that went through eight versions to a test order through every role.
Every day the warehouse packs dozens of orders: frozen, dairy, dry goods, items sold by weight. Picking was manual, and human errors hit in two places at once.
Customers got the wrong item or not everything. And stock on the shelves drifted from the numbers in the system, to the point that we once had to do a full stocktake. I needed a tool that walks the packer through each order step by step, so skipping an item or adding an extra one simply isn’t possible.
Project rule
Spec first, then code
The app started with a spec that went through more than eight versions. Every new requirement goes into the spec first and only then into development.
An order’s path through the warehouse
- Queue a packer takes an order, it locks for everyone else
- Scan every item with a scanner, a “5 of 5” counter
- Weigh items sold by weight get weighed
- Photo the boxes are photographed
- Invoice print the invoice, enter the box count
- Label the shipping label
- Carrier the package goes to the carrier
The store status updates on its own: “picking”, “ready”, “shipped”. Stock is deducted and the customer gets a tracking number only after “shipped”.
Roles
Everyone sees their own part
Orders from loyalty subscribers are packed first, the rest in order, oldest to newest.
| Role | What they do | Sign-in |
|---|---|---|
| Packer | Packs orders from the queue to the label | Personal PIN |
| Supervisor | Resolves errors, reassigns orders, marks shipments at the end of the day | Personal PIN |
| Office | Reviews logs, creates warehouse accounts | Password |
| Admin | Full rights; every change requires a reason | Password |
Error-proofing
A mistake shouldn’t reach the customer
I put these rules into the spec before the developer wrote the first line.
Three wrong scans
Call the supervisor. They enter their PIN and decide what the item is and who made the mistake.
Item not on the shelf
Anything not scanned drops from the order, and the customer is refunded with no calls or emails.
Order changed mid-pick
A red banner, and the packer sees the updated list right away.
Every step logged
Who did what and when, plus box photos. The office sees the order’s full history. Log entries can’t be deleted.
The supervisor closes shipping
At the end of the day they mark the packages the carrier picked up. Stock is deducted only after the real handoff.
Read-only after “ready”
The supervisor can edit an order until it’s ready to ship. After that, only the office and admin can change it.
For any language
One next step per screen
Many people on the warehouse team aren’t native English speakers. So the interface runs on icons and big buttons, with an English, Russian and Spanish switch. Every screen has just one next action.
Testing
A test order through every role
Once the app worked, it didn’t go straight to the warehouse. A test order went through the whole path as a packer, then a supervisor, then an admin, checking every button.
We found small interface bugs. For example, the counter didn’t update during scanning, and a canceled print still counted as done. I put everything into a list for the developer.
What’s next
Partner items, stats, scales
For orders with partner products that aren’t in our warehouse, I designed a separate role. Its spec is already written.
Packer
Doesn’t see partner items and packs only ours.
A separate staff member
Handles the partner part of the order.
Supervisor
Sees the whole order and can’t hand it to the carrier until both parts are ready.
Next steps: a stats screen and automatic weighing on the scale instead of manual entry.
The fastest way to reach me is LinkedIn
My full career and notes on the work are there too