100% money-backBook a walkthrough
Budgeting for general contractors

The estimate you sold becomes the baseline.Every commitment is measured against it.

Construction budgeting for a general contractor starts when the approved estimate is frozen as the baseline, then tracks approved changes, the revised budget, committed subcontracts and purchase orders, and the buyout variance between them, cost code by cost code. Below: a buyout variance calculator for your cost codes, what each budget column means and does not mean, a buyout log template to download, and what controllers get wrong.

  • As-sold baseline frozen at handoff and never replaced by a later estimating edit
  • Original, approved changes, revised, committed and buyout variance per row, in one vocabulary of cost codes
  • Change events captured with cause and evidence, priced by RFQ, and kept separate from what the owner approved
The execution budget, three rows

Drywall was carried at 200,000 and awarded at 212,000. The 12,000 overrun shows as buyout variance before any approved change, with the commercial reason captured beside it. Doors are not yet bought, so their variance is disclosed as unavailable rather than counted as zero.

1 baseline
frozen at handoff
Rows, subtotal, markups, total, timestamp, version
5 columns
on every budget row
Original, approved, revised, committed, buyout variance
1 catalog
of cost codes, read from Procore
Grouped by division, age of last read shown
0
missing amounts counted as zero
Disclosed as unavailable, with a reason
  1. 01ScopeBid package read, scope register written by trade
  2. 02TakeoffQuantities off the drawings, each traced to its sheet
  3. 03EstimatePriced on your price book, into your own workbook
  4. 04Bid levelingSub bids compared on scope, not on the total
  5. 05SubsEligibility, invitations and awards on one record
  6. 06You are hereBudgetOriginal, changes, committed and buyout variance
  7. 07ScheduleDurations from quantities, lookaheads each week
  8. 08ProcurementPurchase orders from award, materials to receipt
  9. 09SubmittalsSubmittals from the spec, on a review clock
  10. 10ChangesRFIs tracked, change events priced with evidence
  11. 11Pay appsSchedules of values, pay apps and audited waivers
  12. 12CloseoutCloseout obligations and handover, gaps named
Live calculator

Buyout variance, cost code by cost code.

Enter the original budget, approved changes and the committed value for each cost code. The calculator writes the revised budget, the variance on bought lines and what is still to buy. No forecast and no percent complete, only the five columns the budget screen carries.

Cost codes

Original is the as-sold estimate at award. Approved changes are owner change orders after approval, negative allowed. Committed is the executed subcontract or purchase order, including approved sub changes. Leave committed blank for a line not yet bought.

CodeDescriptionOriginalApproved changesCommitted
Buyout variance on bought lines
+$5,8003 of 5 lines bought. Saving against $922,200 of revised budget on those lines.
CodeRevisedCommittedVariance
03 30 00Cast-in-place concrete$412,000$398,500+$13,500
05 12 00Structural steel$300,200$305,900-$5,700
09 29 00Gypsum board assemblies$210,000$212,000-$2,000
23 00 00HVAC$364,000not boughtnone yet
26 00 00Electrical$393,500not boughtnone yet
Total$1,679,700$916,400+$5,800
What this says, and what it does not

Original $1,662,000, approved changes +$17,700, revised $1,679,700. Still to buy: $757,500 on 2 lines, with no variance yet.

05 12 00, 09 29 00 bought above the revised budget. That is a buyout overrun on the day of award, not a forecast of the final cost.

Five columns of arithmetic, nothing more. Pending changes, spending and a forecast to complete are not on this screen, by design. Ruh freezes the as-sold estimate as the baseline and reads commitments through your Procore connection, so these columns fill themselves.

Opinion

What controllers get wrong about the budget.

The view of the Ruh estimating team, from budget baselines and buyout logs on general contractor jobs. An opinion, not a measured result.

  1. 01

    Buyout variance is read as a forecast.

    A saving at buyout is a saving on the day of award. Subcontractor change orders, backcharges and scope never bought all sit outside it. The variance says where the job stands, not where it ends.

  2. 02

    Pending changes leak into the revised budget.

    A change order the owner has not approved is a request, not budget. The revised column moves on approval, and the pending list is kept where everyone can see that it is pending.

  3. 03

    The original budget gets rebaselined.

    When the estimate was wrong, the temptation is to correct the original. Leave it. The gap between what was sold and what it costs is the most useful number the company has for the next bid.

  4. 04

    Committed stops at the subcontract value.

    The committed value moves with every approved subcontractor change order. A committed column that still shows the award value understates the job.

  5. 05

    Cost codes do not match the estimate.

    If the estimate was built on trades and the budget on a different code list, buyout cannot be compared line by line. The mapping is decided at handoff, once, and written down.

Reference

What each budget column means, and does not.

The five columns on the budget screen, where each number comes from, what moves it, and the question it cannot answer. The same columns the calculator above writes.

ColumnWhere the number comes fromWhat moves itWhat it cannot tell you
Original budgetThe approved estimate at award, frozen as the as-sold baseline by cost codeNothing after the baseline. Corrections are recorded as changes, not as editsWhether the estimate was right
Approved changesOwner change orders after approval, mapped to the cost codes they touchEach approved change order, positive or negativeWhat is still pending with the owner
Revised budgetOriginal plus approved changesArithmetic onlyAnything its two inputs do not
CommittedExecuted subcontracts and purchase orders, plus approved subcontractor change ordersEvery award and every approved subcontractor changeWhat has been invoiced or paid
Buyout varianceRevised minus committed, on bought linesEither side movingThe final cost. Unbought lines have no variance yet
Not on this screenPending changes, forecast to complete, spending and paymentsKept in the change log and in accountingThis screen is budget versus commitment, on purpose

Matches the September 2026 product handbook: the Budget screen shows original, approved changes, revised, committed and buyout variance. Payments and reconciliation stay in accounting.

Template

The buyout log, as an empty sheet.

One row per cost code with the five budget columns, a bought flag and a source column for each commitment. Five example rows show a saving, an overrun and two lines not yet bought, with the totals row that only counts bought lines.

  • Cost code and description in your own code list
  • Original budget, approved changes, revised budget, committed and buyout variance
  • A bought flag, so unbought lines stay out of the variance total
  • Commitment source: subcontract or purchase order number and date
CSV
budget-buyout-log-template.csv
CSV, opens in Excel and Sheets · 2 KB
Download the template

No email, no gate. If you want the register written for you from a real set, the walkthrough is at the bottom of the page.

Contractors already running Ruh
PCL ConstructionECC ExteriorsTaurus BuildersAlliance Construction SolutionsDondlinger ConstructionSpyder ConstructionPCL ConstructionECC ExteriorsTaurus BuildersAlliance Construction SolutionsDondlinger ConstructionSpyder Construction
Fits the tools you already run
ProcoreSage 300 CREBluebeamTrimble ViewpointQuickBooksMicrosoft Excel
How the budget stays honest

From the number you sold to the number you bought, row by row.

Three things have to hold for a budget conversation to be short. Everyone agrees what was sold, every commitment lands on a recognizable row, and a change to the money is a different fact from a change the owner approved.

The as-sold baseline, frozen at handoffAS-SOLD BASELINEFrozen rows and subtotalMarkup lines and totalTimestampEstimate version referenceA later estimating edit never replaces itCommitments move against itDrywall awarded at 212,000 vs 200,000 carriedApproved changes move against itFlooring +6,500 after the owner approved the change12,000 buyout overrun, visible before any change

The as-sold baseline is frozen, and stays frozen

The baseline captures the budget at handoff so execution can be compared with what the GC originally carried. It keeps the frozen rows, subtotal, markup lines, total, timestamp and estimate version. A change to an estimating input afterwards does not silently replace that history.

  • Frozen at handoff from the approved estimate, with the estimate version referenced
  • Commitments and approved changes move against the baseline; the baseline itself does not move
  • A 212,000 award against a 200,000 row is visible as a 12,000 buyout overrun before any approved budget change
  • The commercial reason is captured beside the variance: revised scope, market movement, an omitted accessory, a deliberate upgrade
  • A preconstruction job says plainly that its budget begins at handoff; an older job with no baseline is identified rather than shown as zero
Cost codes mirrored from your Procore catalog

One vocabulary of cost codes, mirrored from Procore

A cost code names where money belongs. The Cost codes page mirrors the company catalog from your Procore, grouped by division with the code and its description, and shows how old the last read is. Adding a code writes to Procore and re-reads the catalog, after your controller confirms no existing code can serve.

  • Estimating and execution share the same codes, so a budget row and a commitment mean the same thing
  • The catalog is read from Procore; the age of the read is shown, and an overdue read can be refreshed
  • Add cost code is a controlled write to Procore, not a local list that drifts
  • During a Procore outage you keep analyzing on the disclosed age and defer financial mapping until the read is current
  • Every commitment, change and variance lands on a coded row your controller recognizes
A change follows one chain, and each link is a different factChange eventcause and evidenceRFQ to the subprice, time impactPCOpriced, by tradeOwner packagePCCO to the ownerSub cost 12,500. Owner approval: not yet recorded.Two different facts, kept apart until the owner decides

A change is one chain, and each link is a different fact

A change event records potential scope, cost, revenue or time impact and where it came from. From there the chain runs through the subcontractor's RFQ, the potential change order and the owner change package, prepared through your Procore. The subcontractor's cost and the owner's approval are never the same number in the same cell.

  • Change events captured with source, cause, scope and evidence before any quote exists
  • RFQs created from the change event in Procore, then adopted for pricing review and follow-up
  • Potential change orders priced and attributed to a budget trade
  • Owner change packages created in Procore with the eligible PCOs, and the external rollup read back
  • Subcontractor cost, potential change and owner approval kept as separate recorded facts

Estimate frozen. Codes shared. Commitments measured.

Four steps, and the budget stays comparable to what was sold at each one. Nothing about the money happens in a place your controller cannot look at.

01

Freeze the as-sold baseline

At handoff the approved estimate becomes the baseline, with its version referenced. Confirm every major purchased scope has a recognizable row.

02

Map to your cost codes

Codes mirrored from your Procore catalog, grouped by division. Your controller approves any addition before it is written.

03

Commit against the baseline

Subcontracts and purchase orders prepared through Procore land on their rows. Buyout variance shows the moment an award differs from what was carried.

04

Carry changes as their own facts

Change event, RFQ, PCO, owner package. Approved amounts revise the budget; unapproved ones stay visibly pending.

One job. Everything the budget records about the money.

A budget rarely agrees with the estimate for long. Here is what gets recorded so the difference has a reason instead of an argument.

As-sold baseline

What gets recorded

Frozen rows, subtotal, markup lines, total, timestamp and estimate version at handoff. The comparison point for everything that follows, never overwritten by a later estimating change.

Cost codes

What gets recorded

The company catalog mirrored from Procore, grouped by division, with the age of the last read and controlled additions.

Commitments

What gets recorded

Draft subcontracts and purchase orders prepared in Procore from the buyout package, with external IDs and statuses visible.

Buyout variance

What gets recorded

Committed against original, per row, with the commercial reason captured outside the total. A row not yet bought shows its variance as unavailable, not as zero.

Change chain

What gets recorded

Change event, RFQ, PCO and owner package as separate records, so a subcontractor's cost is never mistaken for an owner's approval.

An estimator working at two monitors with construction drawings on screen and a hard hat on the desk

What the budget screen shows, and what stays in your ledger.

A connected screen does not make every system an accounting ledger. Ruh coordinates the selling budget, the buyout records and your Procore, and it is explicit about which numbers it shows and which stay with the systems that own them.

What the budget screen shows

  • Original, approved changes and revised, per coded row
  • Committed, from subcontracts and purchase orders
  • Buyout variance against the as-sold baseline
  • A project-specific link to open the same job in Procore

What stays with your systems

  • Spending, forecasts and projected completion, which are not on this screen
  • Payments, payroll and bank reconciliation, which stay in your accounting process
  • Invoice entry, which lives in Procore's workflow
  • Direct posting to QuickBooks or another ledger, which this page does not claim
Why the budget holds up

No variance you cannot explain.

The fear in budgeting is not the spreadsheet. It is a review meeting where the number moved and nobody can say whether the estimate changed, the buyout changed, or the owner approved something.

The sold number is the source

The as-sold baseline is frozen with its estimate version. Every later figure is compared to it, and none of them can quietly rewrite it.

One coded vocabulary

Cost codes are read from Procore, so estimating, buyout and execution talk about the same row.

We show the variance. Your team explains it

A buyout overrun appears the moment an award differs from what was carried. The reason is captured by a person, beside the number, not inside it.

Different facts stay different

A subcontractor's changed cost, a potential change order and an owner's approval are three records. The budget revises only on the third.

Our estimators spent more time retyping quantities than thinking about scope. Ruh reads our drawings like a senior estimator and hands back a priced estimate we want to review, not rebuild.
Director of Preconstruction, ADF Group
Director of Preconstruction
ADF Group
Bid turnaround cut ~50%

What is on the screen today, and what is not

The execution Budget page compares original, approved changes, revised, committed and buyout variance. Spending, forecasts and projected completion figures are not on that page, and the invoice and amendment entry forms were removed from it. This page describes the screen as it is, not as a roadmap.

Cost codes, commitments, schedules of values, RFQs and owner change packages work through your Procore connection, which needs credentials, project mapping and permissions configured. Payments, payroll and reconciliation stay in your accounting system.

100%

Try Ruh on a real bid. 100% money-back guarantee if you are not satisfied.*

*Scoped delivery, terms apply. Read the guarantee terms

Start with one package

Questions general contractors ask.

What does the budget screen actually show?+

Per coded row: original, approved changes, revised, committed and buyout variance, compared against the as-sold baseline frozen at handoff, with a link to open the job in Procore. Spending, forecasts and projected completion are not on this screen; they stay with the systems that own them.

What is the as-sold baseline, and can it change?+

It is the approved estimate frozen at handoff: rows, subtotal, markup lines, total, timestamp and the estimate version. Later commitments and approved changes move against it. A later change to an estimating input does not replace it, so execution is always compared with what was actually sold.

Where do cost codes come from?+

From your company catalog in Procore, mirrored and grouped by division with each code and description. The page shows how old the last read is and can refresh. Adding a code writes to Procore and re-reads the catalog, and is done only after your controller confirms an existing code cannot serve.

How does a buyout overrun show up?+

The moment a subcontract or purchase order is committed above the row it lands on, the variance appears against the baseline, before any approved budget change. The commercial reason, such as revised scope, market movement or a deliberate upgrade, is captured beside the number rather than folded into it.

How are change orders handled?+

A change event is captured with its cause, scope, evidence and origin. An RFQ obtains the subcontractor's price and time impact, a potential change order attributes the priced change to a trade, and an owner change package assembles the eligible PCOs, all prepared through Procore. The budget revises on owner approval, and the subcontractor's cost stays a separate recorded fact.

Does it forecast cost to complete or post to our accounting system?+

The current budget screen does not show forecasts or projected completion, and Ruh does not post payments, payroll or reconciliation to your ledger. A direct QuickBooks posting workflow is not something this page claims. Your accounting process keeps those responsibilities.

What happens on a job with no baseline?+

A job still in preconstruction says plainly that its execution budget begins at handoff. An older job with no baseline is identified explicitly, with its commitments, change events and invoices shown without a row to land on, so it is never read as a zero-dollar job.

Bring one awarded job and its estimate.

A 30 minute walkthrough on a real job. Bring the approved estimate, the commitments so far and your Procore cost codes, and we show the baseline, the variance and the change chain live. Your controller decides whether the numbers tie out.

No card to start100% money-back guarantee*

See your own budget against what you sold

The estimate workbook and a commitment list are enough to start.

Backed by a 100% money-back guarantee*