Warehouse re-build in 99 days.
This is one of the most successful and rewarding projects I’ve been a part of. I was one of 8 team members that contributed to this work. This project shows the benefits of handing a team a problem and giving them space to solve it.
This project was completed faster than anyone expected and without any of us working over a 40hr week.
Generation Tux is an online suit and tuxedo rental company. The distribution center was backed by a monstrosity of cobbled together, over-priced software from the founding days of the company.
The software was the limiting factor of the warehouse. The first two days of each week were spent printing pick list to paper so that they could be worked faster by pen and paper. The system also required regular support calls to recover from the outages.
The annual fees slow support finally came under scrutiny by the business.
The project was handed to my team in the fall of 2017 with several parameters.
Half of the team went to work on the data migration and infrastructure that would be required to track inventory, cartons, shipping labels, etc.
Three of us began to architect the process and front-end of the warehouse software. We did this using design sprints as a frame work to plan our way through the build.
We began prototyping within the first week of research and continued iterating over each station in turn. We tested the prototypes with existing warehouse employees and customer support agents on a weekly basis.
Along the way we uncovered several process issues:
We made an immediate design decision to optimized on the Zebra label printers for several reasons.
We spent time redesigning all the pick lists, garment labels, location labels, garment issue labels, and employee badges to fit on 1 or more 4x6 label sized prints from the Zebra printers.
Optimizing on these printers provided speed and reduced cost by letting us buy 1 type of printer and 1 type of paper (that didn’t require ink).
As part of the label redesigns we were able to add hierarchy to the labels making the picking and put away process much faster.
A unique part of our business is that garments can return in many states. Some need repair while some can be tailored outside of our warehouse. Meaning we could ship out a 34” pair of pants that returns with a new hem off 32”. Because of this we need to have tailors make adjustments to garments before they can be accepted back into inventory.
In our new system we built the ability for employees to flag a garment for repair. The UI shows artwork of a garment and allows the employ to mark the location of the garment and the issue that needs correcting. This prints a label with the same artwork that can be attached to the garment. When it’s dropped at the tailor station the tailor can scan the same label to get started. The system keeps visibility and logs of this entire process.
To gain audit trails we would need employees to auth with the stations in the warehouse to complete work.
We quickly came to a goal of no keyboard entry at all for the UI. This means we couldn’t have people typing pin codes or password to auth their work.
We bent our rule of no new hardware and bought a $10 barcode scanner from Amazon. These scanned incredibly fast and could be set to work as keyboard entry. So for less than $300 we could re-outfit every station with barcode scanners that required zero configuration.
From there we could print employee badges with QR codes using our front-end and zebra printers.
Badge scans are required to complete work at any station adding complete audit trails for any completed work.
We built all station UI in a React web app. This connects to all the RFID readers by IP address and allows each station to tune those antenna near that machine.
All QR are essentially urls for each item in the system. As the barcode readers scan QR codes they enter those urls into hidden fields in the UI.
This is a Django based project with several plugins like simple history.
This handles the database, user accounts, and exposes an API layer for the UI to consume. All location and employees are handled in Django admin and deep link to the UI project when printing labels are necessary.
The second core hardware issue was our RFID system. We had to learn by trial and error to tune and power the different antenna and tags that were already installed.
This was tedious work but led to the discovery that there were about 3x the number antenna necessary in the warehouse. This was causing slow and inconsistent reads.
We were able to find an open source project to read from our existing RFID readers. We decided to keep this system as simple as possible. The reader service would log all requests from readers. The front-end ui would be configured per station to request the logs for a specific reader and make decisions about how to manage when an RFID tag was last polled. This let us learn quickly by tuning params per station and make up for our lack of electrical engineering and radio frequency knowledge.
The data migration was run multiple times before launch day so we knew that was solid. We actually started to learn how inaccurate the old system was during these test. The hardware in the warehouse was able to be setup and tested days before cutting the system over. Staff was trained on the new system the week before.
The day of the launch was scary and rewarding. There was one moment were an employee cried because the station she ran had became so much less stressful. There were only very minor bugs most of which were fixed within days.
Once our front-end was complete and deployed we were able to allow returning garments to locations via mobile devices. We now had QR codes on all locations and garment labels. This was trivial to add to the UI and had all the same auth and tracking without needing to deploy to any app stores.
The system has proven incredibly resilient and bug free. The max capacity of the warehouse has grown over 400%. Orders can also be picked and shipped in under 15 mins.
There is almost complete real-time visibility for all stations, employees, and queues. We were able to allow staff to generate there own visibility into data using Metabase. We have used this data to refine warehouse process over time and tune adjustments as necessary.
The system is vastly less complex. The top priority order is always top of queue and can be fulfilled by any employee. Blocked orders and errors are flagged for management to resolve without holding up the rest of the system.
description | old system | new system |
---|---|---|
subscriptions | $,$$$,$$$/year | $,$$$/year |
software services | 6 | 3 |
keyboards | required | none |
garment returns | location based on convention | mobile scans |
audit trail | none | badge validation |
printers | 4 models | 1 |
paper types | ~7 | 1 |
reports | daily ship totals | real-time for all data points |
garment repair | post-its and conversation | location based tracking |
lable visibility | 1-2ft | 15 ft |
RFID antennas | 3-4 per station | 1-2 per station |
lable printing | ad hoc creation in Word | bulk printing in app |
brands | 1 | 2+ |
output | ~3,000 units/day | ~15,0000 units/day |
languages | english | English, Spanish |
time to ship | 2-3 hours | 15 mins |