TOAD.io — Tool for Optimizing & Allocating Displays
A Supply Chain Analytics & Insights Team (SCAI) Product Deep Dive
TOAD.io — Tool for Optimizing & Allocating Displays
A Supply Chain Analytics & Insights Team (SCAI) Product Deep Dive
Algorithms + Interface: Sandeep Purushotham, Mohit Sahasrabudhe, Zach Singer-Leavitt
Business Requirements & Beta Testing: Matt Gundersen, Dave Burtman, Susan Cabral, Steve Danis, Rob Hickey, Amanda Goodman, Maryann Stevens, Dan Ramnes, Kimberley Felice-Dooley, Denise Osowski, Jenn Petisce
Back-End Engineering + Flask: Rajeev Jain, Sudee Mangalwadekar
TL;DR:
CVS uses pre-stocked cardboard displays (like towers and risers) to showcase “off shelf” items. These displays simplify logistics, improve customer experience, and support merchandising strategies. However, allocating them effectively across stores is complex due to varying store needs and bundled display contents.
To solve this, CVS developed TOAD.io, a self-service tool powered by two key algorithms:
· Greedy Algorithm: Optimizes which displays to send to each store based on projected demand and KPIs like sales or margin.
· Genetic Algorithm: Optimizes the internal configuration of the displays, improving allocation accuracy by ~10% in cases where custom designs are possible.
The tool integrates demand forecasts, data-driven assumptions for “display lift,” and a user-friendly Streamlit interface. It’s backed by a scalable backend architecture using Flask and AKS clusters for heavy computation.
Impact: 90% reduction in planning time, better inventory alignment, improved customer experience, and significant cost savings.
What Are Displays?
If you walk into a CVS during the holidays, you might notice free-standing cardboard towers filled with gifts and wrapping paper. In winter, you’ll see cold-weather items like hats, gloves, and hand warmers on temporary shelves. Come spring, cardboard “risers” may showcase cold, flu, and allergy meds. In retail, these are all called “displays” — pre-stocked cardboard units featuring multiple unique items.

Figure 1. Examples of different display types found at CVS. Gearing up for summer!
Why Are Displays Different?
Displays offer several supply chain and merchandising benefits. Instead of sorting and packing individual items, the CVS distribution center handles the assembled display just once. In stores, colleagues can quickly unbox and set it up, avoiding shelf restocking. Displays also highlight seasonal items that lack permanent shelf space and provide a convenient one-stop shop for customers (e.g., all winter clothing in one place), reducing the need to search the store.
Despite these benefits, displays are more complex to allocate. We want to consider the unique customer base and sales history of each store when we choose to send a store a particular product, but when the products are bundled together on displays, these local nuances are harder to capture.

Figure 2. Display planning at CVS touches on all aspects of the supply chain, store operations, and merchandising functions and involves a rich mix of constraints and objectives.
Optimizing Display Allocation with Algorithms
One of the most important steps in designing a successful display campaign is predicting the sales demand in the first place. Last year’s sales are often a good starting point, especially if we’re planning a year in advance. However, in the case of newly-introduced items, we need a process for choosing proxy items with sales history.

Figure 3. Framework to arrive at Projected Store-SKU demand. Our tool allows for flexibly constructing sales demand from past sales, forecasts and business intuition. This demand is a key input to the optimizer.
Sometimes we must anticipate extra store needs, even for items already stocked (e.g., allergy meds sold year-round but boosted by spring displays). As the season approaches, we can use CVS machine learning demand forecasting tools. We also measure “display lift”— the sales boost from using displays over standard shelving — through A/B testing or statistical modeling based on historical sales data.

Figure 4. Sales from stores that received displays (blue) and the estimated sales in those same stores from a model trained only on stores which didn’t receive the displays (orange). The difference is the lift in sales attributable to displays.
Greedy Algorithm
Let’s assume we’re choosing from a fixed list of displays with unchangeable contents. The challenge of sending the right mix to each store based on projected demand is an optimization problem. After testing methods like linear programming, our team found that a custom “greedy” algorithm was faster and more accurate. It also adapts to shifting business goals and can optimize for KPIs like quantity, profit margin, or GMROII (Gross Margin Return on Inventory Investment).
Here’s how the algorithm works, looping through each store:
- Gather Sales Data — Collect relevant demand data (see Figure 3).
- Select Best Display — Choose the display that maximizes the selected KPI.
- Adjust Demand — Subtract the allocated display’s quantities from remaining demand.
- Repeat — Continue until demand can’t be reduced further or stopping criteria are met (e.g., the store’s floor space is full or the next display isn’t cost-effective).
This “bottom-up” method starts with store-level demand and rolls up to a chain-wide order. Compared to the traditional “top-down” approach, which allocates from a total purchase, our method improved allocation accuracy by 10–15%. Accuracy is defined as the sum of over- and under-allocated units — our optimization’s “fitness function.” Since we’re sending fixed display bundles (e.g., 8 gloves and 2 scarves), we can’t perfectly match demand (e.g., a store may only need 5 gloves), but we can come close.
For CVS, this algorithm offers major cost savings and ensures stores are better stocked for our customers — boosting both experience and efficiency.
Genetic Algorithm
The “greedy” approach works well when display contents (“piece counts”) are fixed. However, we face a new challenge (and opportunity) when item quantities are free to vary and we can work with our vendors to create a CVS-specific display. Since the number of combinations to evaluate grows rapidly, we use genetic algorithms — an optimization method inspired by natural selection. It’s ideal for complex, combinatorial problems, evolving solutions over time based on a fitness function.
Here’s a simplified overview:
- Initialize Population — Start with vendor default piece counts per display.
- Selection — Choose top configurations using the fitness function and methods like tournament or roulette selection.
- Crossover — Combine two parent displays to create new ones using crossover techniques.
- Mutation — Introduce random changes to item combinations to increase diversity.
- Replacement — Replace old configurations with new ones, optionally keeping top performers (elitism).
- Termination — Stop after a set number of generations, a fitness goal, or no further improvement (plateau) in fitness.

Figure 5. Each blue dot is a member of a “generation” (e.g. suite of displays evaluated for its ability to satisfy demand in eligible stores). The black line represents the fitness function.
We define our fitness function as…
MIN ABS[Demand Units — Allocated Units]
…where demand is defined at the store-item level. Essentially, we are trying to nest different combinations of displays with varying and overlapping contents into the store-item demand forecast.
The fitness function can be based on financial cost (e.g., inventory cost of over-allocation vs. margin loss from under-allocation) or GMROII. While the model supports all options, using units often works well in practice.
As the algorithm tests configurations, it may settle on a local optimum. Tuning parameters like generation count, variation, and stopping criteria can help avoid premature convergence, and involves both experimentation and intuition. We found a solid default setup through trial and error. Ultimately, the genetic algorithm led to a ~10% improvement in the fitness function over the purely greedy approach. It also enabled more stores to meet sell-through targets, boosting margin potential. Plus, sending stores the right mix of products improves execution, setup, and placement.
Self-Service Application and Product-Centric Mindset
At CVS, our data science and engineering capabilities have evolved rapidly. First, we started complementing traditional BI and dashboards with AI/ML models for business optimization. Now, we empower teams with self-service tools that support independent decision-making. Through listening sessions, prototyping, and feedback from early adopters, we maintain a user-first approach.
Our display optimization tool, TOAD.io (Tool for Optimizing & Allocating Displays), reflects this shift. It enables users to apply advanced algorithms to streamline display allocation while aligning with business goals. Finally, packaging the optimizer this way opens the door to future API-based applications in areas like scheduling, routing, and marketing optimization.
{ “problem_id”: “string”,
“problem_type”: “string”, // e.g., “resource_allocation”, “scheduling”
“objective_function”: “string”, // e.g., “maximize_profit”
“constraints”: [“string”], // List of constraints
“data”: { / Problem-specific data / },
“user_id”: “string” }
Figure 6. Request format for a hypothetical API.
Front End
Our goal was to make the application easy to use for Inventory Planners to allocate displays and for Category Managers to explore and negotiate configurations with vendors. To support this, we built a Streamlit interface (https://streamlit.io/) that presents a curated set of parameters, allowing users to apply business intuition (e.g., assumptions about new item performance or whether to optimize for quantity or GMROII). The interface also includes visualizations of demand projections and display quality scores (e.g., number of stores likely to miss sell-through thresholds) as a “flight check” before running the algorithm.

Figure 7. “Splash page” welcoming users to the application.

Figure 8. A series of visuals makes it easy for inventory planners to balance their intuition and business constraints with the optimization objectives.
Back End
As data scientists in a large organization, we’re fortunate to have a dedicated Data Engineering team that helps deploy and optimize solutions beyond the prototype phase. One of the biggest challenges in this project was implementing the computationally intensive genetic algorithm, which can take hours to run depending on display complexity.
To solve this, our Data Engineers decoupled the algorithm from the Streamlit front-end and housed it in a separate Flask (https://flask.palletsprojects.com/en/stable/) container. This setup lets users launch the algorithm, continue working, and return once results are ready — improving both performance and user experience. It also enables us to spin up an AKS cluster on demand and evaluate populations in parallel, significantly reducing time to a near-optimal solution. Finally, it lowers compute costs by keeping the lightweight interface always on and running the heavy backend only when needed.

Figure 9. Architecture Block Diagram.
Success Metrics and Future Opportunities
In display-heavy categories such as cold & flu remedies and allergy products, our Inventory Planners have achieved a remarkable reduction in the time required to set up and allocate display programs — shifting from weeks down to just hours. This enhancement not only leads to more efficient inventory allocations but also fosters an improved in-store experience and a better assortment for our customers. Moreover, by optimizing our display strategies, we can redirect working capital to other vital areas of the business. It also frees up human capital to focus on higher-touch areas of the supply chain (resolving warehouse backlogs, triaging shipment delays, vendor partnerships, etc.).
Are you interested in joining us? Do you want to tackle real-world challenges using a combination of business insight, analytical expertise, and user-centric design? Come along! https://jobs.cvshealth.com/us/en/corporate-jobs
The Analytics and Behavior Change (A&BC) department drives the analytics and insights underpinning CVS Health’s transformation of the healthcare industry. A&BC contains many teams and hundreds of data scientists and engineers. These colleagues work on a wide portfolio addressing health insurance, front-store/retail analytics, pharmacy benefits management, retail pharmacy, and other CVS Health business spaces. The authors’ specific team — Supply Chain Analytics and Insights (SCAI) — helps empower our supply chain to drive profitable sales growth, ensure stores are stocked with an optimal inventory investment, and provide our business teams with the analytic products and recommendations to do their best work.
All trademarks mentioned in this article are the property of their respective owners. This article is an independent publication and has not been authorized, endorsed, or sponsored by these organizations.
© 2025 CVS Health and/or one of its affiliates. All rights reserved.
메타데이터
- post_id
- b0d9062bab59
- slug
- toad-io-tool-for-optimizing-allocating-displays-b0d9062bab59
- url
- https://medium.com/cvs-health-tech-blog/toad-io-tool-for-optimizing-allocating-displays-b0d9062bab59
- canonical_url
- https://medium.com/cvs-health-tech-blog/toad-io-tool-for-optimizing-allocating-displays-b0d9062bab59
- author_url
- https://medium.com/@zhechtle
- status
- ok
- fetched_at
- 2026-06-14 11:28:49