An independent magazine about AI at work in construction. Every story starts on a real job site, with the people who used the technology and the results they will answer for.
An AI-Assisted Budget Went Out With Totals That Did Not Add Up | ConstructionMagazine.ai
An AI-Assisted Budget Went Out With Totals That Did Not Add Up
A value-engineering pass cut the division totals and left the line items alone. The desk that caught it now keeps the arithmetic in code and the prices in a cost book that a person approves.
Fire alarm on a client-facing budget summed to $19,600 across its line items. The printed division total was $18,620, exactly five percent lower. Fire sprinkler carried the same cut. Specialties was off by about 21 percent. Equipment was off too. The budget came from an estimating desk at one of the GCs we talked to, and the client had already seen it.
The cuts had been applied to the division totals during a value-engineering pass. Nobody went back to the line items underneath. The chatbot that helped build the VE list had also left broken reference formulas in the workbook, so a spreadsheet that looked finished carried errors in two layers: the numbers that were wrong, and the formulas that could no longer explain them.
The line items summed to one figure and the printed total showed another. AI-assisted illustration.
How a value-engineering pass breaks a workbook
A division total in an estimating workbook is a formula. It sums the extensions beneath it, and each extension multiplies a quantity by a unit rate. A value-engineering pass is supposed to change the inputs: a cheaper fixture, a smaller quantity, a scope the client agreed to drop. What happened here is the shortcut every estimator has seen at least once. Someone typed a target number over the division total to hit the client's figure, the formula became a constant, and the rows beneath it kept their old values. Fire alarm, fire sprinkler, specialties, and equipment each carried a cut with nothing under it to explain the cut.
The second layer of damage came from the tool that helped write the VE list. The chatbot had produced a list of proposed savings and pasted values into the workbook, and in doing so it had overwritten cells that other cells referenced. A spreadsheet with a broken reference does not fail loudly. It shows an error in one cell, the cells that depend on it go blank or stale, and a print-to-PDF hides all of it. The client received a clean summary page. The workbook behind it could no longer be reconciled by anyone who opened it.
The fix on the VE side is old practice. A VE log lists each proposed change with its own value, the line items it touches, and an accepted or rejected mark, and the estimate is rebuilt from the accepted items. The division totals then fall out of the arithmetic instead of being typed. That is slower on a Friday afternoon than typing a number, which is why the shortcut exists, and why the desk in this story now refuses to let a total be anything but a formula.
The failure is not carelessness. A finished, well-formatted estimate is the hardest document in the office to check. A reviewer facing three hundred tidy rows does not recompute them. They scan, they find the layout familiar, and they assume the tool that produced it did the arithmetic. Researchers call this automation bias, and it grows with the polish of the output. A model that writes a clean workbook has produced the one kind of document a tired estimator will not audit.
There is a simple test for whether a task belongs to a model at all: can the output be checked against its source in seconds? Filling a bid comparison table passes, because the total in the table should match the total on the quote it came from, and a person can look. A division total that no longer matches its own line items fails that test on sight, if anyone runs it. The desk in this story now runs it every time, in code.
Which numbers a model may invent, and which it may only move
An estimate holds three kinds of number, and they deserve three kinds of trust. A unit rate comes from the company's own history of what things cost. A line item comes from a supplier's quote or a takeoff. A total comes from arithmetic. A model has one legitimate job among the three: moving the middle kind. It is good at reading a twenty-line materials quote in an irregular layout and putting the figures in the right cells. It should never be the source of a rate, and it should never be the thing that adds the column.
Rates are where models do quiet damage. Asked to price cable tray or roofing without a cost book attached, a model has to supply a production rate from somewhere, and that somewhere is its general training, which for construction pricing means forums, wikis, and marketing pages. The number comes back confident and specific. The desk in this story met exactly that on a later review call, when its model produced a roofing cost that was wrong and did not sound wrong.
Totals are where models are unnecessary. Takeoff software and spreadsheets have built bills of quantities for decades without any of them, and they do it deterministically. So the desk's rule has two halves. The workbook is parsed in code. Extensions, section totals, markup, contingency, and the grand total are recomputed in code, and every discrepancy is reported with the cell it came from. The model's only job in that pass is to interpret a layout the parser does not recognize. The same check later caught a cost-per-square-foot figure on a competitor's budget that would not divide into any area on the sheet. The number had been carried forward from an older area.
The check itself is short. The parser reads every row of the workbook into a table: division, item, quantity, unit, rate, extension. Code multiplies quantity by rate for each row and compares the product with the extension the sheet printed. It sums extensions by division and compares each sum with the division total the sheet printed. It applies the markup and contingency percentages the sheet declares and compares the result with the grand total. Every mismatch comes back as a cell address and two numbers, the one on the page and the one the arithmetic gives. Three hundred rows take under a second. A person reads a list of exceptions, which is a task a person can do, instead of re-adding a workbook, which is a task nobody does.
The same pass runs the ratios that estimators once carried in their heads. Cost per square foot of building, cost per square foot by division, and cost per unit of the main quantity are computed from the areas and counts on the sheet and compared with the ranges in the cost book. A ratio that lands outside its range is not a mistake in itself. It is a question with a cell address attached, which is the form a question has to take to get answered on a ten-day tender.
Validation is an estimating discipline, not an AI feature
None of this is new to the profession. AACE International's recommended practice on cost estimate validation describes the same moves: check the estimate against benchmarks from comparable past work, check ratios and metrics between divisions, and look for line items that sit outside the pattern of the rest of the sheet. The practice was written for reviewers with calculators. What the desk in this story changed is who runs the checks and when. Code runs them on every save, and the estimator reads the exceptions before a client sees a page.
A reviewed price, step by step
1The model extracts the supplier quote's line items into the estimating spreadsheet
→
2Takeoff software or the spreadsheet builds the bill of quantities and the roll-ups, with no model involved
→
3Code recalculates every extension and total and reports each mismatch with its source cell
→
4A benchmark rate from the cost book, dollars per square foot, is divided against the built-up number as a sanity check
→
5The model may read the cost book; a person approves any change to it
One writer, one approval: how a cost book stays true
The second half is the cost book, and it is a governance rule as much as a database. Every unit price needs a source. An update supersedes the old row and keeps the history, so the book records what a job cost last quarter and what it cost the quarter before. The assistant can read the book without asking. It can propose a change. A person approves the change before it becomes company data. Firms that run this well give each library one named writer and set read access separately, which turns a habit into a permission.
A cost book earns its keep beyond lookups. Rolled up, it yields the benchmark rates that older estimators carry in their heads: what a square foot of this kind of building costs, what a cubic yard of that kind of concrete costs installed. Those top-down rates are the sanity check on a bottom-up estimate, and they are the check the stale-area budget failed. Matching a new scope against a library of past costs is also the oldest respectable shortcut in estimating. Parametric estimating had a name long before anyone attached a model to it. The model only makes the matching faster.
The reviewer's job does not end when the estimate is approved. The project manager who inherits it has to read the lines, not the totals, because money hides in structure as often as in arithmetic. A line bought because it was in the budget can be float that was never meant to be spent. Larger contractors describe the same control in the same words: a person between the model's number and anything that leaves the building.
The rules the desk now keeps
Every total is a formula. A typed number in a total cell fails the save.
A value-engineering change is a line-item change with its own row in the VE log, never an edit to a division total.
The model may extract figures from a quote into cells. It may not supply a rate and may not add a column.
Code recomputes extensions, division totals, markup, and the grand total on every save, and reports each mismatch with its cell address.
Every unit rate in the cost book carries a source and a date, and a person approves each change to it.
A model working from general training data will give a roofing number on request. It does not know last quarter's buy-out. That number lives in the cost book, with a source and a date beside it, and the arithmetic that turns it into a total runs in code that cannot be talked into a discount.