Generation Tux icon
Nov 2017
Generation Tux


Warehouse re-build in 99 days.

Generation Tux - Warehouse

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.

The Problem

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 reqular support calls to recover from the outages.

old system

Design Sprints

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.

  • reduce as many 3rd party dependencies as possible
  • all existing workflows would need supporting
  • add auth and audit trails to the system
  • support for English and Spanish in the UI
  • add real time reporting
  • no new hardware purchases
  • increase capacity and speed
  • fulfill to multiple brands
  • have it done before next year's contract renewal
  • no down time

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.

design sprints

Along the way we uncovered several process issues:

  • garments and locations had nearly unreadable labels
  • there were 4 different printers with even more paper types, colors, and sizes
  • duplicate processes were everywhere to protect against the old unreliable software and lack of accountability
  • the RFID readers were tuned so poorly that they were likely causing inventory to be misplaced
  • garment repair was an untracked side process
  • required lots of manual keyboard entry
  • current warehouse relied on convention and tribal knowledge since the software was unreliable
  • reships and priority orders were side process usually handled by management due to the complexity of the system


We made an immediate design decision to optimized on the Zebra label printers for several reasons.

  1. they were the most reliable gear we owned
  2. they were the cheapest paper type
  3. they were the fastest equipment we had
  4. they were necessary for shipping labels

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).


pick list before and after

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.

needs tailor

Audit Trails and Visibility

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.

badge prompt

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.

Warehouse UI

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.

warehouse ui showing multiple brands

Warehouse back-end

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.

RFID service

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.

Launch Day

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.

Mobile Return

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.

mobile return proof of concept

Since Launch

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.

example charts from warehouse data

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.

Before and After

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