Methodology
Every figure traces to a public source. Every assumption is written down here, not hidden in the code. This is methodology version 0.1.0 — an earlier version of a score is never rewritten, only superseded by a new, versioned run.
The language model's role
The local language model (Qwen3.8-27B) never calculates a climate figure. It receives a product name and a list of candidate reference foods from CONCITO's database, and matches the product to whichever reference(s) fit best — including mass shares for composite products such as a lasagne. The actual kg CO2e figure is calculated afterwards by a fixed, tested formula.
Reference data
Climate footprint per kg comes from CONCITO's Big Climate Database, version 1.2, split across six lifecycle stages: agriculture, indirect land-use change (iLUC), processing, packaging, transport and retail.
The air-freight assumption
When the origin is unknown for a perishable item typically flown to Denmark (out-of-season berries, beans/asparagus from distant countries), we add an air-freight assumption to the transport stage. If a store instead states the item was shipped or trucked, the assumption is removed. This is deliberate: the more a store discloses, the better a product can score — silence is measured, not hidden. See the front page for a concrete, number-based example of how much air freight actually matters.
Score and grade
The climate score (0–100) is a logarithmic scale between 0.2 kg CO2e/kg (the best vegetables) and 60 kg CO2e/kg (beef territory). The A–E grades are provisional bands, recalibrated once the Danish state-controlled climate label for food publishes its own (expected 2026–27).
- A 70–100
- B 55–69
- C 40–54
- D 20–39
- E 0–19
A store index below 100 covers two very different things. Part of the distance is a real question of what the store sells — how heavy the range is, how much is organic, and so on — but another part is simply missing documentation: if we have not logged a source for the store having, say, a food-waste programme, that programme counts as 0 even if it exists. See the <a href="butikker/index.html">store pages for the dimension-by-dimension breakdown per store.
Data quality (Q1–Q5)
Independent of how large the footprint is, the Q grade shows how much we actually know: Q1 is a producer-published, verified product-specific measurement; Q3 is a category proxy from an LLM match with reasonable confidence; Q5 means no usable match — the product isn't scored, rather than scored wrong.
Store index and coverage
Stores are compared over a standard basket of product categories, not over how many items were scanned — a chain with 300 scored products and one with 40 are judged on how much of the SAME basket each has adequate data in, not the raw count. A category only counts once at least 3 products are scored in it; fewer are reported separately as "too little data" rather than counting as a confident zero.
No store ranking is published below 60% coverage, and a store gets a right-of-reply period before any comparison is published. No store has reached that threshold yet.
Data sources per store
REMA 1000's data comes from its own full webshop catalogue. The other stores have no equivalent catalogue online — their data instead comes from currently active promotions via the shared digital-flyer platform (Tjek A/S), which nearly every Danish chain uses. It isn't the full range, but it's the same kind of data across those stores, which makes them comparable to each other — just not necessarily to REMA 1000's full catalogue yet.
The "on promotion" share
Every store page shows what share of scored products were on promotion when we fetched the price. A store whose data comes exclusively from the flyer will naturally show close to 100% here — that's not a statement about the store's behaviour, it's about our data source. It matters for comparison though: a promotional item isn't necessarily a typical everyday item, so two stores with very different promotional shares (e.g. 95% vs 20%) are never combined directly into one index — the share is always shown next to the figure, never folded into it. A store marked "promotions only" should be read with that caveat.
Openness about data
This site is free to browse. Bulk access (an API, or exporting many products at once) is by request only, against a default quota. That's to prevent the whole dataset being copied and republished under another name, or harvested at scale for manipulation. The code behind it is not published, for the same reason.