Gousto is multiple different companies at once. We’re an e-commerce company with the expected digital ecosystem allowing users to go through the experience of selecting and buying a product, giving feedback, sorting out payments all on their device. Meanwhile everything involved with getting a recipe kit to your door as a customer involves a lot of ‘real world’ interactions: purchasing the required stock, moving this stock from our warehouse to the picking line, picking ingredients into boxes and ultimately preparing boxes onto pallets for distribution around the country. Add to that the fact that we deal with perishables and have a weekly changing menu of 40 recipes we offer nationally, which customers can choose from freely*. Together, they make for a complex business that needs to get many things right to succeed. The flipside of this complexity is that we are achieving step changes in efficiency through rethinking how combining fresh ingredients in a box ultimately result in most loved way to eat dinner in the UK.
First, let’s take a step back and consider Gousto’s competitive field. On the one hand we compete with other companies in the recipe-kit space. Then there are food-delivery companies and restaurants to some degree. But perhaps the most interesting competition lies with the supermarkets. It’s not hard to see that the supermarket model today is still the most dominant model for people in the UK to ensure regular meals — even with the onset of the online groceries model. Gousto aims to make shopping for groceries many times simpler by removing the need to go to the supermarket and removing the need to understand which ingredients and quantities are needed to provide your family with a healthy and balanced meal cooked at home. On the surface this seems like all there is to it: move groceries shopping online and wrap around a service that aggregates these groceries to certain tasty-looking recipes.
However, dig a bit deeper and you’ll find that in fact Gousto is inverting the supermarket model entirely. An average supermarket in the UK is likely to hold over 30000 SKUs (stock-keeping units) on site with relatively indiscriminate stock levels. Supermarket ‘users’ are then expected to peruse the store and find what they need**. Gousto works completely the other way around. We hold only a few hundred SKUs on site on a weekly basis. While these SKUs may change, the majority stay the same: most recipes will need either garlic, onion or tomato. Throughout the picking process in our fulfilment centre, these SKUs are picked into boxes, effectively mapping individual items back to the 40 recipes in the combinations our users have ordered them, rolling up volumes automatically. The effect is that a relatively small number of SKUs give rise to the 2.5M possible recipe combinations our customer can end up choosing.
At the heart of this model is a power law relation between the number of SKUs we have on site and the number of recipes we can offer. In the past two years we have scaled from 12 to 40 recipes while requiring less than double the number of SKUs. Gousto’s business model naturally benefits from this power law: a relatively simple operational model to make for a hugely varied customer experience. The data science team at Gousto are leveraging what we know about this power law to change how we run our operations and how we translate stock to recipe availability.
Like most e-commerce business we’re able to track our customers’ orders over time and learn a lot about customer preferences. Where Gousto is different is that some of these insights can carry straight over to how we run our operations. Seeing as we run our own fulfilment centre (FC), we have control over the processes and configuration that allows us to ensure all customer orders arrive ‘on time and in full’.
Most of the content in a customer’s Gousto box goes into the box during the picking process. In simple terms we route boxes through our FC on a conveyor belt running past a series of stations where boxes can stop to ‘collect’ SKUs. At each station, members of our picking teams take SKUs from slots in a pickface (essentially trays with SKUs on racking) and place the correct number of SKUs in the box. Two important inputs into the picking process are ‘slotting’, telling our systems where SKUs are supposed to be located on the line, and ‘routing’, telling our systems which stations boxes should stop at.
A simple approach to both inputs would be to randomly slot SKUs, making sure each SKU is represent multiple times, and then to route all boxes along all stations, guaranteeing that all relevant SKUs can be picked up. While this is a feasible approach, it’s clearly suboptimal. Instead, we approach both inputs as the result of a complex discrete optimisation problem, which we solve with the help of genetic algorithms. The combination of optimised slotting and routing have helped reduce the average box route length by over 60%, while enabling growing our weekly menu from 12 to 40 recipes. In turn this helped scale our peak product capacity by double digit percentages.
In the most recent iteration to our slotting and routing algorithms we decided to tweak the algorithms with the help of demand patterns. This built on two concepts. The first concept was to slot SKUs in such a way that SKUs that belong to recipes frequently bought together, appear together on stations. The plot below shows what pairwise combination frequencies may look like for a given menu. The fact that some combinations don’t occur at all, while other are very popular is what makes this concept powerful. From the perspective of the box, this would mean a box would be able to collect multiple complete ‘recipes’ at each stop. The second concept was to tweak the routing algorithm to prefer stopping to collect complete recipes. Linking the two concepts enabled a further 15% reduction in average box route length compared to the naive case.
Today, the number of recipes we are able to sell relates directly to the physical stock bought for the purpose of these recipes. Each recipe and its availability is tied to a particular stock allotment. This approach has served Gousto well in scaling to millions of recipes sold on a monthly basis. However, with scale, difficulties with the current approach also get magnified. One complexity we deal with on a weekly basis is that it is hard to predict how popular recipes will be relative to each other within a given menu. As a result, it may be that some recipes sell out much faster than others, even though the slow movers in one week may have been faster movers as part of a past menu.
In the future, we’re looking to leverage the power of combinations again, by enabling a stock-driven menu. When you think about it, availability of recipes across a menu is again a result of a combination — in this case of available stock units aggregate to complete recipes. Instead of doing this combination-aggregation with a rules-based approach, we could let an optimisation dynamically determine the optimal availability of recipes based on the the available physical stock as well as the most current prediction of recipe popularity. With this approach, while certain recipes might have an overestimated availability at the start of a menu, more up-to-date purchase data would help create a a better balance in availability across recipes.
Through its business model, Gousto has contributed to a nationwide shift in grocery shopping moving online and is helping to prevent food waste at scale. Yet, as we mature, we keep finding ways to reinvent how we operate and have the mindset to experiment with and deploy new approaches. From demand-driven slotting to stock-driven menus, Gousto will likely find other opportunities to leverage the power of combinations to drive further operational efficiency.
* 40 recipes in 4-recipe box means — rough math — 2.5M different combinations. Even if no same recipes can be put into a box, you’d still have 2.1M combinations
** this was not always the model: before the turn of the 20th century local it was more common for grocers to take your order at the counter, and proceed to collect the items from storage behind the counter