Skip to main content
Data story

Inside the HelloFresh
Ingredient Catalogue

A fast, evidence-led walkthrough of an anonymised HelloFresh ingredient sample (1,980 rows Γ— 37 columns) across Benelux and DACH.

↓ Scroll to explore
πŸ‡§πŸ‡ͺπŸ‡³πŸ‡±πŸ‡±πŸ‡ΊπŸ‡«πŸ‡·
Benelux (FR)
1,010
ingredient SKUs
Belgium, Netherlands, Luxembourg β€” labelled in French
πŸ‡©πŸ‡ͺπŸ‡¦πŸ‡ΉπŸ‡¨πŸ‡­
DACH
970
ingredient SKUs
Germany, Austria, Switzerland β€” labelled in German
Act 1

The Catalogue

This analysis starts with an anonymised sample of the ingredient catalogue: 1,980 SKU rows and 37 columns across Benelux (FR label set) and DACH (DE label set). The objective is early-stage data understanding for Nexer Insight.

What the columns capture

The schema spans identity fields (for example id, name, ingredient_name), market and brand context (market, sku_locale, brands*), product taxonomy (category, subcategory, family), operational constraints (temp_min, temp_max, storage_tier), sustainability signal (co2emission_factor), and timing (created_at, created_year_month). Some semantics still need client confirmation (notably sku_locale mapping and COβ‚‚ units/methodology).

Show all 37 columns

id, market, name, cooling_type, sku_locale, sku_code, ingredient_name, culinary_sku_status, brands, sku_type, quantity, quantity_uom, quantity_in_pack, temp_min, temp_max, temp_unit, recipe_card_quantity, recipe_card_unit, created_at, co2emission_factor, product_types, category, subcategory, family, product, attribute1, attribute2, acceptable_code_life, crush_class, code_check_req, packaging_type, quantity_uom_secondary, storage_tier, created_year_month, brands_hellofresh, brands_green_chef, brands_factor

Two markets, one exploratory baseline

Within this sample, Benelux has 1,010 rows and DACH has 970 rows. We treat any market differences as directional because coverage may be incomplete.

0
unique ingredients
standardised English names
Act 2

One Ingredient, Many Names

First question: what is the right analytic entity? Beneath 1,980 SKU rows we find 564 unique ingredient_name values β€” the canonical identities that cut across language, size, and packaging variants.

The multiplier effect

Those 564 ingredients expand to 1,802 distinct product names once size, language, packaging, and brand variants are included.

What this tells us about analysis setup

Analyses at name level are about 3Γ— noisier than analyses anchored on ingredient_name. Ingredient-level normalisation is a prerequisite for reliable downstream work.

05001,0001,500Pre-cutNot applicableHerbsLeafy greens & saladsGreenhouse vegetablesStandard fruitsPlant basedExotics/citrusRoot vegetablesBrassicaStandard vegetablesMushroomsFinfishPoultrySwineFish preparationCrustaceaGameBovineMean COβ‚‚ emission factor
Act 3

The Carbon Chasm

Each ingredient carries a co2emission_factor β€” its estimated carbon footprint per unit. Plotting the mean by subcategory shows that animal proteins span a wide range: game, crustacea, and fish preparations all carry meaningful footprints. (Units/methodology are still a documented client clarification point.)

Then there's beef.

The bovine subcategory (beef and veal) sits in a class of its own, with a mean COβ‚‚ factor of 1,727. The second highest subcategory β€” game β€” comes in at 639. At the other end, plant-based protein averages just 48.

A 36Γ— gap

Bovine's COβ‚‚ factor is 36Γ— higher than plant-based protein in the same catalogue. This isn't a rounding difference β€” it's the difference between the longest bar on the chart and one of the shortest. No other subcategory comes close to bovine.

Exploration signal

At exploration stage, the key point is measurement readiness: co2emission_factor clearly separates high- and low-emission groups (for example bovine vs plant-based, ~97% lower on mean factor).

Frozen (≀-15Β°C)Cold (≀4Β°C)Chilled (4–7Β°C)Cool (8–15Β°C)Ambient (>15Β°C)CrustaceaFinfishPoultryBovineGameFish preparationSwinePlant basedMushroomsStandard fruitsNot applicableHerbsPre-cutGreenhouse vegetables0%25%50%75%100%
Act 4

A Cold Chain Story

Every SKU in the catalogue has a temp_min and temp_max. Together they define the storage band each ingredient must live in β€” from frozen to ambient β€” all the way from warehouse to customer doorstep.

Proteins run cold

Poultry (90% cold), finfish (93% cold), and bovine (76% cold) are predominantly stored in the cold (≀4Β°C) band. Swine is more mixed β€” roughly half cold, half chilled β€” with 13 SKUs requiring freezing, the most of any protein subcategory.

Produce stays chilled

Pre-cut vegetables (93% chilled) and standard vegetables (86% chilled) sit firmly in the chilled (4–7Β°C) band β€” a distinct logistics zone from protein. Herbs and root vegetables also sit here. Co-loading produce and protein in the same delivery box requires careful temperature management.

Ambient is the minority

Only 42 of 1,980 SKUs are marked ambient, and they are scattered rather than forming a clear ambient-only segment. Most of this catalogue is cold-chain dependent.

More in BeneluxMore in DACHPre-cutStandard vegetablesFinfishRoot vegetablesLeafy greens & saladsHerbsMushroomsBrassicaCrustaceaGameFish preparationPlant basedBovinePoultry-100-500+50+100Benelux SKU count βˆ’ DACH SKU count
Act 5

Two Markets, Two Tastes

This is an exploratory read of the sample, not a full market census. Interpret all differences as directional.

How to read this chart

Blue bars extend right when Benelux carries more SKUs in a subcategory; red bars extend left when DACH carries more. The chart filters to subcategories where the gap is at least 5 SKUs β€” only the most visible differences in this sample extract.

Directional pattern in the sample

In this sample, Benelux shows higher counts for poultry (+105), bovine (+44), and plant-based (+25), while DACH is higher in pre-cut vegetables (+40), standard vegetables (+18), finfish (+18), root vegetables (+16), and herbs (+11).

Exclusive families (sample view)

We observe 25 Benelux-only and 19 DACH-only ingredient families in this extract. We treat "only" as "only in the sample", not "only in the full market".

ActiveOnboardingOffboardingInactiveHelloFreshHelloFresh + Green ChefFactorGreen Chef100%75%50%25%0%
Act 6

The Brand That Faded

HelloFresh operates three brands in these markets: the core HelloFresh label (1,512 SKUs), a sub-brand Factor (98 SKUs), and Green Chef (60 standalone SKUs, plus 310 shared dual-brand SKUs).

Green Chef: 100% inactive

All 60 standalone Green Chef SKUs carry a culinary_sku_status of inactive. Not offboarding, not in transition β€” fully inactive. The 310 dual-brand SKUs shared with HelloFresh are almost entirely active, but the standalone Green Chef brand in these markets is gone.

A data-driven discovery

There is no "discontinued" column in the dataset. This finding surfaces only by crossing brands against culinary_sku_status. It's the kind of insight that only comes from systematic exploration of the data β€” not from reading a product brief or press release.

BeneluxDACH20192020202120222023202420252026050100150200SKUs created per month
Act 7

The SKU Timeline

Every SKU carries a created_year_month field β€” the date it first entered the catalogue. Plotting monthly additions reveals when each market was built, when it expanded, and where the data has been touched most recently.

DACH started first

The first DACH entries appear in May 2018. Benelux appears soon after in August 2018.

Bursty updates, not a smooth curve

Monthly additions come in waves. The largest month is March 2023 (245 SKUs, mostly Benelux).

The 2026 cluster

A notable late cluster appears in Jan–Feb 2026 (69 SKUs). As noted in client clarifications, this may reflect migration/backfill rather than true launches.

What this exploration established

🌍
564 ingredient_name values underlie 1,802 product names β€” about a 3Γ— multiplier from size, language, and packaging variants.
🌱
Bovine carries a mean COβ‚‚ factor of 1,727 vs 48 for plant-based β€” a 36Γ— gap that confirms strong signal in the emissions field.
❄️
Proteins (≀4Β°C) and produce (4–7Β°C) require different cold-chain tiers, showing why the temperature fields are operationally important.
πŸ—ΊοΈ
Benelux leads in poultry, bovine, and plant-based (+105, +44, +25), while DACH leads in pre-cut veg, finfish, and herbs; these are directional patterns in the sample.
πŸ“‰
All 60 standalone Green Chef SKUs are inactive β€” a finding surfaced by crossing brands with culinary_sku_status.
πŸ“…
DACH appears first (2018-05), Benelux follows in 2018-08, and timeline spikes (including Jan–Feb 2026) should be treated as potential migration/backfill artefacts in modelling.

Data source: anonymised sample of the HelloFresh ingredient catalogue (Benelux & DACH). This scrollytelling piece documents EDA findings for internal Nexer Insight project discovery.