Skip to content
Back to skills

Oce Validation Engine

ASecurity

Use the OpenConstructionERP validation engine: rule packs (BOQ quality, DIN 276, NRM, GAEB, MasterFormat, DPGF) that check estimates at import time and on demand. Use when verifying BOQ correctness or writing custom validation rules.

  • 299 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 5, 2026
ai-agentspythonapi

Works with

  • api

Security analysis

A100/100

Scanned September 5, 2026

npx -y skills add datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction --skill oce-validation-engine --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Oce Validation Engine?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Oce Validation Engine
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/datadrivenconstruction-oce-validation-engine/badge)](https://www.skillsdirectory.com/skills/datadrivenconstruction-oce-validation-engine)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: oce-validation-engine
description: "Use the OpenConstructionERP validation engine: rule packs (BOQ quality, DIN 276, NRM, GAEB, MasterFormat, DPGF) that check estimates at import time and on demand. Use when verifying BOQ correctness or writing custom validation rules."
---

# Validation Engine in OpenConstructionERP

## Philosophy

"Validation is a first-class citizen." Every BOQ import (Excel/CSV/GAEB X83/X84) runs the configured rule packs **at import time**, so violations surface immediately — not when a user is staring at row 452.

## Built-in rule packs

| Pack | Checks |
|---|---|
| `boq_quality` | required fields, unit consistency, duplicate codes, quantity sanity |
| DIN 276 | cost-group codes valid, hierarchy consistent |
| NRM | element codes, measurement rules |
| GAEB | X83/X84 structure, item references |
| MasterFormat / DPGF | classification codes |

Configure the default set via `OE_DEFAULT_VALIDATION_RULE_SETS` (default `["boq_quality"]`); run on demand with `POST /api/v1/boqs/{id}/validate/`.

## Writing custom rules

A rule is: **condition + severity + message**. Example patterns:

```python
# pseudo-rule: labour share sanity on a BOQ line
def rule_labour_share(line):
    labour = line.components_labour_cost
    total = line.rate
    if total > 0 and labour / total > 0.95:
        return {"severity": "warning",
                "message": f"Line {line.code}: labour is {labour/total:.0%} of rate"}
```

Reconciliation rules (the ones that actually catch data problems):

- `qty × unit_price = cost` per component line (tolerance ±0.01 or rounding-aware).
- `Σ components = total_resource_cost_per_position` (markup applied on top).
- classification non-empty at every tree level.
- no negative quantities outside documented deduction lines.

## Where validation plugs in

1. **Import gate** — `import_inline_validation` (env) runs packs during upload.
2. **On demand** — `/boqs/{id}/validate/` returns violations with severity.
3. **Continuous** — the BOQ quality score updates live as the editor changes lines.

## Best practices

1. Fail imports on `error`-severity, warn on `warning` — never block a user silently.
2. Keep rule messages actionable: name the row, the expected value, the found value.
3. Version rule packs with the standards they encode (DIN 276:2018-12, NRM2, …).
4. Use validation as the QA agent's deterministic backbone (see `ai-agent-orchestration`).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…