From takeoff to earned value.
The estimate lives in one spreadsheet, the schedule in Project, and by month three they disagree. In Grid, quantities, crew math, the bid, and earned value are one reactive model — change a drawing quantity and the bid, the contingency, and the CPI all move together.
Monday morning, as source.
# quantities from the drawings slab_m3 = CONCRETE_VOLUME(length_m, width_m, depth_m) crew_h = CREW_HOURS_REQUIRED(quantity, productivity) # the bid, with assumptions visible bid = BID_MARKUP_PRICE(cost, overhead_pct, profit_pct) reserve = CONTINGENCY_AMOUNT(base_cost, risk_pct) # earned value while the job runs cpi = CONSTRUCTION_CPI(earned_value, actual_cost) WHEN cpi < 0.9 THEN cost_alert = TRUE END
Forty construction functions cover estimating, quantities, production, and cost — and the same model can drive the resident scheduling engine and its Gantt surface.
Estimating, in the catalog
Concrete, masonry, asphalt, crew productivity, change-order impact — named functions instead of tribal formulas copied between bids.
The function catalog →A schedule that solves
Precedence, crews as resources, calendars, weighted tardiness — solved natively behind a Gantt surface, with honest solve statuses.
What it replaces →Risk you can defend
Distribution-typed inputs and seeded Monte Carlo turn the contingency line from a habit into an argument.
How risk works here →