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
| Surface | View | What it shows |
|---|---|---|
| Estimate header total at NTP | Baseline | Frozen at award — the original priced scope |
| Contract value | Baseline + executed COs | Baseline plus a separate clean record of every CO addition |
| Job cost dashboard "Budget" column | Baseline + executed COs | Same as contract value, sliced by L/M/S/E/O |
| Job cost dashboard "Forecast" column | Current | PM-editable EAC, with auto-update from productivity actuals where allowed |
| Job cost dashboard "Actuals" column | Actuals | Live sum of timecards, POs, invoices, sub bills through the period |
| Variance columns | Computed | Forecast – 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
| When | Look at | Why |
|---|---|---|
| Daily | Actuals vs budget on the cost codes you touched today | Stay close to the work; catch overruns the day they happen |
| Weekly | Forecast vs budget | Update the EAC; talk to the field about productivity |
| Monthly | All three side-by-side | Pay app, executive reporting, cash forecast |
| At closeout | Final actuals vs baseline | Lessons 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.