Baseline vs current vs actuals

A project has three views of the same numbers and a different group of people lives in each one. Collapsing all three into one running balance is how a sub gets to month nine before realizing the job is upside-down.

The three views

Baseline — what you committed to at contract execution.

  • Locked at NTP (Notice to Proceed). Does not change for any reason short of an executed CO.
  • This is what the proposal said the work would cost. It's what the contract was priced against.
  • Used for: variance reporting, performance scoring, lessons learned. Never used for "what should we do this month."

Current (forecast / EAC) — what you now think it will cost to finish.

  • Updates every reporting cycle. Reflects everything you've learned since baseline: actual productivity, real material prices, scope drift, schedule changes.
  • This is the number that drives staffing, procurement, and cash forecasting decisions today.
  • EAC = Estimate at Completion = actuals to date + remaining forecast.

Actuals — what you've actually spent.

  • Hard numbers from timecards, POs, invoices, sub bills.
  • No estimates, no accruals (or accruals separated). The receipts.
  • Updates daily as time and material flow in.

Why subs collapse them — and what breaks

The pre-STrOp default for most specialty contractors: one spreadsheet, one column per cost code, one number per cell. That cell is some mix of "what the contract said," "what we've spent," and "what the PM thinks is left." All three views are smashed into one running total.

What breaks when you do that:

  • You can't tell the difference between a productivity problem and a scope problem. Actuals are 110% of baseline. Is that because hours-per-unit are up (productivity) or because you're installing more units (scope)? The merged view hides the answer.
  • You can't update the forecast without losing the baseline. "Let me update what I think we'll spend" overwrites the original commitment, and now variance is meaningless.
  • You can't run lessons learned. Lessons learned require comparing baseline to final actuals. If baseline drifted with every CO and every reforecast, there's nothing to compare against.

How STrOp holds the three views

SurfaceViewWhat it shows
Estimate header total at NTPBaselineFrozen at award — the original priced scope
Contract valueBaseline + executed COsBaseline plus a separate clean record of every CO addition
Job cost dashboard "Budget" columnBaseline + executed COsSame as contract value, sliced by L/M/S/E/O
Job cost dashboard "Forecast" columnCurrentPM-editable EAC, with auto-update from productivity actuals where allowed
Job cost dashboard "Actuals" columnActualsLive sum of timecards, POs, invoices, sub bills through the period
Variance columnsComputedForecast – baseline (scope/forecast variance), Actuals – earned value (performance variance)

You can see the three views side-by-side, you can drill from a variance into the underlying rows, and you can lock baseline so a careless edit can't overwrite history.

What to look at when

WhenLook atWhy
DailyActuals vs budget on the cost codes you touched todayStay close to the work; catch overruns the day they happen
WeeklyForecast vs budgetUpdate the EAC; talk to the field about productivity
MonthlyAll three side-by-sidePay app, executive reporting, cash forecast
At closeoutFinal actuals vs baselineLessons learned — what was over, what was under, why

Common failure modes

  • "Updating baseline" mid-project. A CO updates the budget (baseline + COs), not the baseline. Overwriting baseline destroys the variance story.
  • Forecast equals actuals + remaining baseline. Easy default; usually wrong by midpoint. Update the forecast from actual productivity, not from what's left of the original number.
  • Treating change order budget as if it had baseline behind it. A CO adds to the budget but the baseline was the bid. When variance reporting, separate baseline performance from CO performance — they have different stories.
  • No baseline at all. Some subs never lock one. Then variance is undefined and every PM conversation is "we'll know at the end."

See also

This is how STrOp works

The data flows you read about here are how the platform threads bid, execution, billing, and closeout. Single pipeline. No re-keying.

Request beta access →

Last updated 2026-05-29.