A distributor of electrical and hardware consumables. One building, 4,080 square metres, 6,800 active lines, and 384 orders carrying 1,812 lines going out on an average day. Nine pickers, four of whom had been there long enough to know where everything lived. The other five asked the four.

The business was not failing. It was capped. Order volumes had grown 41% in three years, the building had not, and every attempt to add a shift ran into the same wall: the warehouse only worked because four people carried its map in their heads.

Four things changed, in a deliberate order. The first of them involved no software at all, and it delivered more than anybody expected.

What was actually wrong

Everybody in the building could describe the symptoms. Nobody had separated them into causes.

  • Pick lists came out in invoice order. The sequence a customer typed their order in has nothing to do with the layout of the building, so pickers criss-crossed the floor and doubled back constantly.
  • Nothing had an address. Stock lived "in the third bay past the cage" or "up top, near the fittings". New staff took four months to become useful, and temporary staff never did.
  • Allocation was first come, first served, by printer. When two orders wanted the last 40 of something, whoever's picker got there first won. The customer on a contracted lead time and the customer who ordered on a whim were treated identically.
  • Customers ordered in their own language. Roughly a third of orders arrived quoting the customer's own part numbers, or a supplier code, or a description. Sales staff translated by memory into the internal SKU. Sometimes wrongly.
  • Back orders were invisible. A short-picked line was written on the pick sheet, and lived or died on whether somebody typed it up.
Every warehouse that runs on the knowledge of four long-serving people is one resignation away from a bad quarter. The knowledge is not the problem. The fact that it is nowhere else is.

Step one: give every place a name

Before any routing or allocation logic can exist, the building has to be addressable. We set a location scheme and labelled everything: A-12-C-03 reads as aisle A, bay 12, level C, bin 3. Boring, human-readable, and speakable over a radio without confusion.

Then we slotted the range by movement. The top 12% of lines by pick frequency were moved to golden zone height in the two aisles closest to dispatch. Slow lines went up and back. Bulky and heavy went low and near the doors. This one exercise, done with a spreadsheet of twelve months of sales history and three days of physical work, delivered a large part of the eventual gain before a single line of code was written.

Every location got a label, every label got a barcode, and every item got a home. Multi-location items, which are unavoidable, got a primary pick face plus bulk locations that replenish it.

Slot before you automate

Routing software applied to a badly laid-out warehouse gives you an efficient walk through a bad plan. Fix the physical arrangement first, using nothing more sophisticated than a year of sales history and a tape measure. Only then does software have something worth optimising, and the improvement it delivers on top is real rather than borrowed.

Step two: routing the pick

With addresses in place, the pick list stopped being a copy of the invoice and became a route. Each line carries a sequence number, and the sequence follows a serpentine path through the aisles: down one, up the next, never backtracking, ending at dispatch.

Three picking modes were built, because one size genuinely does not fit:

  • Single-order picking for large orders, which fill a trolley on their own.
  • Batch picking for the long tail of one- and two-line orders. Up to twelve orders are picked in one walk into a partitioned trolley, with the scanner telling the picker which slot each item goes into. This was the single biggest efficiency gain.
  • Zone picking for the bulk and heavy aisle, where a dedicated picker handles that portion and the order is consolidated at dispatch.

Each pick is scanned: the location barcode confirms the picker is in the right place, the item barcode confirms the right product, and the quantity is keyed. Wrong location, wrong item, or a quantity outside expectation stops the picker at the shelf, which is the cheapest place in the business to catch an error.

Step three: allocation rules that somebody decided

Allocation is where warehouses quietly make commercial decisions by accident. We replaced "whoever prints first" with rules the sales director actually signed off:

  • Reserved versus available. Stock on a confirmed order is reserved the moment the order is confirmed, so it disappears from what sales can promise. Available-to-promise became a real number rather than an optimistic one.
  • Priority order. Contracted-service customers first, then oldest order date, then order value. Not "loudest phone call".
  • FEFO where it matters. Sealants, adhesives and batteries carry dates, and are allocated first-expired-first-out rather than whatever is nearest the front.
  • A partial-allocation policy. Per customer: some want everything in one delivery, some want whatever is available today. That preference is now data on the customer record, not a habit in someone's head.
  • Automatic back orders. A short-picked line raises a back order immediately and is re-allocated the moment the replenishment is received. Nobody has to remember.

Allocation runs nightly, on receipt of goods, and on demand when a supervisor needs it. Because it is a rule set rather than a person, it can be changed for a peak week and changed back.

Step four: references that reconcile

The most valuable table in the whole build was the least interesting one: a cross-reference that maps every way an item can be named to the one internal SKU.

Reference type Example What it unlocked
Internal SKU ELC-CB-2C15 The one identity everything else points at
Supplier code Manufacturer's own part number Purchase orders and delivery notes reconcile automatically
Customer part number The code on the customer's requisition Emailed and EDI orders import without a human translating
Barcodes Unit, inner and outer, all valid Scanning works whatever pack the picker is holding
Pack size and unit of measure Sold per metre, stocked per 100 m drum Ends the quantity errors that generate credit notes

Building that table took six weeks of unglamorous work with the sales team, and it removed an entire category of error: the mis-picks that were never picking mistakes at all, but translation mistakes made before the order reached the floor.

Sixteen weeks, in order

Weeks Phase What actually happened
1–2 Observe and measure Walked with pickers for two days, timed picks, pedometers on trolleys, twelve months of sales history analysed for movement classes.
2 Wi-Fi survey Found three dead spots, two of them in the busiest aisle. Access points added before anything depended on coverage.
3–6 Locations and slotting Scheme designed, 2,400 locations labelled, fast lines re-slotted over two weekends without stopping dispatch.
4–11 Build Picking app over the existing ERP: routing, batch picking, allocation rules, back orders, the cross-reference table and its import tooling.
10–12 Cross-references Supplier and customer codes captured and verified with sales. Slow, manual, worth every hour.
13 Train and dual-run Two pickers on scanners alongside paper for a week, then four, then everybody.
14 Live Paper pick sheets stopped. Kept printable as a fallback, used twice, then never.
15–16 Tune Batch sizes adjusted, two aisles re-sequenced, allocation priorities revised once after a real argument about a real customer.

Training people who do not sit at desks

Warehouse training fails when it is designed by people who type for a living. What worked here:

  • Twenty minutes, on the floor, with a real trolley. Not a classroom. The scanner was in their hands within the first minute.
  • Screens designed for gloves and one hand. Big targets, no free typing, quantities entered on a keypad, everything else scanned. If the interface needs two hands, the picker puts the box down, and eventually puts the scanner down.
  • Plain language and pictures. The team spoke four languages between them. Prompts were kept to short, direct phrases, with the item image on screen at the pick. The picture prevents more errors than any instruction.
  • Accuracy measured to coach, not to punish. Pick accuracy per person was published from week one, framed as "where are we tripping" rather than a leaderboard. The two lowest scores turned out to be the same two aisles, not the same two people.
  • Supervisors trained separately, and first. They needed the exceptions: overrides, short picks, re-allocations, what to do when a location is empty but the system says otherwise.

What it cost

Line Once-off Notes
12 rugged scanners and cradles R113,760 Industrial Android units, not phones in cases
Wi-Fi survey, access points, cabling R84,350 Non-negotiable, and cheaper than debugging phantom bugs
Location labels, printer, consumables R40,880 2,400 rack and bin labels, applied over two weekends
Picking and allocation application R478,000 Custom, built over the existing ERP rather than replacing it
Slotting and cross-reference work R118,600 Analysis, physical re-slotting, reference capture with sales
Training and go-live support R44,900 Including two weeks of dual running
Total once-off R880,490 Over sixteen weeks
Running cost R18,450 / month Hosting, support, device management, ERP user licences

For scale: a smaller store using an off-the-shelf warehouse module lands at a fraction of this, and a multi-site operation with automation lands far above.

What changed, measured

  • Pick rate went from 42 lines an hour to 88. Batch picking the small orders accounts for most of that; routing and slotting for the rest.
  • Walking distance per picker fell from 11.2 km a shift to 4.5 km. The team noticed this before any report did.
  • Mis-picks fell from 1.9% of lines to 0.3%, and the credit notes that followed them fell with it.
  • The same-day dispatch cut-off moved from 13:00 to 15:30, which sales turned into a selling point within a week.
  • Stock accuracy went from 91% to 99.2%, maintained by cycle counting a slice of the racking daily instead of shutting for two days a year.
  • New pickers became productive in a week rather than four months, because the building tells them where to go. That was the outcome the owner actually wanted.
  • Overtime dropped by 31% in the peak months, on higher volume.

What we would do differently

The Wi-Fi survey should have been week one, not week two. It nearly was not done at all, on the grounds that the coverage was "fine", and two dead spots in the busiest aisle would have made the scanners look unreliable at exactly the moment the team was deciding whether to trust them.

We would also not re-label during a busy month. It was done over weekends and still caused friction. And we would re-slot on a schedule from the start: movement classes drift, and a warehouse slotted perfectly in March is merely adequate by November unless somebody re-runs the analysis each quarter.

Finally, the cross-reference work should have started in week one and run in parallel throughout. It was the longest lead-time item and the one with the least visible progress, which is exactly the combination that gets scheduled too late.

Where to start if this sounds familiar

Address the building, slot by movement, and get one honest count in place. Those three cost you a few weekends and no software at all, and they will tell you whether your problem is really the system or really the layout. Then capture at the point of the pick, and let the routing and allocation rules follow. The same discipline underpins a shop floor moving off a manual till: the technology is straightforward, and the data underneath it is the work.