pyGAEB · Open source

The GAEB engine for the modern stack.

An MIT-licensed Python library that turns any GAEB DA XML file — every version, every exchange phase — into one clean, decimal-precise, typed model. Parse, validate, compare, convert, write back. It’s the record layer of DatumOS, and it’s yours to use.

2.0–3.3 DA XML versions, auto-detected
20+ exchange phases supported
900+ tests in the suite
MIT licensed, open source

Capabilities

One API for everything GAEB.

Real-world GAEB files are messy: mixed versions, broken encodings, vendor quirks. pyGAEB is built for the files you actually receive — tolerant by default, strict when you ask.

Every version, every phase

DA XML 2.0 through 3.3, auto-detected, plus legacy GAEB 90. Tendering (X81–X86), change orders (X88), invoices (X89), quantities (X31, REB), costing (X50–X52), ordering (X93–X97), framework agreements (X83Z/X84Z).

Decimal-precise by design

Every monetary and quantity value is a Python Decimal — never a float. Auditable, dispute-safe arithmetic that respects GAEB precision rules and VOB totals conventions.

Tolerant of real files

Encoding repair for mangled umlauts, recovery of malformed XML, graceful handling of spec-violating exports from common AVA tools. Warnings, not crashes.

Validation — within and across phases

Structural, numeric, and phase-specific checks — plus cross-phase validation: does the bid match the tender structurally? Does the invoice match the contract’s unit prices?

Diff with financial impact

Compare two bills of quantities: every change classified by significance, added and moved items detected, financial impact computed. Export the report to HTML or Excel.

Convert & write back

Round-trip any document: parse, modify, write to any DA XML version — or a different phase, e.g., turn a tender (X83) into a bid (X84). Conversion reports flag any data loss.

Build from scratch

A fluent builder for constructing bills of quantities programmatically — automatic numbering, phase rules, duplicate detection, automatic totals.

Export anywhere

Hierarchy-aware Excel workbooks, JSON trees, flat CSV — plus a CLI (pygaeb info / validate / convert / diff / export) for quick pipeline work.

Optional LLM enrichment

Classify items by trade and element type, map to IFC and DIN 276, extract typed specs (door widths, fire ratings) — with the LLM provider of your choice, cloud or fully local for air-gapped environments.

Why open source

The record layer shouldn’t be a black box.

Commercial construction data is contractual data. The layer that parses, validates, and totals it must be inspectable — by your developers, your auditors, and your industry. That’s why the DatumOS record layer is open source under MIT: read every line, extend it, embed it, or run it entirely offline. Our commercial products are built on the same engine we publish — and it’s built in the open, where issues from real-world GAEB files shape every release.

“Thanks for publishing this great library. It has saved me a lot of work and handles the GAEB format really well.”
pyGAEB user · GitHub issue #20 ↗

Python 3.9+ · typed API · async support · optional extras for CLI, Excel, and LLM classification.