Skip to content

bidlint v0.5.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 04:55
cfe2d24

bidlint v0.5.0

Released: 2026-08-20

v0.5.0 completes the engineering-ecosystem milestone around the deterministic compliance core. It adds explicitly scoped IFC vendor-property inputs, a safe technical-compliance hand-off to supplier-scorecard, and native .xlsx technical bid tabulation.

Highlights

IFC property inputs

Vendor evidence can now come from a local IFC file as well as a PDF.

IFC support is optional:

pip install -e '.[ifc]'

Select one vendor element explicitly by GlobalId:

bidlint compare specification.pdf equipment.ifc \
  --ifc-guid 1AbCdEfGhIjKlMnOpQrStu

Or use an IFC class when the class resolves to exactly one element:

bidlint extract equipment.ifc --kind vendor \
  --ifc-class IfcPump \
  --ifc-pset Pset_PumpCommon

Selected scalar property-set values become ordinary VendorFact records and then flow through the existing terminology matcher, unit conversion and deterministic evaluator.

Safety rules include:

  • IFC scope is mandatory
  • multi-element class selections are rejected instead of mixed
  • complex/list values are skipped
  • geometry is not evaluated
  • scalar numeric primitives remain unitless unless the source value explicitly includes a unit
  • provenance is preserved as IfcClass:GlobalId/Pset

See docs/IFC.md.

supplier-scorecard technical-compliance contract

A single-vendor comparison can emit a versioned JSON hand-off for the companion supplier-scorecard project:

bidlint compare specification.pdf vendor-a.pdf \
  --supplier-name "Supplier A" \
  --scorecard-output supplier-a-technical.json

When every finding is deterministically resolved as PASS, DEVIATION or MISSING, the fragment includes bidlint's existing 0–100 compliance score as technical_compliance.

If any finding remains REVIEW, the integration deliberately emits:

{
  "technical_compliance": null,
  "technical_compliance_status": "REVIEW_REQUIRED"
}

This prevents an incomplete technical review from becoming a misleading procurement ranking input. The detailed bidlint report remains the authoritative technical audit.

See docs/SUPPLIER_SCORECARD.md.

Excel technical bid tabulation

Multi-vendor ranking now supports native .xlsx output:

bidlint rank specification.pdf vendor-a.pdf vendor-b.pdf \
  --output technical-tabulation.xlsx

The workbook contains:

  • Ranking — vendor order, compliance scores and status counts
  • Matrix — requirement-by-vendor review matrix with status-specific fills
  • Audit — long-form evidence, confidence, source page/section and deterministic reason

The workbook uses frozen panes, autofilters, wrapped text and fixed readable widths. It contains no formulas, macros or external links.

The OOXML package is generated with the Python standard library, so the base package gains no spreadsheet runtime dependency. Fixed ZIP timestamps also make identical report data and bidlint version produce byte-identical workbook output.

See docs/WORKBOOK_EXPORT.md.

Existing deterministic core remains authoritative

v0.5.0 does not create new decision engines for IFC, procurement integration or spreadsheets.

PDF / selected IFC property evidence
              │
              ▼
      Requirement / VendorFact
              │
              ▼
       terminology matcher
              │
              ▼
        unit-aware evaluator
              │
              ▼
PASS / DEVIATION / MISSING / REVIEW
              │
      ┌───────┼───────────┐
      ▼       ▼           ▼
 JSON/HTML  XLSX      supplier-scorecard

The ecosystem adapters consume deterministic results; they do not override them.

Dependency model

The standard installation remains lightweight:

pip install bidlint

Optional integrations remain separate:

pip install 'bidlint[mcp]'
pip install 'bidlint[ifc]'

XLSX export requires no additional package.

Validation

The release is covered by the existing Python 3.11, 3.12 and 3.13 CI matrix plus regression tests for:

  • IFC scalar extraction, ambiguity rejection and provenance
  • PDF/IFC deterministic comparison
  • supplier-scorecard READY / REVIEW_REQUIRED / NO_REQUIREMENTS contracts
  • CLI integration output behavior
  • OOXML package structure and worksheet ordering
  • XLSX ranking, matrix and audit evidence
  • deterministic workbook bytes
  • rank --output .xlsx

Deliberate limits

This release does not:

  • perform IFC geometry compliance
  • guess which of multiple IFC elements represents a vendor offer
  • infer engineering units missing from IFC values
  • turn REVIEW into a procurement score
  • add commercial or price logic to bidlint
  • hide workbook calculations in formulas
  • change the existing deterministic ranking order

v0.5.0 completes the published roadmap while preserving the core rule: evidence before confidence.