Skip to content

Validation

Pipeline validated against the TABULA reference values (ยฑ2% tolerance on q_h_nd) across 2,147 buildings in 20 European countries. Last run: November 2025.


Results by country

Country Buildings Pass rate
๐Ÿ‡ฆ๐Ÿ‡น Austria 165 100% โœ“
๐Ÿ‡ง๐Ÿ‡ช Belgium 99 100% โœ“
๐Ÿ‡ง๐Ÿ‡ฌ Bulgaria 78 100% โœ“
๐Ÿ‡จ๐Ÿ‡พ Cyprus 36 100% โœ“
๐Ÿ‡จ๐Ÿ‡ฟ Czech Republic 84 100% โœ“
๐Ÿ‡ฉ๐Ÿ‡ฐ Denmark 91 100% โœ“
๐Ÿ‡ซ๐Ÿ‡ท France 120 100% โœ“
๐Ÿ‡ฉ๐Ÿ‡ช Germany 232 100% โœ“
๐Ÿ‡ฌ๐Ÿ‡ท Greece 144 100% โœ“
๐Ÿ‡ญ๐Ÿ‡บ Hungary 45 100% โœ“
๐Ÿ‡ฎ๐Ÿ‡ช Ireland 118 100% โœ“
๐Ÿ‡ฎ๐Ÿ‡น Italy 106 100% โœ“
๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands 135 100% โœ“
๐Ÿ‡ณ๐Ÿ‡ด Norway 69 100% โœ“
๐Ÿ‡ต๐Ÿ‡ฑ Poland 78 100% โœ“
๐Ÿ‡ท๐Ÿ‡ธ Serbia 111 100% โœ“
๐Ÿ‡ธ๐Ÿ‡ฎ Slovenia 112 100% โœ“
๐Ÿ‡ธ๐Ÿ‡ช Sweden 171 100% โœ“
๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom 81 100% โœ“
๐Ÿ‡ช๐Ÿ‡ธ Spain 72 22.2% โš 

Overall: 97.4% (2,091 / 2,147 buildings passing)


Spain: known issue

56 of 72 buildings fail (77.8%). The failures are systematic (calculated values consistently deviate from the TABULA reference), which points to a Spain-specific parameter rather than a general pipeline bug.

Status: under investigation.

Investigation checklist

  • Compare climate zone parameters against Mediterranean-specific values
  • Check construction type and attic/cellar condition code handling for Spanish archetypes
  • Validate thermal bridge calculations against Spanish building standards
  • Field-by-field comparison of a failing building against the TABULA Excel workbook
  • Cross-reference with the Spanish national energy performance methodology (CTE DB-HE)

Validation methodology

  • Tolerance: ยฑ2% on q_h_nd (annual heating energy demand, kWh/(mยฒยทa))
  • Reference: TABULA Excel workbook (data/tabula-calculator-lite.xlsx)
  • Pipeline: 17-level cascading calculation: geometry, envelope, U-values, climate, solar gains, thermal bridges, heat transfer coefficients

Scope

This runs the pipeline directly against each database row's unmodified TABULA defaults โ€” it never goes through the /api/v1/calculate/{code} HTTP handler, so it doesn't exercise that endpoint's optional overrides (A_ref, surfaces, etc.). Those are additive: a request with no body reaches the exact same code path this validation covers.


Running validation

go build -buildvcs=false -o bin/ ./cmd/...
./bin/validate

Requires a populated database (./bin/build_db must have been run first) and a valid .env file.