One of the biggest problems major retailers face are those around inventory visibility. What is our shrink? Why is said shrink happening? Why are we not selling through these particular products?Answers to these sorts of questions could save companies tens of millions of dollars, so it at least sets a solid case for investing heavily in better ways to track inventory right?
Correct! Leading retailers are pioneering innovative technologies to address this problem, and an increasingly common, scalable means of doing so is the use of Radio Frequency Identification (RFID). What this typically involves is the attachment of Electronic Product Codes (EPC) tags to individual product units, which are scanned from a radio-frequency transmitting device. The EPC tags are passive and reflect back the signal to the tranmitter/reader, which contains an encoding of their unique identifier. The identifier can then be linked to product data in a database, thus enabling unit-level inventory tracking.
I work in the analytics team of one of these retailers with a specific focus on use of RFID in stores, and it has been a pretty fun ride given how we're an early adopter this technology. I'll briefly layout a general process flow of how it operates in our business (without throwing away too much proprietary information):
So not only do we have daily visibility of our inventory, we also have a means of shopfloor replenishment that ensures all products in the shop are represented on the shopfloor. This is a huge value-unlocker for the business and accounts for tens of millions of dollars in annual sales we would have otherwise not realised due to products we have being not being availabe to the customer.
As for an explanation of the value of inventory visibility, the business can proactively raise dispatch orders from distribution centers or purchase orders with suppliers when the robot finds a store is running low on stock for a particular product. This will drive enhanced product availability in all stores in the business.
In case this breakdown of business value is confusing or if you're unfamiliar with some of retail's behind-the-scenes, the key takeways are summarised below:
Before we dive in to insights, let's quickly go th rough the sorts of datasets you can expect to generate as a result of having an RFID robot:
Store ID | Date | Run ID | Waypoint Coverage | Run Accepted? |
---|---|---|---|---|
S1 | 2025-01-01 | S1 | 2025-01-01 | 95% | True |
S1 | 2025-01-02 | S1 | 2025-01-02 | 50% | False |
... | ... | ... | ... | ... |
S10 | 2025-02-15 | S10 | 2025-02-15 | 92% | True |
Run ID | Product ID | EPC ID | Container | XYZ Coordinates |
---|---|---|---|---|
S1 | 2025-01-01 | P1 | 1 | Shopfloor | [10,5,2] |
S1 | 2025-01-01 | P1 | 2 | Stockroom | [15,20,1] |
... | ... | ... | ... | ... |
S1 | 2025-01-01 | P99 | 1000 | Shopfloor | [8,12,1] |
The replenishment task data generated would typically be made available in the following format:
Store | Task Date | Product ID | Replenishment Units Generated | Replenishment Units Completed | Task Completed Timestamp |
---|---|---|---|---|---|
S1 | 2025-01-01 | P1 | 4 | 4 | 2025-01-01 09:01:38 |
S1 | 2025-01-01 | P5 | 3 | 3 | 2025-01-01 09:04:21 |
... | ... | ... | ... | ... | ... |
S1 | 2025-01-01 | P5 | 3 | 0 | NULL |
The base metrics which capture how well a store measures in terms of inventory visibility and effective shopfloor replenishment are inventory accuracy and replenishment completion rate respectively. $$\displaystyle I_{s,t} = \frac{\sum_{i \in K_s} \min \{X_{s,i,t}, E_{s,i,t}\}}{\sum_{i \in K_s} \max \{X_{s,i,t}, E_{s,i,t}\}} \tag{1} $$ $$\displaystyle C_{s,t}^{Recorded} = \frac{\sum_{i \in K_s} R_{s,i,t}^{Recorded}}{\sum_{i \in K_s} R_{s,i,t}^{Generated}} \tag{2}$$ Where:
Note that in table 3, the values present in the Replenishment Units Completed field are a result of team members submitting replenishment tasks they've completed through some application. In rare instances, logging completion may be a 'tick and flick' exercise rather than the product actually being replenished on the shopfloor. This means that \( R_{s,i,t}^{Recorded} \) in equation (2) is not truly representative of the replenishment that was actually done. The good news, however, is that we can use EPC data to track movement of individual EPC tags between containers (i.e., shopfloor, stockroom) and adjust our reporting of completion accordingly: $$\displaystyle C_{s,t}^{Actual} = \frac{\sum_{i \in K_s} \min\{R_{s,i,t}^{Actual}, R_{s,i,t}^{Recorded}\}}{\sum_{i \in K_s} R_{s,i,t}^{Generated}} \tag{3}$$ $$\displaystyle R_{s,i,t}^{Actual} = \sum_{j \in E_{s,i}}\mathbb{1}\{([\text{Area}]_{j,t} = \text{'BOH'}) \land ([\text{Area}]_{j,(t+1)} \ne \text{'BOH'})\} \tag{4}$$ Where:
The ability to see what needs to be done in maintaning shopfloor availability, while having visibility over how effectively it's being done, is an extremely powerful tool in reducing millions of dollars in lost sales.
In response to these insights, retailers may ask how to extend this level of insight into other stock-handling processes, and stock integrity in general. The good news is that it's definitely possible! A real pain-point surrounding accurate inventory comes from stores' ability to process incoming stock in a timely manner. I'll present two different scearios that relate to this:
A possibility which can arise as a result of the first scenario is the existence of negative SOH, where our system believes we are at a neagtive SOH position if we sell through the newly arrived product's units before they're actually scanned into the system. So how do we track how effectively a store scans newly arrived stock? The answer is the manifest score: $$ \displaystyle M_{s,t} = 1 - \left( \frac{\sum_{i\in K_s} \sum_{t \in T} Q_{s,i,t}^{Late}}{\sum_{i\in K_s} \sum_{t \in T} Q_{s,i,t}^{Total}} \right) \tag{5} $$ $$ \displaystyle Q_{s,i,t}^{Late} = \begin{cases} A_{s,i,t} & \text{if } \left( A_{s,i, t} > 0 \right) \land \left (Q_{s,i,(x|x \ge t+1)}^{Scanned} > 0 \right) \\ 0 & \text{otherwise} \end{cases} \tag{6} $$ $$ \displaystyle A_{s,i,t} = E_{s,i,(t+1)} - E_{s,i,t} + \Delta_{s,i,t}^{Movement} \tag{7}$$ Where:
So what is the implication? If we adjust our stock levels to align with what the robot counted, then we'd falsely be writing on stock when the inventory scan-in is done, since we'd had done so in proxy via the RFID count-driven adjustment. Thus in the case of consistent late scan-ins, IA would be substantially impacted.
The second scenario we touched on is really just the operational opposite of the first. A team member scans newly-arrived inventory into the system, though that stock is not worked to the shopfloor or stockroom - an area of the store in which the RFID robot can read it. To measure how well team members process new stock as it's scanned in, we can use the load processing score: $$ \displaystyle L_{s,t} = \frac{\sum_{i \in K_s} \min \{E_{s,i,t}^{New} + E_{s,i,(t+1)}^{New} , Q_{s,i,t}^{Scanned}\}}{\sum_{i \in K_s} Q_{s,i,t}^{Scanned}} $$ Where: