Customer and tender BOQs arrived as spreadsheets with hundreds of free-text luminaire lines. We built a system that extracts each line's attributes, filters the catalogue with rules, has a model judge the shortlist against a written rubric, and sends anything uncertain to an estimator. A wrong match counts as a critical failure; “no match” is allowed.
Before
What we built
The product master is uploaded and each product's attributes are extracted against 70 lighting attributes with synonyms and a priority. Price changes are diffed and accepted or rejected by a person.
Users pick the sheet, header row and row range. Nested headers from merged cells and legacy XLS are handled, and every line keeps its original row number.
Only mandatory attributes are scored: equal, contained, or numerically within ±5%. Candidates need 80% to pass, and every attribute is recorded as matched, unmatched or avoided, with a reason.
The shortlist is scored against a written rubric: category weights, per-attribute scores, hard-reject gates and coverage floors. Results land in Matched, Partially matched or Unmatched.
Estimators see BOQ and SKU attributes side by side as chips, pick from the top three or search the catalogue, and export the priced XLSX estimate. Overrides are marked as human choices.
Decisions
A cheap deterministic pass shrinks the shortlist before any model call, which cuts cost and makes every rejection explainable.
The rubric's guiding rule: an incorrect match is a critical failure; no match is an acceptable outcome.
We ran extraction and matching head to head across two model families and both thinking modes, then chose the faster, cheaper one that held up.
The hard part
Trust, line by line
Estimators won't sign an estimate they can't check. So every line keeps the input and output of every stage (extraction, rules, model, validation) with token usage, and the review screen shows exactly which attributes matched and which didn't.
Measuring it
The client tracks match rate per estimate at “Complete review”. We'll publish accuracy and turnaround once they sign off on the numbers.
Built with
Next: Quotes generated from the matched estimate, and the same engine applied to RFQs.
Tender and BOQ estimation: how we'd build it for youA one-hour call with a founder and an engineer. Bring a BOQ, a stack of POs, last month's invoices or a backlog, and leave knowing what would work, what wouldn't, and what it would take.
170+ projects · 65 companies · founders on every engagement