What 28,000 Inventory Snapshots Taught Us About SA Footwear Retail
When you look at 28,348 inventory snapshots across a multi-branch footwear retailer, patterns emerge that no amount of store visits or weekly reports will reveal. During our pilot with a 28-store South African footwear retailer, Replenify processed every SKU at every store at every snapshot point. Here is what the data taught us about how inventory actually behaves in South African modern retail.
The data set
Each snapshot represents one SKU at one store at one point in time. A snapshot captures: current stock on hand, recent sales velocity, price point, days since receipt, size, colour, style, and store attributes. Multiply that across dozens of stores, thousands of SKUs, and weeks of observation, and you get 28,348 rows of ground truth.
This is not a sample. It is a census. And a census reveals things that samples miss.
Pattern 1: Size distribution varies more than anyone expects
The conventional wisdom in South African footwear retail is that size 6 and 7 are the peak-demand sizes for women's shoes, and size 8 and 9 for men's. This is broadly true at the national level. It is badly wrong at the store level.
The data revealed that individual stores have size demand curves that diverge significantly from the national average. Some stores peak at size 5 (typically stores in areas with younger demographics). Others peak at size 8 or 9 (often suburban stores with different customer profiles).
The practical implication: allocating stock based on a national size curve means every store gets somewhat wrong quantities of every size. The stores whose demand peaks at size 5 end up with too many size 7s. The stores that peak at size 9 end up short on large sizes and oversupplied on smalls.
This is not a small effect. In the pilot data, the standard deviation in peak size across stores was 1.3 sizes -- meaning that a store one standard deviation from the mean has its peak demand a full size away from where national averages would predict.
Getting initial allocation right by store, accounting for these per-store size curves, is the highest-leverage improvement most multi-branch retailers can make.
Pattern 2: Store velocity is not stable
Merchandise planners tend to rank stores by performance and treat those rankings as stable. Store A is an A-grade store. Store B is a C-grade. Allocate accordingly.
The snapshot data showed that store velocity rankings shift significantly within a season. A store that is in the top quartile for sell-through in month one can drop to the third quartile by month three, and vice versa.
The drivers are varied: local events, competitor activity, mall renovations, weather patterns, staff turnover, and dozens of other factors that are invisible in aggregate reporting. The point is not that these shifts are predictable (they are often not), but that treating store grades as fixed leads to systematic misallocation.
This is why continuous rebalancing matters more than getting the initial allocation perfect. Even a perfect initial push degrades within weeks as store-level demand shifts.
Pattern 3: Broken size runs decay faster than expected
A "broken size run" occurs when a store has some sizes of a style but is missing the key selling sizes. For example, a store has sizes 4, 6, 10, and 11 of a particular shoe -- but is missing 5, 7, 8, and 9. The remaining stock is nearly unsellable at full price.
The data quantified something that planners know intuitively but rarely measure: broken size runs have a sell-through velocity 60-75% lower than complete runs. The decay is not gradual. It is a step function. Once the size run breaks, velocity falls off a cliff.
The implication for rebalancing is significant. A move that reconstitutes a sellable size run at the destination store is worth far more than a move that simply redistributes individual units. Replenify's engine specifically evaluates size run impact at both source and destination before recommending a transfer.
The implication for end-of-season management is equally important. Broken size runs that cannot be reconstituted through consolidation should be marked down early, not left to age. Returns & Markdown intelligence can identify these situations and recommend action before the markdown gets deeper.
Pattern 4: Data quality is not optional
This is the least glamorous finding, but possibly the most important.
Approximately 8% of snapshot rows in the initial data load had issues that required cleaning: duplicate entries, inconsistent size naming conventions (is it "7" or "07" or "UK7"?), mismatched store codes, and inventory counts that did not reconcile with transaction records.
Eight percent does not sound like much. But when you are making automated decisions based on data, 8% noise translates directly into bad recommendations. A rebalancing engine that sees inflated stock at Store A (due to a phantom inventory count) will recommend moves from A to B that should not happen.
Replenify addresses this through the canonical data model in the integration layer. Every data field is normalised, validated, and reconciled before it enters the engine. Size naming is standardised. Store codes are mapped. Inventory counts are cross-referenced with transaction logs.
This is not exciting work. It is essential work. The retailers who get the most out of inventory intelligence are the ones who invest in data quality first.
Pattern 5: The 80/20 in rebalancing is real but not where you expect
Approximately 80% of the GP uplift from the pilot came from about 20% of the moves. This aligns with the Pareto principle. But the interesting finding is which moves drove the most value.
The highest-value moves were not the largest-quantity transfers. They were moves that:
- Reconstituted a complete size run at a high-velocity store
- Moved stock from a store heading into markdown to a store with genuine demand
- Consolidated fragments from multiple low-performing stores into a single strong store
The lowest-value moves were the ones that felt most obvious: large-quantity transfers between stores with similar demand profiles. These moves shuffled stock without meaningfully changing outcomes.
This has practical implications for how retailers prioritise execution. When the engine generates 1,572 moves, not all 1,572 are equally urgent. The platform ranks moves by expected GP uplift so that operations teams can focus on the highest-impact transfers first.
Pattern 6: Transfer timing matters as much as transfer selection
An observation that surprised us: the same move recommended in week 3 of a season and week 8 of a season can have dramatically different GP outcomes. Early-season transfers capture more full-price selling days at the destination. Late-season transfers often arrive just in time for markdown.
The pilot data showed that moves executed in the first half of a selling period generated roughly 2.3 times the GP uplift of equivalent moves in the second half. This is intuitive in hindsight -- earlier moves give stock more runway to sell at full price -- but it has a practical implication that most retailers miss.
The implication: rebalancing is not a periodic cleanup activity. It is a continuous optimisation that should run as frequently as operationally possible. Weekly at minimum. Daily is better. Replenify's engine runs in 265 milliseconds precisely so that retailers can rebalance daily without computational constraints.
This timing effect also has consequences for price optimization. A style that is underperforming at one store in week 6 faces a choice: transfer it to a store with demand, or mark it down. The data suggests that transfer (when the economics support it) consistently outperforms markdown as a first response.
What this means going forward
The 28,348 snapshots from the pilot are a starting point. As Replenify processes more data across more retailers, the patterns will sharpen and new insights will emerge.
Some questions we are actively investigating:
- Seasonal shape variations across South African regions. Does the Durban season look different from the Johannesburg season? Preliminary data suggests it does, driven by climate differences and tourist activity patterns.
- Import timing effects. With 60-120 day lead times from Asian suppliers, how does arrival timing relative to season start affect sell-through curves? Early arrivals should outperform, but by how much?
- Category interaction effects. When a store receives a strong allocation of sandals, does it affect boot sell-through? Assortment composition effects are poorly understood and worth quantifying.
- Weekend vs weekday velocity. Do mall-based stores and strip-mall stores show different intra-week selling patterns, and should rebalancing account for day-of-week effects?
The data quality imperative
One theme runs through all six patterns: data quality is not a nice-to-have. It is a prerequisite. Every insight in this post was only possible because the pilot data was cleaned, normalised, and validated through Replenify's canonical data model. Inconsistent size naming would have made Pattern 1 invisible. Missing transaction records would have distorted Pattern 2. Phantom inventory counts would have invalidated Pattern 5.
For retailers considering any form of inventory intelligence -- whether Replenify or another approach -- the first investment should be in data quality. Clean your size naming conventions. Reconcile your inventory counts with your transaction logs. Standardise your store codes. The intelligence layer is only as good as the data it sits on.
For a comprehensive look at how these insights connect to broader inventory strategy, see our guide to inventory optimization for modern retail. For a deeper dive into the merchandise lifecycle that these patterns inform, see Merchandise Planning Explained.
The data speaks clearly on one point: the gap between what retailers assume about their inventory and what is actually happening in their stores is larger than most people realise. Closing that gap, with 28,348 data points rather than 28 store visits, is where the margin improvement lives.