Methodology
How Altera Calculates Your Protein Ratio, Step by Step

Methodology

Calculating a retailer's protein ratio means classifying every product sold, establishing its protein content, separating plant and animal protein, then weighting everything by sales. Here is how Altera Food Initiative proceeds, step by step: what we ask you for, what we do with your data, how we check the result and what you receive.
1. Receive and inventory your data.
2. Set the scope and identify each product.
3. Classify every product under the Protein Tracker and WWF methodology.
4. Establish each product's protein content.
5. Separate plant and animal protein.
6. Integrate sales volumes.
7. Calculate the ratios.
8. Check every result.
9. Measure classification accuracy.
10. Present the results and deliver the files.
The protein ratio is the share of plant protein in all the protein a retailer sells over a year. Each product is weighted by its sales: volume sold × net weight × protein content.
Ratio = Σ (volume × net weight × plant protein per 100 g) ÷ Σ (volume × net weight × total protein per 100 g)
We calculate two reference methodologies, separately, without ever mixing them:
- The Protein Tracker, developed by the Green Protein Alliance and ProVeg Netherlands. It counts protein, classifies every product into one of four groups and excludes only non-food items.
- WWF's Planet-Based Diets methodology. It counts tonnes of product, divides products into seven food groups and applies its own list of exclusions.
The two methodologies do not give the same figure. We explain their differences in Protein Tracker vs WWF: measuring the protein shift.
Seven rules apply from the first to the last day of a project.
- Your files are never modified. We work on a copy.
- No retailer's data goes to another retailer. No figures, no recognisable examples and no aggregates built from fewer than two retailers.
- Every value in our deliverables carries its source.
- One change at a time, measured before and after.
- No model evaluates another model. Accuracy is measured through human reviews.
- An accuracy rate is a quality indicator, not a guarantee of results.
- Every message addressed to you is written, reviewed and then sent by the project lead.
Everything starts with an inventory of what you send us, before any calculation.
What we ask you for. For each product:
- the EAN code, product name and net weight;
- its place in your department hierarchy;
- ingredient lists and nutritional values, if you have them;
- sales volumes or sales ranks, which can also come later.
What we do.
- We keep the archive as received and work on a copy.
- For each file, we count rows and columns, measure completeness and overlap between files.
- When the same data exists in CSV and Excel, we read the CSV: Excel stores codes as numbers and removes leading zeros, which corrupts EAN codes.
- We measure the starting facts once and for all:
- the coverage of declared protein contents, ingredient lists and net weights;
- the presence of sales volumes or sales ranks;
- the overlap with our reference database;
- the degree of agreement between your own classification and ours.
What you receive. An assessment of your data and an initial list of questions.
The scope covers all products sold during the period: those with a positive sales volume or a sales rank. It is fixed before any calculation and does not change afterwards.
Identification. Before any matching, we separate genuine EAN codes from other codes:
- an EAN-13 with a valid GS1 check digit identifies a product everywhere;
- an internal code or a restricted-circulation code (prefixes 02 and 20 to 29, used for variable-weight products) identifies a product only within your business.
We identify products sold under several codes so they are not counted twice. We remove test items, customer orders and non-food items. For WWF only, we apply its exclusion list: drinks other than dairy products, tea, coffee, spices, condiments, infant food, among others.
Net weights. They are assessed one by one:
- a weight of 1.0 is often a default value and is never used as is;
- if it is missing, we look in this order: the weight of the same EAN in a catalogue already measured, then the weight read from the product name ("6X1.5L", "400G"). Variable-weight products are flagged as such;
- cases and half carcasses are identified as such, so a case is not counted as a single unit.
What you receive. The agreed scope and the list of exclusions, written in black and white. They appear unchanged in the scope statement.
Every product receives a classification under both methodologies: a Protein Tracker group and, for WWF, a food group, a structure (single product or composite dish), an origin and a subcategory. If you have your own classification, it serves as a comparison, never as the answer.
We use three sources, in this order:
1. Our reference database. A product already classified during a previous project inherits its classification through its EAN code.
2. Neighbouring products in your departments. When at least three already classified products in the same segment all share the same classification, unknown products in that segment inherit it. Otherwise, we move up to the subfamily, then the family, then the department. The reliability of each level is measured by removing each known product in turn. A product marked as a plant-based alternative is never classified this way.
3. A language model, for everything else. Instructions are versioned and do not change throughout the measurement. The model sees only product descriptors: till label, full name, department, brand, ingredients and weight. It never sees your volumes, prices or margins. Every response is checked field by field, and a response outside the allowed categories is requested again, never corrected by hand. A trial batch of 25 products precedes each full run.
Methodological rules are applied by code, not by the model. For example, a composite dish has no food group, and WWF's factor of 10 applies only to cheese. Targeted correction passes follow, each measured before and after. They address contradictions between fields, missing subcategories, animal species or a classification contradicted by the composition.
What you receive. The list of disagreements between your classification and ours, sorted by protein mass, for review.
Every product receives a protein content per 100 g, along with the source of that value. We look for them in this order:
1. The value you declare, after checking. Energy must be consistent with composition (4 kcal per gram of protein and carbohydrate, 9 kcal per gram of fat), the ratio between kJ and kcal must be correct, content cannot exceed 100 g, and values expressed per serving are flagged.
2. The value established for the same EAN code in our reference database.
3. Open Food Facts, by EAN code.
4. Name matching with Open Food Facts and the CIQUAL (France) and NEVO (Netherlands) composition tables, above a similarity threshold.
5. As a last resort, the median of the product family, with a minimum number of products.
The order and thresholds are calibrated for each project. We randomly hide some of your declared values, then measure each source against them, within European labelling tolerances.
The same safeguards apply to every source:
- a range of plausible values by department;
- geographical names are removed before matching: "Comté" is not "Franche-Comté";
- typographical traps are handled: the "œ" ligature, accents ("pâte" is not "pâté"), plurals, homonyms and brand names.
What is at stake. A content value only makes sense when attached to a state: dry, prepared, drained. Green lentils contain around 24 g of protein per 100 g when dry, and around 9 g when cooked. On a test basket of six everyday products, applying the cooked value to the weight of lentils sold dry reduces the ratio by more than eight points. That is why, for pulses, coffees and infusions, the reference state follows the predominant convention in your department.
For each product, we establish the plant and animal shares of its protein.
Origin and split are two different things. For WWF, a product's origin depends on the presence of an animal ingredient. The split, however, is measured. Crisps containing milk powder are of animal origin, even though their protein is almost entirely plant-based.
We establish the split in this order:
1. The ingredient list, read ingredient by ingredient.
2. The NEVO table, which gives the plant and animal protein in each food. The model chooses the matching food from three to five candidates proposed by similarity, and can abstain.
3. The CIQUAL group of the matched food.
4. The 50/50 convention, for the remaining composite dishes.
Plant-based alternatives are counted as entirely plant-based.
The two data levels. Each row carries its level, following the rule introduced by the Protein Tracker in its October 2025 update:
- Level A when the split of a composite dish is measured;
- Level B when it relies on the 50/50 convention.
What is at stake. The 50/50 convention is not neutral. On a meat-based dish whose protein is actually 30% plant-based, such as a beef lasagne, it adds almost two ratio points to our test basket without a single product changing. That is why we aim to measure as many composite dishes as possible at Level A.
The ratio weights each product by its sales. Volumes are therefore essential for the final result, but they do not need to leave your company.
If you send us your volumes, we check:
- the unit: consumer sales units, not cases or pallets;
- the consistency of net weights, duplicates and negative volumes.
Mass sold is then volume multiplied by the assessed net weight.
If you prefer to keep them, your workbook arrives ready to receive them: you enter them yourself in a single column, and everything recalculates. If you have sales ranks, we can produce an interim estimate, declared as an assumption.
In all cases:
- anything volumes do not cover, such as service counters, is declared and quantified in a variant, never ignored;
- every unanswered question receives a written working assumption, included in the scope statement.
For each row, we calculate mass sold, total protein, plant protein and animal protein. Then:
- for the Protein Tracker: the plant share of protein across all food products, broken down by group;
- for WWF: tonnes by food group, separating single products and composite dishes, dairy products in milk equivalents, the plant and animal split of groups 1 and 2, and composite dishes by category (meat-based, fish-based, vegetarian, vegan).
Several "plant shares" coexist and are not comparable: the protein share under the Protein Tracker, the protein share within the WWF scope and the share by tonnage under WWF. Each is named wherever it is cited.
A check only counts if we have seen it fail at least once, on a constructed case if necessary. A check that looks at nothing always passes.
Our checks cover four levels:
- Equalities. Every total equals the sum of its rows. Plant and animal protein add up, row by row, to total protein. Every table covers all values in the column it breaks down.
- Internal constraints. Energy balance of declared values, plausible and capped contents, consistency between formats of the same product, conservation of mass from one step to the next.
- Methodological compliance. No food group for a composite dish, subcategories only where they exist, WWF exclusions applied, factor of 10 reserved for cheese.
- The workbook.
- Every formula is independently recalculated.
- Every sheet is evaluated in a spreadsheet application.
- Every column heading is compared with what its formula actually calculates.
Finally, we read rows of the deliverable from left to right, as you would read them. A final audit is delivered in a separate file.
Accuracy is measured through a human review of your catalogue:
- We randomly select 200 rows of the deliverable and freeze them before review.
- They are reviewed manually, field by field.
- We calculate a rate per field (single or composite product, food group, subcategory, Protein Tracker group). Two fields that depend on each other are never averaged together.
- We publish no rate that does not describe the delivered catalogue.
The model's instructions are themselves tested before each project, on product sets held aside and never used to tune them.
We present the results in a meeting before sending the files. This is the time to explain the conventions used, read the figures together and decide what comes next.
You then receive:
- a line-by-line file: classifications, contents, plant and animal split, volumes and the source of every value;
- an eight-sheet Excel workbook, built entirely with formulas, with a single column to fill in: volumes;
- the scope statement in the format requested by WWF: covered scope, approach, data used, volume assumptions;
- the share of your data at Level A and Level B;
- the conventions used and pending decisions, each reversible;
- open questions, written for your teams.
The entire calculation can be rerun from start to finish using the files received. Nothing in the delivered files, including file names, mentions another retailer or allows its figures to be traced.
What we learn about an EAN code (its classification, protein content and plant and animal split) enriches our reference database. Any mention of your retailer is replaced with "Altera reference database". Each new project therefore gains in speed and consistency.
Your volumes, sales ranks and department hierarchy never enter it: they are your data.
Every error encountered during a project becomes a written rule for the next one.
No. The language model sees only product descriptors, and your data is not used to train any model.
No. No figures, no recognisable examples and no aggregates built from fewer than two retailers leave a project.
You do not have to choose to get started: we calculate both, separately. The choice matters when setting a target and communicating, as we explain in Why you should calculate your protein ratio before setting a public target.
The ratio calculation is free for retailers.
A reliable protein ratio is not a formula, but a chain of decisions: which products to count, what content to assign them, how to split their protein, which volumes to apply. Our method makes each of these decisions visible, sourced and verifiable, so the figure can be defended both internally and externally.
Discover the tool · Contact us
Green Protein Alliance and ProVeg Netherlands, The Protein Tracker: National Supermarket Protein Split 2025, March 2026. https://eiweet.nl/wp-content/uploads/2026/03/2026_March_The-Protein-Tracker-Dutch-national-retail-protein-split-2025-Green-Protein-Alliance-ProVeg-Netherlands-1.pdf
WWF, Achieving a Planet-Based Diet: a methodology for retailers to track progress toward healthy, sustainable diets, 2024. https://wwfint.awsassets.panda.org/downloads/wwf-planet-based-diets-retailer-methodology.pdf
Regulation (EU) No 1169/2011, Annex XIV (energy conversion factors). https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32011R1169
Anses, Ciqual food composition table. https://ciqual.anses.fr/
RIVM, NEVO Dutch food composition database. https://www.rivm.nl/en/dutch-food-composition-database
Open Food Facts. https://world.openfoodfacts.org/
Read also
Methodology
For food retailers, the protein transition is moving from ambition to implementation. Supermarkets are starting to set targets for plant-based sales, Scope 3 emissions, healthier diets, and lower-impact food baskets. The harder question…
ReadMethodology
For supermarkets, the protein transition is becoming a practical business question.
Read