Skip to main content
June 12, 2026 10 min read Cost Estimation

Streamlining Bill of Quantities (BoQ) Estimation: A Data-Driven Approach for Infrastructure Projects

Discover a structured data-driven approach to map design takeoff data directly to technical specification divisions and standard contract bills.

A Bill of Quantities (BoQ) is the foundation of any heavy infrastructure contract, detailing the items of work, quantities, unit descriptors, and rates. Traditionally, compiling a BoQ involves copying measurements from AutoCAD or spreadsheets and pasting them into the contract format. This manual copy-paste workflow is highly prone to errors, such as omitted items, wrong pay code alignments, or unit mismatches, which can lead to cost variations during construction.

A data-driven approach streamlines this process by using structured database tables to map design takeoff data directly to technical specification divisions. Below, we discuss standard BoQ structures and present SQL mapping queries.

1. Hierarchical Structure of Infrastructure Contracts

Standard public works contracts (e.g. ERA 2013 or FIDIC standards) organize the BoQ into Series or Divisions representing feature areas:

  • Series 1000: General (Mobilization, Insurance, Accommodations)
  • Series 2000: Drainage Structures (Culverts, Ditches, Headwalls)
  • Series 3000: Earthworks (Excavation, Fill, Subgrade Prep)
  • Series 4000: Sub-Base and Roadbase (Granular materials, Crushed stone)
  • Series 5000: Asphalt Pavement (Binder Course, Wearing Course)

2. Data Model for Automated Mapping

To automate BoQ generation, we map takeoff items using three structured tables:

Table NameFieldsPurpose
TakeoffDatastation, item_key, measured_value, unitStores raw material quantities from design outputs
PayItemCatalogpay_item_id, division, description, standard_unitThe catalog of official specification contract clauses
ItemMapperitem_key, pay_item_id, conversion_factorMaps design keys to pay items with adjustments

3. SQL Compilation of BoQ Costs

Using this schema, we write a SQL query to aggregates quantities, apply bulking/conversion factors, and compute sub-totals and summary totals:

SELECT 
    p.pay_item_id,
    p.division,
    p.description,
    p.standard_unit,
    SUM(t.measured_value * m.conversion_factor) AS total_quantity,
    -- Example unit rate (typically loaded from a rate table)
    COALESCE(r.unit_rate, 0.00) AS unit_rate,
    SUM(t.measured_value * m.conversion_factor) * COALESCE(r.unit_rate, 0.00) AS total_cost
FROM TakeoffData t
JOIN ItemMapper m ON t.item_key = m.item_key
JOIN PayItemCatalog p ON m.pay_item_id = p.pay_item_id
LEFT JOIN RateAnalyses r ON p.pay_item_id = r.pay_item_id
GROUP BY p.pay_item_id, p.division, p.description, p.standard_unit, r.unit_rate
ORDER BY p.division, p.pay_item_id;

This query automatically links design outputs directly to pay items, ensuring that the BoQ updates whenever design parameters change, reducing estimation errors.

Yonatan Abrham

Highway Design Engineer | BIM/Civil 3D Specialist | Aspiring Project Manager | Interested in AI & Technology

PhoneLinkedInFacebookInstagramTwitterYouTubeTikTok

© 2026 Highway Design Automation Suite. Built for Civil Engineers.

AdSense Disclosure: Third-party vendors, including Google, use cookies to serve ads based on user visits to this website. You may opt out of personalized advertising by visiting Google Ads Settings.