Hero
Predictive Analytics & ML
Predictive Modeling & Forecasting
Food & Meal-Kit E-Commerce

Ingredient-Level Demand Forecasting for a Meal-Kit Company's Weekly Menus


Let's Connect

Overview

What we built

A meal-kit company was ordering ingredients for 10 fulfilment hubs on educated guesswork, wasting perishables on one side and scrambling for substitutions on the other. We replaced the guesswork with ingredient-level forecasts.

In plain terms: every week the company publishes a new menu, and subscribers pick their recipes. But ingredient orders had to be committed two weeks before anyone knew what subscribers would choose, and those commitments were made in planner spreadsheets using experience and instinct. Guess high and fresh food expired in the warehouse; guess low and hubs ran short, forcing last-minute recipe substitutions that upset subscribers and cost the company credits.

We built a forecasting platform that predicts, hub by hub, which recipes subscribers will pick, based on what is on the menu, what each subscriber has liked before, the season, and how people have swapped meals in the past. The system turns those predictions into recommended purchase orders and updates them nightly as choices lock in, leaving planners to review only the exceptions it flags. Perishable waste fell 23% across all 10 hubs within two quarters, forecast error dropped from 31% to 14%, substitutions fell 41% year on year, and planning time per menu cycle went from 3 days to under 1.

The Problem

Weekly menus, guessed demand

The weekly menu is the heart of a meal-kit business, and it was also the heart of the problem. Each new menu reset demand in ways nobody could measure in advance: a returning favourite, an unfamiliar cuisine, a seasonal dish, all shifted what subscribers would pick. Yet ingredient orders across 10 fulfilment hubs had to be committed two weeks ahead, long before subscriber choices came in.

Planners bridged that gap with spreadsheets and experience, estimating recipe popularity from memory of similar dishes. Some weeks they were close. Other weeks a recipe outperformed or flopped, and the errors flowed straight into the physical world: pallets of over-ordered perishables ageing towards write-off in one hub, while another ran out and substituted ingredients into recipes subscribers had specifically chosen.

The substitutions were the most corrosive part. A subscriber who ordered one meal and received an altered version had a reason to complain, and the company answered complaints with credits. Waste drained margin quietly; substitutions drained it loudly, one disappointed subscriber at a time, while planners lost 3 days of every weekly cycle to the spreadsheet grind.

Two-week blind window

Ingredient orders were committed two weeks before subscribers made their choices, so every purchase was a bet placed before the race began.

Popularity guessed from memory

Recipe demand was estimated from planner experience with similar dishes, an approach that broke whenever a menu introduced something genuinely new.

Perishables becoming waste

Over-ordered fresh ingredients had nowhere to go, expiring in hubs and turning forecasting error directly into food waste and lost margin.

Substitutions and credits

Under-ordering forced last-minute recipe substitutions, and every altered box generated complaints and credit payouts that compounded the original forecasting miss.

What it was costing them

Every forecasting miss was paid for twice. Over-ordering turned fresh ingredients into waste across 10 hubs, while under-ordering turned into substitutions, complaints and credit payouts. Planners spent 3 days of each weekly cycle producing estimates the business could not fully trust, and with recipe-level forecast error at 31%, the company was carrying the cost of uncertainty in every purchase order it signed.

The Solution

Ingredient-level forecasting engine

We built the platform around a simple chain: predict what subscribers will pick, translate that into ingredients, and turn ingredients into purchase-order recommendations per supplier and hub. Recipe selection models learn from menu attributes, each subscriber's preference history, seasonality and past swap behaviour, so a new dish is forecast from its characteristics rather than a planner's best analogy to something served before.

Timing was as important as accuracy. Forecasts re-run nightly as subscribers lock in their weekly choices, so predictions tighten steadily as real orders replace estimates ahead of the commitment deadline. By the time orders must be placed, the platform has already reconciled its early view with actual subscriber behaviour, hub by hub, rather than freezing a guess two weeks out.

We deliberately kept planners in charge. The platform recommends purchase orders; planners review a dashboard that surfaces only flagged exceptions, cases where the forecast is unusual or confidence is low. Routine lines flow through without ceremony, which is how a weekly cycle that consumed 3 days of planning effort compressed to under 1.

Key decisions

01

Forecast at ingredient level

Predictions roll from recipe selections down to individual ingredients per supplier and hub, because purchase orders are written in ingredients, not recipes.

02

Model each hub separately

Every hub gets its own forecast, so purchase-order recommendations reflect what that hub's subscribers actually choose rather than a network-wide average that fits nobody.

03

Learn from swap behaviour

Past meal swaps are treated as demand signal, revealing which recipes subscribers avoid or trade towards when a menu gives them the choice.

04

Review exceptions, not everything

Planners review only forecasts the platform flags as unusual, keeping human judgement where it adds value and out of routine lines.

05

Re-forecast every night

Predictions refresh nightly as subscribers lock in weekly choices, so the final purchase orders are shaped by real selections, not stale estimates.

Measurable Impact

What changed after launch

The operational gains showed up within two quarters: perishable ingredient waste fell 23% across all 10 hubs, and recipe-level forecast error at the moment of order commitment dropped from 31% to 14% in weighted absolute percentage terms. Buying against a trustworthy forecast meant hubs stocked closer to what subscribers actually chose, week after week.

Subscribers felt the difference through what stopped happening: last-minute ingredient substitutions fell 41% year on year, and with them the credit payouts the company had been issuing as apologies. Planners now spend under 1 day per weekly menu cycle instead of 3, reviewing exceptions rather than building every estimate by hand, and the network absorbs new menus without the old scramble.

Forecast accuracy

Recipe-level error at 31% at commitment

Error down to 14% at commitment

Perishable waste

Routine over-ordering expiring in hubs

Waste down 23% across all 10 hubs

Subscriber experience

Frequent substitutions, complaints and credits

Substitutions down 41% year on year

Planning effort

3 days of spreadsheets per menu cycle

Under 1 day reviewing flagged exceptions

Headline results

Perishable ingredient waste reduced by 23% across all 10 hubs within two quarters

Recipe-level forecast error at order commitment fell from 31% to 14% (weighted absolute percentage error)

Last-minute ingredient substitutions down 41% year on year, cutting subscriber credit payouts

Planner time per weekly menu cycle cut from 3 days to under 1 across the network

Tech & Tools Used

What powered the build

Every tool below earned its place in this engagement. Here is the part each one played.

Python logo

Python

The core language of the forecasting platform, covering the feature pipelines over subscriber history, the demand models themselves and the purchase-order recommendation logic.

LightGBM

Gradient-boosted models predict per-hub recipe selections from menu attributes, preference history and seasonality, handling the mix of categorical and behavioural features cleanly.

scikit-learn logo

scikit-learn

Provides the preprocessing and evaluation backbone: encoding menu features, running backtests and measuring forecast error so model improvements are proven before they reach production.

Apache Airflow logo

Apache Airflow

Runs the nightly re-forecast cycle, refreshing predictions and purchase-order recommendations as subscribers lock in their weekly choices across the network.

dbt logo

dbt

Models subscriber, menu and order data into tested transformation layers, giving the forecasts and dashboards one consistent definition of every metric.

Snowflake logo

Snowflake

The analytics warehouse holding order history, menu attributes and swap behaviour at the scale the demand models train on each cycle.

PostgreSQL logo

PostgreSQL

Operational store for generated forecasts, purchase-order recommendations and exception flags, serving the planner dashboard and the downstream ordering workflows.

React logo

React

The planner-facing dashboard where flagged exceptions are reviewed, forecasts are compared against commitments and purchase-order recommendations are approved or adjusted.

Grafana logo

Grafana

Monitors pipeline health and forecast quality over time, alerting the team when data feeds stall or model error starts drifting upward.

Ready to Build your Food & Meal-Kit E-Commerce Business with Predictive Modeling & Forecasting

Ask Byte

Ask Byte

Typically replies instantly

just Now

Hi! I'm OrganByte's assistant. How can I help you today?

AI-generated content may be incorrect


OrganByte

Building innovative software solutions that transform businesses and drive digital success.

© 2026 YourCompany. All rights reserved.