Where the job stands — read the budget and the business report

I stopped guessing. The question every owner asks on the drive home is whether the job is making money, and the honest answer used to live in a spreadsheet somebody updated two weeks ago. In STrOp the job's budget reads from the same rows the pay app and the certified payroll read from: the estimate, the approved timecards, the POs and receipts. There is nothing to update. Here's where I look instead.

Read the job's budget

  1. Open the job → Budget. The header says whether the baseline is locked and since when. Lock baseline stamps the estimate at NTP so the promise stops moving; it's an award-gated control, and unlocking it is deliberate, not casual.
  2. The summary cards across the top: Current Cost Budget (with the baseline and the executed-CO delta underneath it), Total Actual, then actuals split into Actual Labor, Actual Material, Actual Subs, and Committed (POs).
  3. The table is one row per Cost Code, with Budget vs Actual, Baseline, Current, Committed, Actual, and Variance. Baseline is the estimate's lines by cost code and cost type. Current is baseline plus the cost lines of every executed change order — the PCO's cost by code, not what you sold it for. A draft CO doesn't count; a deductive one subtracts. Labor actual is approved hours at the loaded rate. Material actual is what was received against the POs plus stock issued to the job. Nothing typed in.
  4. Variance is against Current. So is the bar, the health dot, and the per-type bars — the baseline column stays so you can see how far the job has drifted from the bid. Committed is the value on issued POs; the part not yet received shows beside it as open. A row can read under on actuals and over once open POs land, so read both.
  5. Export CSV if the number needs to leave the building. The columns match the table, per cost type.

What the tab doesn't do: it doesn't add a CO's cost until the CO is executed, and it only sees cost the PCO lines carry. A CO executed straight from an amount with no PCO behind it moves the contract and the SOV but not the budget. Put the lines on the PCO and the three views stay honest.

Read the business report

  1. Reports in the sidebar is the business, not one job. Pick Daily, Weekly, or Monthly; the arrows step the period back and forward.
  2. Three sections, every project grouped inside each: Shipped (completions recorded this period), In Progress (the active work queue right now), and Slipped (sitting past their dates). Each row links to the record it came from, and shows whose plate it's on.
  3. A slipped item can become a task from the row: assign it to the person, on the project, with the source linked. The report is where the week's follow-ups start.
  4. CSV or PDF at the top of the period. Same numbers the pay app came from, same numbers the CPR came from. One set of books.

Common mistakes

  • Reading Actual without Committed. The PO you cut Thursday is money spent that hasn't landed. Budget minus actual minus open committed is the number that's actually left.
  • Unapproved hours. The budget reads approved timecards only. A PM who approves weekly is a week blind on labor, and labor is where drywall jobs go sideways. Those same hours are your productivity rates for the next bid.
  • Trusting Current on a CO with no lines behind it. The CO moved the contract, not the cost. If the PCO has no cost lines by code, Current equals Baseline and the variance lies in your favor until closeout.

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-09-07.