Skip to content

Seed-EPD value resolution — ÖKOBAUDAT batch 1 (10 records)

Status: scratch resolution pass. Nothing here is committed as a seed EPD. No file under backend/app/data/seed_epds/ and no integrity test was written in this pass. This document records what the live ÖKOBAUDAT datasets actually say, so that the next session can write seed JSON against verified numbers rather than against the sourcing sub-chat's placeholders.

Resolved 2026-07-27 against the soda4LCA REST API (https://www.oekobaudat.de/OEKOBAU.DAT/resource/processes/{uuid}?format=json), which — unlike the datasetdetail/process.xhtml pages the sourcing sub-chat could not reach — is not robots-blocked.


1 · Headline: 6 of the 10 picks are unusable as they stand

The sourcing sub-chat recorded impact_method: "EN 15804+A2 → EF 3.0-based" for all ten records. That is wrong for six of them. Six picks are EN 15804+A1-generation datasets that contain no GWP-total indicator at all — they carry the older CML indicator Global warming potential (GWP), which is not the EN 15804+A2 GWP-total and cannot be substituted for it.

Verdict Records
Usable, EF 3.1, unit clean #02 rebar, #05 crushed rock
Usable, needs version bump to an EF 3.1 successor #04 sand
A1-only — no GWP-total exists #03 gravel, #06 glass, #07 steel profile, #08 bitumen, #09 PE film, #10 tile
EF 3.0, usable but flagged #01 cement (both candidates)

Only two of the ten picks can be seeded as-is.


2 · Resolution table

GWP-A1A3 is the value as declared, per the dataset's own declared unit. It is not normalised. The per-kg / per-m² column is a derived convenience figure, marked as derived — do not seed it without re-deriving it in code.

# Material Final UUID + version Declared unit (verbatim basis) GWP-A1A3 as declared Indicator string read A1/A2 EF method Flags
01 Cement — CEM I 52,5 R (sub-chat pick) 8c90eef7-01dd-4ce5-96a6-fb1ca480592a v00.01.001 (sub-chat said 00.01.000) 1 tmeanAmount = 1000.0, flow property Mass 817 kg CO₂-eq / tonne (derived: 0.817 /kg) Global Warming Potential total (GWP-total) | Globales Erwärmungspotenzial total (GWP-total) A2 EF 3.0 — method ds 6a37f984-a4b3-458a-a20a-64418c145fa2 1000× trap · not EF 3.1 → reconciliation note · version corrected
01b Cement — VDZ industry-average CEM I (RECOMMENDED) 87371640-546c-4d9c-84cc-c13b6be94146 v00.02.001 · EPD-VDZ-20220153-IAG1-DE 1 tmeanAmount = 1.0 but conversion factor to 1 kg = 0.001 665 kg CO₂-eq / tonne (derived: 0.665 /kg) Globales Erwärmungspotenzial total (GWP-total) | Global Warming Potential total (GWP-total) A2 EF 3.0 — method ds 6a37f984-… 1000× trap, and meanAmount alone reads as "1" · not EF 3.1 → reconciliation note
02 Steel reinforcement / rebar f6861618-5a92-4c3a-94ba-9f7329b29662 v20.26.070 (sub-chat said 20.24.070) 1 kgmeanAmount = 1.0, flow property Mass, gross density 7850 0.642238043961809 kg CO₂-eq / kg Climate change | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.1 ✅ — method ds a7ea142a-9749-11ed-a8fc-0242ac120002 v24.01.000 0.642 CONFIRMED · version corrected
03 Gravel — Kies 2/32 3ce61a4e-4d91-4b1d-b675-276be05b9225 v20.19.120 1 kgMass, gross density 1850 no GWP-total exists. CML GWP A1-A3 = 0.00285398232640141 Global warming potential (GWP) | Globales Erwärmungspotenzial (GWP) — method ds 77e416eb-… A1 only (DIN EN 15804) none (pre-EF, CML) unusable · expired 2022 · no undried EF 3.1 successor exists (see §4)
04 Sand 0/2 286b0072-1001-4e5f-baa2-282230755243 v20.26.070 (replaces the sub-chat's 8125026b-… v20.23.050) 1 kgMass 0.0027386873388177 kg CO₂-eq / kg Climate change | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.1 ✅ clean after version bump · sub-chat's pick was EF 3.0 and expired 2024 (its value: 0.0026195453178976)
05 Crushed rock — Splitt 2/15 f501dc99-706c-4b15-aaec-2cca2b409b41 v20.26.070 (sub-chat said 20.24.070) 1 kgMass 0.00827818122415727 kg CO₂-eq / kg Climate change | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.1 ✅ clean · version corrected
06 Flat glass dc96eace-0094-4440-9331-f72fb9430656 v00.04.027 (2017) 1 m² at 4 mm — grammage 10 kg/m², density 2500. Sub-chat recorded "1 kg" — wrong no GWP-total exists. CML GWP A1-A3 = 9.71 / m² Global warming potential (GWP) | | Potencial de calentamiento global (GWP) A1 only (EN 15804) none (pre-EF, CML) unusable · declared unit misrecorded · successor changes thickness (see §5)
06b Flat glass — successor e94dbfcc-56f2-4e55-8e0e-c2e8a2b576ae v00.00.016 (2024, valid to 2029) · M-EPD-FEG-002000 1 m² at 1 mm — layer thickness 0.001, grammage 2.5 kg/m² 3.06 kg CO₂-eq / m²-of-1 mm (derived: 1.224 /kg) Global Warming Potential - total (GWP-total) | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.0 — method ds 6a37f984-… v04.00.017 declared thickness changes 4 mm → 1 mm: a 4× trap · not EF 3.1 → reconciliation note
07 Steel profile / section 38051c22-fbd1-4b0e-944a-ae348b8c7695 v20.19.120 1 kgMass no GWP-total exists. CML GWP A1-A3 = 0.994443589117387 Global warming potential (GWP) | Globales Erwärmungspotenzial (GWP) — method ds 77e416eb-… v39.00.000 A1 only (DIN EN 15804) none (pre-EF, CML) unusable · expired 2022
07b Steel profile — successor d4ca0d80-54a4-44b6-9fda-2cbbf82ea0d4 v20.21.060 (2021) 1 kgMass 0.964395073330082 kg CO₂-eq / kg Global Warming Potential - total (GWP-total) | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.0 — method ds 6a37f984-… v21.01.000 ⚠ not EF 3.1 → reconciliation note · no plain ungalvanised EF 3.1 successor exists (see §6)
08 Bitumen 64da45fc-f415-4875-8a4e-7c23fe7a7aa9 v20.20.010 1 m² at 4 mm — grammage 5 kg/m² no GWP-total exists. CML GWP A1-A3 = 2.47490409514908 / m² Global warming potential (GWP) | Globales Erwärmungspotenzial (GWP) A1 only (DIN EN 15804) none (pre-EF, CML) unusable · ⛔ unit mismatch vs inventory → AR-49
08b Bitumen — successor 27ccffb8-02ec-466d-b925-f6db91d4ef71 v20.26.070 1 m² — grammage 5 kg/m² 3.33365915679722 kg CO₂-eq / m² Climate change | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.1 still the wrong product and the wrong unit — see §3. Do not seed.
09 PE film 49b4cbe9-ac63-4811-a1c7-dd7278db8ac0 v20.20.010 1 m² at 1.25 mm — grammage 1.2 kg/m² no GWP-total exists. CML GWP A1-A3 = 4.08909208200257 / m² Global warming potential (GWP) | Globales Erwärmungspotenzial (GWP) A1 only (DIN EN 15804) none (pre-EF, CML) unusable · expired 2022
09b PE film — successor 5f0bc680-a252-46d6-a47a-a4b5a05318bc v20.26.070PE foil, dimpled 1 m² — grammage 1.2 kg/m² 4.47123644782304 kg CO₂-eq / m² Climate change | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.1 ✅ unit matches inventory (139.6 m²) · ⚠ product is a dimpled drainage membrane, not plain sheet film — suitability check needed
10 Ceramic floor tile b4a0e610-e038-47d3-b86e-cef013cd7c83 v20.20.010 1 m² at 10 mm — grammage 20 kg/m² no GWP-total exists. CML GWP A1-A3 = 6.17968702054922 / m² Global warming potential (GWP) | Globales Erwärmungspotenzial (GWP) A1 only (DIN EN 15804) none (pre-EF, CML) unusable · expired 2022
10b Ceramic tile — successor 5618689c-57a8-4860-85d3-7403ad5ba201 v20.26.070 1 m² — grammage 20 kg/m² 19.5478463191128 kg CO₂-eq / m² (derived: 0.977 /kg) Climate change | Globales Erwärmungspotenzial - total (GWP-total) A2 EF 3.1 ✅ unit matches inventory (303.36 m²) · ⚠ 3.16× higher than the A1 dataset at identical grammage — see §7, bears on AR-05

3 · Bitumen — unit mismatch, no like-for-like dataset (→ AR-49)

The building inventory tracks bitumen as 376.476 kg of neat bitumen. ÖKOBAUDAT has no per-kg neat-bitumen dataset. I searched the full bitumen category (32 records). What exists is only:

Candidate Unit GWP-A1A3 Why it is not neat bitumen
Bitumenbahnen G 200 S4 (27ccffb8-…, EF 3.1) 1 m², grammage 5 kg/m² 3.334 / m² Composite membrane — bitumen + glass-fleece carrier + mineral surfacing
Bitumen emulsion (40 % bitumen, 60 % water) (88c0f648-…, EF 3.1) 1 kg 0.450 / kg 60 % water by mass — not neat bitumen
Plastic-modified bitumen thick coating (85c48e5f-…, EF 3.1) 1 kg 1.189 / kg Polymer-modified formulated coating, not neat binder

Dividing the membrane's 5 kg/m² grammage into 376.476 kg to synthesise an area is not valid — the grammage is the mass of the whole composite, not of its bitumen fraction.

No proxy has been selected. The decision is deferred to AR-49.

4 · Gravel — the undried dataset was discontinued

Kies 2/32 exists only in the A1 generation. From v20.23.050 onward ÖKOBAUDAT carries only Kies 2/32 (getrocknet)dried gravel (a7bad3b6-2123-483b-99b5-2ec481254be7 v20.26.070, EF 3.1, 1 kg, GWP-A1A3 = 0.0349836993382096).

That is 12.3× the A1 undried figure, because it includes thermal drying energy. For a Senegalese site using pit-run aggregate, dried gravel is the wrong process. Substituting it silently would inflate gravel A1-A3 by an order of magnitude. Left unresolved — this needs a sourcing decision, not a default.

5 · Flat glass — the declared thickness changes between generations

The sub-chat recorded the glass declared unit as 1 kg. It is not: both the pick and its successor are declared per m², and the reference thickness changes:

  • dc96eace-… (A1, 2017): 1 m² at 4 mm, grammage 10 kg/m²
  • e94dbfcc-… (A2/EF 3.0, 2024): 1 m² at 1 mm, grammage 2.5 kg/m²

Carrying 3.06 forward as though it were per-4 mm-m² understates glass A1-A3 by . Any seed must record the thickness alongside the value.

6 · Steel profile — no ungalvanised EF 3.1 successor

The lineage stops at d4ca0d80-… v20.21.060 (EF 3.0). The v20.26.070 generation replaced the generic profile with two galvanised, route-specific datasets — Stahlprofil verzinkt (Elektrolichtbogenroute) 42de525f-… and Stahlprofil verzinkt (Hochofenroute) 755a481d-…. Galvanising is an added coating process, so neither is a drop-in replacement. Recommendation: seed the EF 3.0 d4ca0d80-… and carry the EF-version reconciliation note.

7 · Ceramic tile — 3.16× jump at identical grammage

Both tile datasets declare 20 kg/m², so the jump from 6.180 (A1, CML) to 19.548 (EF 3.1, GWP-total) per m² is not a unit artifact. It is a genuine method-plus-data change. The EF 3.1 figure implies 0.977 kg CO₂-eq/kg, which sits in the normal published range for glazed stoneware and makes the A1 figure look like the outlier.

This bears directly on AR-05 ("Floor tiles A1–A3 = 5.09 kg CO₂/kg — 26.5× the published range; suspected kg CO₂/m² used as per-kg"). The 19.548 kg CO₂-eq/ resolved here is plausibly the shape of number that became 5.09 per kg in the workbook. Not resolved here, but AR-05 now has a concrete candidate to test against.


8 · Cement — recommendation

Use the VDZ industry-average CEM I (87371640-546c-4d9c-84cc-c13b6be94146 v00.02.001, EPD-VDZ-20220153-IAG1-DE), not CEM I 52,5 R.

CEM I 52,5 R VDZ CEM I (recommended)
Scope One strength class, one manufacturer (Heidelberg) German industry average, Verein Deutscher Zementwerke
GWP-A1A3 817 kg CO₂-eq/t (0.817 /kg) 665 kg CO₂-eq/t (0.665 /kg)
EN 15804 A2 A2
EF method EF 3.0 EF 3.0
Valid until 2027 2027

Keur Songho's inventory carries generic "Portland cement", not a declared strength class. 52,5 R is a high-early-strength, finer-ground, higher-clinker product and sits 23 % above the industry average — an unrepresentative upper bound for a generic cement line item. The ordering (52,5 R > average) is physically consistent and gives confidence both readings are correct.

Both are EF 3.0, not the project's EF 3.1. Whichever is seeded carries a reconciliation note. No EF 3.1 CEM I dataset was found in ÖKOBAUDAT in this pass.

The 1000× trap — and why meanAmount alone cannot be trusted

Both cement datasets are declared per tonne, and they encode it differently:

Dataset meanAmount conversion factor to 1 kg Declared unit
CEM I 52,5 R 1000.0 (flow property Mass) absent 1 t
VDZ CEM I 1.0 (flow property Gewicht) 0.001 1 t

Read meanAmount alone and the VDZ dataset looks like 1 kg, making 665 kg CO₂-eq/kg — a 1000× error straight into the A1-A3 total. Read the conversion factor alone and CEM I 52,5 R has nothing to read.

Neither field is sufficient on its own, and ÖKOBAUDAT populates them inconsistently. The ingestion rule must be: resolve the reference flow, read both meanAmount and the flow's conversion factor to 1 kg, and fail loudly when they disagree or when neither resolves to an unambiguous unit. This refines the instruction for this pass, which assumed the conversion factor is always present — it is present on only one of the eleven records resolved here.


9 · Method notes for the ingestion code

Three gotchas that will silently corrupt an automated ingest:

  1. The English indicator name changes between EF generations. EF 3.1 datasets label GWP-total as Climate change in English; only the German string says GWP-total. EF 3.0 datasets say Global Warming Potential - total (GWP-total). A matcher testing "GWP-total" in english_name finds nothing on every EF 3.1 dataset. Match bilingually, and exclude the sub-indicators (- fossil, - biogenic, - luluc).

  2. A1-generation datasets have no GWP-total to find. They carry the CML Global warming potential (GWP) (method ds 77e416eb-a363-4258-a04e-171d843a6460). An ingest that falls back to "the first indicator whose name contains GWP" will happily seed a CML number as an EN 15804+A2 one. The compliance declaration is the reliable discriminator:

Compliance string Reference version Method
DIN EN 15804 / EN 15804 A1 CML — no GWP-total
DIN EN 15804+A2 / EN 15804+A2 A2 EF 3.0
EN 15804+A2 (EF 3.1) A2 EF 3.1 ← project standard
  1. A UUID is not a lineage. ÖKOBAUDAT issues a new UUID per release for Sphera generic datasets; referenceToPrecedingDataSetVersion chains backwards only, and the /processes/{uuid}/versions endpoint returns nothing. Finding the current record means searching by name and taking the highest release (20.26.070 at the time of writing). Every version string the sourcing sub-chat supplied was stale or wrong.

The resolution script used for this pass is not committed — it is scratch tooling. The verified numbers above are the deliverable.


10 · What the next session should do

  1. Seed #02 rebar and #05 crushed rock — clean, EF 3.1, per kg.
  2. Seed #04 sand at the corrected UUID 286b0072-….
  3. Seed #01 cement as the VDZ average, declared unit 1 t, with the EF 3.0 note.
  4. Seed #09 PE film and #10 tile at their EF 3.1 successors, per m², recording grammage — after resolving the PE dimpled-vs-plain suitability question.
  5. Seed #06 glass and #07 steel profile at their EF 3.0 successors, with notes; glass must record the 1 mm reference thickness.
  6. Do not seed #08 bitumen — blocked on AR-49.
  7. Do not seed #03 gravel — no undried successor exists (§4).

Every seeded record needs its proxy_provenance temporal axis re-scored: the sourcing sub-chat scored several as "current 2024-I stock" on the strength of version strings that turned out to be wrong.