A coordinator approves a variance purchase order because the number in front of them is small and the trade is on site tomorrow. That is the right call on that order. It is made four thousand times a year and nobody sees the shape of it.
The budget said one thing, the purchase order said another, and the gap was signed off one line at a time by people who could not see the other three thousand nine hundred and ninety-nine lines.
The month-end variance report tells you the total and the cost code. It does not tell you whether the estimate was wrong, the field specified up, the buyer asked for it, or something got broken. Four different problems arrive as one number, so the meeting is about the number.
The model joins every variance order back to the budget line it broke, normalises it per unit of work so a larger plan does not read as a worse cost code, and splits the gap into the four causes. Two of the four are not purchasing's to answer.
The budget was wrong before the first order was cut. It repeats on every home built to that plan, which is why correcting it compounds.
A superintendent specified a better product to keep a trade moving. Reasonable each time, invisible in aggregate.
The buyer asked for it and, where the change order was raised properly, the buyer paid for it. A change-order question, not a leakage one.
Something was broken, wet or wrong and someone paid a trade to fix it. A rework problem wearing a purchase order.
The rest of this model — the data sets it runs on, the cause split, the working behind the reference figure and a sample output — goes out by email. Two fields, nothing else.