bidlint v0.6.0
bidlint v0.6.0
Released: 2026-08-20
v0.6.0 adds deterministic XLSX vendor-input support to the existing technical-compliance engine. Explicit spreadsheet offer tables can now enter the same VendorFact model used by PDF and IFC evidence without adding a spreadsheet runtime dependency or weakening the evidence-first boundary.
Highlights
XLSX vendor inputs
A formula-free vendor offer workbook can now be compared directly with a specification:
bidlint compare specification.pdf supplier-offer.xlsxThe selected worksheet must expose one explicit parameter column and one explicit offered-value column. Unit and section columns are optional.
For workbooks with more than one visible worksheet, select the evidence sheet explicitly:
bidlint compare specification.pdf supplier-offer.xlsx \
--xlsx-sheet "Technical Offer"The same XLSX adapter is available through extract and rank.
bidlint extract supplier-offer.xlsx --kind vendor \
--xlsx-sheet "Technical Offer"Mixed vendor ranking can combine supported PDF, XLSX and explicitly scoped IFC inputs:
bidlint rank specification.pdf vendor-a.pdf vendor-b.xlsx vendor-c.ifc \
--xlsx-sheet "Technical Offer" \
--ifc-guid 1AbCdEfGhIjKlMnOpQrStuEvidence provenance
Every accepted spreadsheet row becomes a normal VendorFact and preserves:
- workbook filename
- worksheet row number
- selected worksheet name
- optional row section/category/system context
A source section can therefore identify evidence such as:
XLSX:Technical Offer/Electrical
After extraction, the existing terminology matcher, engineering-unit conversion and deterministic compliance evaluator remain authoritative.
Spreadsheet safety boundary
The workbook is treated as evidence, not executable logic.
v0.6.0 deliberately rejects structures that would require calculation, hidden state or positional guessing:
- formulas
- VBA/macros
- external workbook relationships
- hidden evidence worksheets
- merged cells in the selected worksheet
- multiple visible worksheets without explicit
--xlsx-sheetselection - duplicate or ambiguous parameter/offered headers
- incomplete evidence rows containing only a parameter or only an offered value
- conflicting units between the offered cell and an explicit unit column
Boolean cells remain qualitative TRUE / FALSE evidence rather than being converted into numeric 1 / 0 compliance values.
The parser does not recalculate workbooks, follow links, unhide worksheets or reconstruct merged spreadsheet layouts.
Dependency model
XLSX input is parsed directly from OOXML using the Python standard library.
The standard installation remains:
pip install bidlintNo Excel, LibreOffice, openpyxl or other spreadsheet runtime is required for XLSX input or existing XLSX technical-bid output.
Optional integrations remain separate:
pip install 'bidlint[ifc]'
pip install 'bidlint[mcp]'Existing deterministic core remains authoritative
Specification PDF ──> Requirement ───────────────────────────────┐
│
Vendor PDF ─────────> VendorFact ────────────────────────────────┤
Vendor XLSX ────────> explicit OOXML adapter ─────> VendorFact ─┤
Selected IFC ───────> property adapter ───────────> VendorFact ─┤
▼
terminology matcher
│
▼
unit-aware evaluator
│
▼
PASS / DEVIATION / MISSING / REVIEW
XLSX support adds a new evidence adapter, not a new decision engine.
Validation
The stable release is covered by GitHub Actions on Python 3.11, 3.12 and 3.13, including regression coverage for:
- explicit header discovery
- visible worksheet selection
- row and section provenance
- numeric and qualitative values
- boolean preservation
- explicit engineering units
- formula rejection
- macro and external-link rejection
- merged-cell rejection
- ambiguous worksheet/header rejection
- CLI
extract,compareandrankdispatch - coexistence with existing PDF and IFC workflows
Deliberate limits
This release does not:
- infer spreadsheet formulas
- execute spreadsheet code
- follow external workbook links
- guess hidden evidence
- reconstruct merged worksheets
- choose among multiple visible evidence sheets without an explicit selection
- replace the existing deterministic matcher or evaluator
- add commercial or price scoring to bidlint
v0.6.0 keeps the project rule unchanged: evidence before confidence.