Build your controls spine
Project controls is a weekly operating system that forces decisions early, not a month-end report pack you read after the job has already drifted.
Think of a flight computer in a commercial aircraft. It doesn't just record the route after landing. It links speed, altitude, and fuel burn live so the pilot can correct course before the plane runs out of options. Your job needs the same live linkage between scope, schedule, cost, and field reality.
- Controls spine
- The minimum connected set of schedule, cost, change, and document controls that share the same job structure and run on a fixed cadence, with explicit decision triggers that force action before drift becomes damage.
- Single job structure
- One consistent breakdown that ties cost codes, CPM schedule activities, and the Schedule of Values (SOV) to the same work packages.
- Cadence
- The non-negotiable rhythm for updates and decisions: daily field capture, weekly operating review, monthly pay app and forecast sign-off.
- Decision trigger
- A clear threshold that forces a named person to act within a stated timeframe. Not a flag for discussion. An obligation to decide.
Disconnected controls turn small misses into unrecoverable misses. On a $14.2M tenant improvement, a two-week RFI backlog can create $86k of idle-crew time and re-sequencing cost. If the RFI log doesn't feed the CPM update, and the CPM update doesn't feed the cost-to-complete forecast, that $86k stays invisible until the AIA G702/G703 pay app reconciliation, when you've already burned the labor and lost the schedule float.
The seven controls, with decision workflows and triggers
You need seven controls, each with a named owner, a set cadence, a required artifact, and a decision trigger that removes ambiguity about when to act. The table below is your implementation template.
| Control | Owner | Cadence | Required artifact | Decision trigger | Escalation action |
|---|---|---|---|---|---|
| WBS and cost code map | Project engineer | Set at baseline. Revised only on approved scope change. | WBS dictionary mapping each cost code to a CPM activity ID and SOV line item | Any approved Change Order that adds scope without a matching cost code | PE creates new code within 24 hours; PM validates SOV alignment before next pay app |
| Baseline CPM schedule | Scheduler or PM | Weekly update every Thursday by 2 PM | P6 or equivalent logic-driven schedule with resource loading on critical and near-critical paths | Total float on any critical activity drops below 5 days, or finish date slips more than 3 days from baseline | PM convenes a recovery meeting within 48 hours with affected subs; recovery plan documented before next weekly update |
| Two-week lookahead | Superintendent | Issued Monday, reviewed Wednesday with trade foremen | One-page task list showing activity, crew size, prerequisite (RFI, submittal, preceding trade), and constraint status (ready / blocked) | More than 2 tasks show "blocked" status at Wednesday review | Super and PM resolve or re-sequence within 24 hours; blocked tasks noted on the weekly CPM update as actual constraints |
| RFI and submittal log | Project engineer | Triaged daily. Aged report reviewed at weekly OAC meeting. | Log with issue date, required-by date, linked CPM activity, and days open. Each RFI costs roughly $1,080 to process. | Any RFI open longer than 7 days on work within 4 weeks of its scheduled start | PE issues a formal follow-up to architect/engineer within 24 hours; PM notifies Owner's rep at day 10 and logs potential time impact |
| Change Order log | PM or contracts manager | Updated within 48 hours of any field directive, CCD, or RFI response that alters scope. Reviewed weekly. | Pending Change Order Register (PCOR) showing trigger source, estimated cost, schedule impact in days, and approval status | Unapproved pending changes exceed 3% of contract value (e.g., $450k on a $15M job) | PM issues formal COR to Owner with 5-day response deadline; work proceeds only on written direction or time-and-material basis per AIA A201 §7.3 |
| Progress measurement and SOV | PM and superintendent jointly | Field quantities captured weekly. Billing reconciled monthly. | Weekly earned-value snapshot: planned percent complete vs. actual installed quantity per SOV line, not subjective percent guesses | Variance between field-measured progress and billed progress exceeds 5% on any line item over $200k | PM and super reconcile before the next G702/G703 submission. If overbilled, accrue the liability immediately. If underbilled, add to next application. |
| Forecast (EAC and ETC) | PM with finance support | Active cost codes updated weekly. Full forecast signed off monthly. | Cost-to-complete report showing committed costs (POs + subcontracts), incurred-to-date, forecast adjustments, and margin movement from prior period | CPI (Cost Performance Index) drops below 0.95 on any cost code, or forecast margin erodes more than 2 points from bid | PM presents a written cost recovery plan to project director within one week. Plan must identify specific scope, procurement, or productivity actions, not just "monitor." |
The weekly operating review: where the spine connects
Controls only work if they meet in one room, on one agenda, every week. Here is the meeting structure that ties the seven controls together.
- Meeting: Weekly Project Operating Review. 60 minutes maximum. Every Thursday at 3 PM (after the CPM update is posted at 2 PM).
- Attendees: PM (chairs), superintendent, project engineer, scheduler (if separate from PM), and project accountant or cost controller.
- Standing agenda, in order:
- Schedule status (10 min): scheduler presents critical path movement, float consumption, and any triggered thresholds. Super confirms lookahead alignment.
- RFI/submittal aging (10 min): PE presents aged items. Any item past its trigger threshold gets an owner and a resolution date assigned live in the meeting.
- Change Order exposure (10 min): PM reviews the PCOR. Running total of unapproved changes is stated as a dollar value and a percentage of contract. If the 3% trigger is hit, the escalation letter is drafted before the meeting ends.
- Cost and forecast (15 min): PM walks through cost codes with CPI below 0.95 or margin erosion above 2 points. Each gets a one-line recovery action or an explicit decision to accept the variance.
- Progress vs. billing (10 min): PM and super reconcile any SOV line with a 5%+ variance. Overbilling accruals and underbilling claims are resolved before the monthly pay app.
- Action log (5 min): every decision and escalation is recorded with an owner and a due date. Open items from last week are closed or escalated.
This meeting produces one artifact: a one-page action log with owner, due date, and trigger source. That log is the audit trail that proves your controls system runs, not just exists.
On a $22M multifamily project, a PM running this exact cadence caught a mechanical subcontractor's $310k re-sequencing exposure at week three, not week eleven. The CPI on the HVAC cost code dropped to 0.93 after two weekly updates. The trigger fired at the Thursday review. The recovery plan, negotiated labor rate adjustments and a revised rough-in sequence, saved $185k against what the final cost would have been without intervention. That's the difference between a controls spine and a filing system. In Archdesk, each of these triggers can be configured as automatic alerts on the live project dashboard, so the CPI drop or the aged RFI hits the PM's screen the day it crosses the threshold, not whenever someone remembers to pull a report.
Gate the baseline schedule
A baseline CPM schedule that hasn't been stress-tested is just a picture. Lock it without scoring it, and every time impact analysis for the next 14 months starts from a flawed foundation. The DCMA 14-Point Assessment gives you a standardized way to score the schedule, flag exactly what's broken, and produce a punchlist of fixes before a single update is run.
The 14 metrics: what to measure and how
Each DCMA metric is a ratio or count pulled straight from your scheduling software's filter or report tool. You don't need a separate application. Export your activity list with predecessors, successors, constraint types, relationship types, lag values, total float, and original duration. Then run these checks one by one.
| # | Metric | Calculation | Pass threshold |
|---|---|---|---|
| 1 | Logic (missing predecessors) | Activities with zero predecessors ÷ total activities × 100 | ≤ 5% |
| 2 | Logic (missing successors) | Activities with zero successors ÷ total activities × 100 | ≤ 5% |
| 3 | Leads (negative lag) | Relationships with negative lag ÷ total relationships × 100 | 0% |
| 4 | Lags | Relationships with positive lag ÷ total relationships × 100 | ≤ 5% |
| 5 | Relationship types | Finish-to-Start relationships ÷ total relationships × 100 | ≥ 90% |
| 6 | Hard constraints | Activities with hard constraints ÷ total activities × 100 | ≤ 5% |
| 7 | High float | Activities with total float > 44 working days ÷ total activities × 100 | ≤ 5% |
| 8 | Negative float | Activities with negative total float ÷ total activities × 100 | 0% |
| 9 | High duration | Activities with original duration > 44 working days ÷ total activities × 100 | ≤ 5% |
| 10 | Invalid dates | Activities with actual dates beyond the data date, or forecast dates before it | 0 |
| 11 | Resources | Activities with no resource or cost assignment ÷ total activities × 100 | ≤ 5% |
| 12 | Missed tasks | Activities with forecast finish before data date but no actual finish | 0 |
| 13 | Critical path test | Longest path traces a real construction sequence from NTP to Substantial Completion | Pass/Fail |
| 14 | Critical path length index (CPLI) | (Critical path length + total float on longest path) ÷ contract duration | ≥ 0.95 and ≤ 1.0 |
Worked example: a $9.2M medical office build-out, 782 activities
A GC's scheduler submits the baseline for a 12-month interior build-out. The project manager exports the activity data and runs the 14 checks. Here's what comes back.
| Metric | Result | Pass? |
|---|---|---|
| 1. Missing predecessors | 12 of 782 = 1.5% | ✔ |
| 2. Missing successors | 31 of 782 = 4.0% | ✔ |
| 3. Leads | 7 relationships with negative lag = 0.6% | ✘ |
| 4. Lags | 94 of 1,410 relationships = 6.7% | ✘ |
| 5. Relationship types | FS = 1,243 of 1,410 = 88.2% | ✘ |
| 6. Hard constraints | 18 of 782 = 2.3% | ✔ |
| 7. High float | 61 of 782 = 7.8% | ✘ |
| 8. Negative float | 0 | ✔ |
| 9. High duration | 3 of 782 = 0.4% | ✔ |
| 10. Invalid dates | 0 | ✔ |
| 11. Resources | 214 of 782 = 27.4% | ✘ |
| 12. Missed tasks | 0 (clean baseline, no progress) | ✔ |
| 13. Critical path test | Path runs through MEP rough-in, drywall, ceilings, finishes to SC | ✔ |
| 14. CPLI | (198 + 6) ÷ 210 = 0.97 | ✔ |
Score: 9 of 14 pass. Five metrics fail. That's a conditional approval at best.
Building the fix list from the failures
Each failed metric turns into one or more specific, assignable fixes. For this schedule, the fix list looks like this:
- Leads (Metric 3): Identify the 7 negative-lag relationships. Replace each with proper logic. The SS tie with a negative 3-day lag between "frame elevator lobby walls" and "rough-in elevator controls" becomes an FS tie from framing to rough-in. Deadline: 2 working days.
- Lags (Metric 4): Filter the 94 lag relationships. Every lag over 0 days needs a written justification. Concrete cure times and fabrication lead times are valid. "Allow 5 days for coordination" is not. Target: reduce to under 70 relationships (under 5%). Deadline: 3 working days.
- Relationship types (Metric 5): Review the 167 non-FS ties. SS and FF relationships are acceptable for genuinely overlapping work like parallel MEP rough-in across wings. But 26 of these tie admin activities to field work with no technical reason. Re-tie them FS. Target: get FS above 90%. Deadline: 3 working days.
- High float (Metric 7): Filter the 61 activities showing more than 44 days of float. Most will trace back to missing successors or dangling logic on procurement lines. Tying the 31 open-ended activities to downstream work will collapse most of this float. Deadline: 2 working days.
- Resources (Metric 11): 214 activities have no cost or labor loading. Map each SOV line item to its activity group and assign budgeted labor hours or dollars. Without this, earned value is impossible. Deadline: 5 working days.
The project manager sends this list back to the scheduler with a 5-working-day deadline for resubmission. On resubmission, rerun all 14 metrics. If 13 of 14 pass, lock the baseline. Record the gate date, the passing scores, and the file hash in the schedule narrative. That locked file is your reference point for every monthly update, delay claim, and Change Order time impact for the rest of the project. In Archdesk, the SOV-to-activity mapping required by Metric 11 feeds directly into the CVR view. Budgeted values from the schedule populate planned value by work package, so when the first monthly update lands, cost-to-date and earned value are already aligned and the project manager sees margin movement per trade without a reconciliation spreadsheet.
drafting with 3 models in parallel
Map quantities to activities
Setting: a 38,600 sq ft tenant improvement for a law firm across floors 12 to 14 of a live downtown tower. Contract is $8.74M under AIA A201, 26-week CPM schedule, and you are building the baseline and the first Schedule of Values (AIA G702/G703). The takeoff is detailed, but the draft schedule has lump activities like “Interiors”, “MEP Rough-in”, and “Paint”.
Worked example: split takeoff quantities into activities you can measure, buy, and bill
-
Start with three split rules. Split an activity if it crosses (1) locations with different predecessors, (2) trades that report progress separately, or (3) materials with different procurement paths.
Failure mode: one “Paint” activity shows 14 days duration, but the work runs across about 10 weeks because you mobilize for primer, then finish coats, then touch-ups.
-
Pick three estimate lines that usually get lumped. Keep it real and pick trades that drive sequencing, submittals, and billing: drywall partitions, ACT ceilings, and paint.
Takeoff and budgets: partitions 98,420 sq ft at $932,700, ACT ceilings 41,600 sq ft at $266,240, paint 31,400 sq ft at $78,500.
-
Split by floor first, because predecessor logic differs. Floor 12 can release while Floor 14 is still in design review and RFI cycles. If you don’t split, Floor 12 progress hides Floor 14 constraint.
Estimate line Total qty How you split into activities Qty per activity Budget per activity Metal studs + 5/8 in gyp partitions 98,420 sq ft “Partitions, Floor 12”, “Partitions, Floor 13”, “Partitions, Floor 14” 31,940 / 33,110 / 33,370 sq ft $301,874 / $312,480 / $318,346 ACT ceilings 41,600 sq ft Split by floor and phase, “Grid install” then “Tile install” 13,540 / 13,860 / 14,200 sq ft (each phase) Grid: $43,328 / $44,352 / $45,440
Tile: $45,702 / $46,782 / $47,930Interior paint 31,400 sq ft Split by execution phase, “Primer”, “Finish coats”, “Touch-up and punch” 31,400 / 31,400 / 31,400 sq ft $18,300 / $47,600 / $12,600 -
Add procurement gates where lead times can strand crews. One “Ceilings” activity hides constraints like specialty lights and linear diffusers that hold tile install. Put a $0 activity per floor, “ACT materials released and on site”, as a predecessor to “ACT tile install”.
That turns a hidden risk into visible logic, so the schedule shows why tile install is not ready even if grid is 100%.
-
Calculate earned value from installed quantities, not opinions. Floor 13 partitions budget is $312,480 for 33,110 sq ft, so the budget rate is $312,480 / 33,110 = $9.44 per sq ft.
Daily reports show 7,860 sq ft framed and boarded on Floor 13 by end of week 6. Earned value for that activity is 7,860 x $9.44 = $74,198. The percent complete is 7,860 / 33,110 = 23.7%, with numbers you can defend.
-
See what the split fixes in a schedule update and pay app. Week 12 “gut-feel” on lump activities often reads like “drywall 60%, paint 40%, ceilings 50%” because two floors are moving and one is stuck.
Split activities force honesty: Floor 12 partitions can be 100% ($301,874), Floor 13 can be 76.3% ($238,508), and Floor 14 can be 0% ($318,346) if an RFI is blocking layout. Your SOV backup and your CPM update stop arguing with each other.
Takeaway
Activity splits are not “extra detail”. They stop one bar on the schedule from hiding three work fronts and two different constraints, which is where earned value and cash forecasts fall apart. The non-obvious win is early visibility: the moment Floor 14 shows 0% against a $318,346 activity, you can push the RFI and resequence labor in week 3, not explain a miss in month 3.
Build a billable SOV
A billable Schedule of Values (SOV) is a measurement rulebook. Each line has a clear test for what "earned" means, so your pay app, retainage, stored materials, and earned value all agree.
Think of it like a restaurant menu with fixed prices. The kitchen can cook all night, but if the dish is not on the menu with a price next to it, you cannot charge for it. A weak SOV leaves real work off the menu, then you finance it until you fight about percent complete.
- Schedule of Values (SOV)
- The itemized breakdown of the contract sum used for progress billing under the AIA G702 (Application and Certificate for Payment) and G703 (Continuation Sheet). The lines must total exactly to the current contract value, including approved Change Orders.
- Scheduled Value
- The dollar value assigned to an SOV line. It is the cap for what you can bill when that line reaches 100% complete.
- Percent Complete (by value)
- The portion of a line's scheduled value earned through installed work, backed by an objective rule like inspected quantities or a defined milestone. Time passed is not evidence.
- Stored Materials
- Materials delivered to site, or to an approved off-site location, but not yet installed. Billed separately with invoices, delivery tickets, photos, and the storage location so the owner can verify what they are paying for.
Worked example: MEP package on a $9.65M commercial fit-out
Below is an excerpt from a real-shaped G703 continuation sheet for a $2.18M mechanical scope. Study the line-item structure, measurement rules, and how stored materials move to installed without creating disputes.
| Line | Description | Scheduled Value | Measurement Rule | Type |
|---|---|---|---|---|
| 14.1 | AHU procurement (4 units) | $312,400 | 0/100: delivered, inspected, serial-tagged, insured on-site | Stored → Installed |
| 14.2 | AHU set, connect, start-up | $87,600 | 0/100 per unit: set on pad, ducted, piped, controls terminated, start-up report signed | Discrete |
| 14.3 | Ductwork – Levels 2-4 (18,400 lbs) | $386,200 | Measured: lbs installed per floor, verified by daily weigh tickets and inspection | Quantity |
| 14.4 | Copper piping – hydronic (3,600 LF) | $295,000 | Measured: LF installed, brazed, and pressure-tested per section | Quantity |
| 14.5 | Pipe insulation (3,600 LF) | $108,000 | Measured: LF insulated per floor, photo-documented before ceiling close | Quantity |
| 14.6 | Controls & BMS integration | $174,800 | 3 milestones: rough-in complete (40%), point-to-point tested (30%), commissioning sign-off (30%) | Milestone |
| 14.7 | TAB (Testing, Adjusting, Balancing) | $62,000 | 0/100: TAB report accepted by engineer of record | Discrete |
Those seven lines total $1,426,000. The full mechanical scope fills roughly 18 lines. The key point: no line exceeds $400k, every line has one measurement rule that doesn't change, and procurement is split from installation only where the item has a genuine lead time and clear serial-number tracking.
How stored materials move to installed on a pay app
Line 14.1 (AHU procurement, $312,400) shows the movement across three billing cycles on the G703:
| Pay App | Work Completed (Prior) | Work Completed (This Period) | Materials Stored | Total Earned | Retainage (10%) | Net Billed |
|---|---|---|---|---|---|---|
| #4 | $0 | $0 | $312,400 | $312,400 | $31,240 | $281,160 |
| #5 | $0 | $312,400 | $0 | $312,400 | $31,240 | $0 (no change) |
Pay App #4: all four AHUs arrive and pass inspection. $312,400 enters "Materials Stored." Pay App #5: all four are set on pads. $312,400 moves from "Stored" to "Work Completed This Period," and "Stored" drops to $0. Total earned doesn't change. No double billing, no inflated progress. The stored-to-installed swap is a lateral move on the same line in the same cycle.
Retainage math that keeps the line honest
At 10% retainage on the $2.18M mechanical scope, $218,000 is held until Substantial Completion. That's real cash your business finances. A single blended line like "Mechanical – complete" at $2.18M invites the owner's rep to cut percent complete by 3-5% each month. On a blended line, a 5% cut means $109,000 of disputed value and roughly $98,100 in deferred cash after retainage. Split into 18 lines with objective rules, each dispute is capped at the line value. A 5% cut on the $386,200 ductwork line is $19,310, not $109,000. That's a fight worth having. The other 17 lines pay on time.
Aligning SOV lines to earned value
Earned value needs a planned budget per activity (BCWS) and an objective measure of progress (BCWP). The SOV already provides both if you build it right. Each SOV line's scheduled value is your BCWS. Each line's measurement rule gives you BCWP. Map every SOV line to a CPM schedule activity ID. When you bill 2,200 LF of the 3,600 LF copper piping, your earned value is 61.1% of $295,000, or $180,450. Your cost system shows $192,000 spent on that activity. CPI is 0.94, telling you the piping scope is running 6% over budget while it's still fixable. In Archdesk, this earned-value alignment happens automatically: as subcontractor valuations and committed PO costs post against schedule activities, cost-to-date and forecast final account update in the CVR view, so a $12,000 overrun on copper piping surfaces the same week it opens, not at the quarterly reconciliation.
Forecast cost the U.S. way
Setting: a $9.65M GC contract for a 72,400 sq ft medical office tenant improvement in Phoenix, under AIA A102 (GMP) with a 38-week schedule. You're closing period 6, and the owner wants a lender-ready forecast. Job cost shows $3,410,800 spent, and the field team says "we're fine".
The trap is treating actual cost as total exposure. Your margin moves first in buyout gaps, committed-but-unbilled costs, and trend items that are real work but not yet an approved Change Order.
Step-by-step: build a CVR-style EAC (Estimate at Completion)
Lock your control totals. Contract value is $9,650,000. Your Budget at Completion (BAC, your full cost-loaded estimate across all packages, including general conditions) is $8,912,430. Starting planned margin: $9,650,000 minus $8,912,430 = $737,570 (7.6%).
Pull "committed" correctly. Committed cost means executed subcontracts plus issued purchase orders. Verbal quotes and "we're close" emails count as $0 in a forecast.
Calculate buyout gap per package. Buyout gap = committed minus budget. If electrical is bought out $58,690 over budget, that loss is already locked in even if no invoice has landed.
Add trend exposure as cost, not a note. Trend exposure is known scope or time pressure without an approved Change Order yet. Carry it in the forecast until it's formally denied in writing.
Forecast cost to complete (CTC) from the remaining work. Don't use "budget minus cost to date". Use remaining quantities, production rates, and committed-but-unbilled amounts. CTC must include both the remaining committed scope and any trend exposure that will become real cost.
Calculate EAC per line. EAC = cost to date + CTC. The CTC figure already bakes in trend exposure. Forecast variance = EAC minus budget.
| Cost code / package | Budget | Committed | Buyout gap | Cost to date | Trend exposure | CTC (incl. trends) | EAC | Forecast vs budget |
|---|---|---|---|---|---|---|---|---|
| 03 30 00 Cast-in-place concrete | $812,640 | $846,190 | +$33,550 | $401,780 | $18,420 | $462,830 | $864,610 | +$51,970 |
| 05 12 00 Structural steel | $1,146,225 | $1,104,870 | −$41,355 | $658,110 | $62,800 | $509,560 | $1,167,670 | +$21,445 |
| 09 29 00 Drywall and ACT | $1,032,980 | $1,018,460 | −$14,520 | $486,940 | $27,650 | $559,190 | $1,046,130 | +$13,150 |
| 22 00 00 Plumbing | $684,315 | $702,880 | +$18,565 | $296,740 | $21,900 | $428,040 | $724,780 | +$40,465 |
| 23 00 00 HVAC | $1,498,770 | $1,557,420 | +$58,650 | $612,390 | $84,300 | $1,029,330 | $1,641,720 | +$142,950 |
| 26 00 00 Electrical | $1,742,560 | $1,801,250 | +$58,690 | $721,880 | $96,450 | $1,175,820 | $1,897,700 | +$155,140 |
| General conditions | $994,940 | $976,300 | −$18,640 | $233,960 | $0 | $800,680 | $1,034,640 | +$39,700 |
| Job total | $7,912,430 | $8,007,370 | +$94,940 | $3,411,800 | $311,520 | $4,965,450 | $8,377,250 | +$464,820 |
Roll up to the job-level forecast
The table covers seven packages totaling $7,912,430 of the $8,912,430 BAC. The remaining $1,000,000 sits in other packages (sitework, fire protection, elevator, closeout) that are currently tracking to budget. Their EAC equals their budget, so the job-level roll-up is:
- Total BAC: $8,912,430
- Total committed (all packages): $9,007,370 ($8,007,370 from the table + $1,000,000 in remaining packages at budget)
- Total cost to date: $3,411,800
- Total CTC: $5,965,450 ($4,965,450 from the table + $1,000,000 remaining packages)
- Job EAC: $3,411,800 + $5,965,450 = $9,377,250
- Forecast variance to BAC: $9,377,250 − $8,912,430 = +$464,820 over budget
- Forecast margin: $9,650,000 − $9,377,250 = $272,750 (2.8%)
- Margin erosion: $737,570 − $272,750 = $464,820, cutting margin from 7.6% to 2.8%
Notice where the damage sits. Of that $464,820 overrun, $311,520 (67%) is trend exposure, not invoiced cost. The field team sees $3.41M billed against a $8.9M budget and feels comfortable. The CVR sees $311k in trends plus $94,940 in buyout losses and shows a margin that has halved.
One-paragraph EAC narrative (copy and edit for your report)
"Period 6 job-level EAC is $9,377,250 against a BAC of $8,912,430, forecast margin of $272,750 (2.8%) versus planned 7.6%. Three drivers account for 73% of the $464,820 variance: electrical is +$155,140 due to a $58,690 buyout loss plus $96,450 in trends tied to feeder re-routing and acceleration to protect the ceiling-close milestone; HVAC is +$142,950, with $84,300 in trends from controls and TAB scope growth pending Change Order approval; concrete is +$51,970 on a $33,550 buyout gap plus $18,420 in trend exposure for additional housekeeping pads. Of the total overrun, $311,520 (67%) remains as un-converted trend exposure. Next actions: price and submit $311,520 of trends as Change Orders tied to existing RFIs and field directives within the next billing cycle, lock the HVAC controls scope in the next OAC meeting, and reforecast general conditions weekly until the 19-day schedule drag is recovered or absorbed."
The lesson: "budget minus cost to date" tells you nothing about where you'll land. EAC = cost to date + CTC, and the CTC must include trend exposure and buyout gaps already locked in your subcontracts and POs. In Archdesk, this is the CVR view: committed PO values, subcontractor pay applications, and trend items feed straight into cost to date and CTC columns, so a $58,690 buyout gap on electrical shows up the week that subcontract is executed, and the job-level margin recalculates automatically, not at month-end when it's too late to trade it out.
Control change orders end-to-end
Run change orders like a production line. Every potential change moves through the same statuses, with the same attachments and aging rules, until it is approved, time-adjusted, billed, and collected.
Think of it like an insurance claim. You can have a real loss, do the repair, and still get paid $0 because you missed the filing window or sent the wrong backup. Extra work on site is the same. The work can be real and still be unbillable if it never becomes an approved Change Order with the right attachments.
- Potential Change Order (PCO)
- A change event you have identified, but not yet fully agreed on cost and time. This is the placeholder that stops extra work from being buried in base cost codes.
- Change Order Request (COR)
- Your formal submission with pricing backup and time impact, tied to the contract basis (RFI response, owner/architect directive, differing site condition notice, ASI, CCD).
- Construction Change Directive (CCD)
- An AIA or ConsensusDocs instruction to proceed before price and time are agreed. Your cost and schedule links must start same-day.
- Change order aging
- How many calendar days the item has sat in its current status. Aging is your trigger to escalate before entitlement and cash go stale.
Worked example: PCO-047 on a $9.6M office build-out
Follow one change from discovery to collection so you can see every handoff, every document, and every aging trigger.
Day 0, Monday, PCO Open. The superintendent finds unforeseen rock 4 feet below grade during elevator pit excavation. He logs a daily report with photos and GPS coordinates, and calls the PM. The PM opens PCO-047 within 24 hours, links it to Daily Report #112 and the differing site condition clause (AIA A201 §3.7.4), and creates a dedicated cost code (CO-047-ROCK). From this moment every timecard, equipment ticket, and material invoice for this work hits CO-047-ROCK, not base scope.
Days 1–4, PCO Priced. The PM pulls labor actuals (3 operators × 2 days at $94/hr = $4,512), equipment (hydraulic breaker rental, $1,800/day × 2 days = $3,600), trucking and disposal ($2,100), and subcontractor re-mobilization ($1,650). Markups per contract: 15% OH&P on self-performed ($1,217), 10% on sub ($165). Total: $13,244. The PM writes assumptions in plain English: "Rock class assumed Type B per geotech report; if Type A encountered, unit rate increases 40%."
Day 5, Time impact documented. The PM builds a simple fragnet (a short chain of activities inserted into the current schedule). It shows the two extra excavation days pushed the elevator pit concrete pour from Day 38 to Day 40, which shifted the elevator rough-in start by two days on the critical path. The fragnet attaches to COR-047 with a before-and-after schedule comparison PDF and a written Time Impact Analysis (TIA) stating: "Net impact: 2 calendar days added to Substantial Completion, no concurrent delay identified." This is the step most teams skip. Without a fragnet tied to named schedule activities, the owner's consultant will reject the time extension and you lose the delay damages defense.
Day 5, COR Submitted. COR-047 goes to the owner's representative with this backup pack:
- Daily reports with photos (days 0–2)
- Labor timecards coded to CO-047-ROCK
- Equipment rental invoices
- Subcontractor re-mob quote
- Cost summary with markups per contract schedule of rates
- Fragnet and written TIA
- Reference to contract clause (AIA A201 §3.7.4)
Days 6–18, Under Review. The owner's consultant asks two questions on Day 9. Each question gets logged with a due date and a single owner on your team. At Day 14 with no decision, the PM sends a written escalation: "Per AIA A201 §7.3, COR-047 has been under review for 14 calendar days. Please confirm acceptance, rejection, or issue a CCD to proceed." This escalation letter is non-negotiable. Without it, the change sits in limbo and you lose use.
Day 20, CO Approved. The owner executes Change Order #12 for $13,244 and 2 calendar days. Now two things happen immediately: the contract sum updates from $9,600,000 to $9,613,244, and the Substantial Completion date moves from October 14 to October 16 in the baseline schedule.
Billing the approved change: pay app and SOV steps
An approved CO that never makes it onto the Schedule of Values is the same as an unapproved one. Here is exactly how CO #12 becomes cash.
Step 1, Add a new SOV line. In the next pay application (say, Pay App #5), add line item 14.12: "CO #12, Unforeseen Rock Removal, Elevator Pit" with a scheduled value of $13,244. Do not bury it inside an existing line. Owners and their consultants reject pay apps when change work is lumped into base scope lines because they can't verify what they're approving.
Step 2, Bill completed work. If the rock removal is 100% complete, bill $13,244 on line 14.12. The "% Complete" column shows 100%, and the "Work Completed This Period" column shows $13,244. Retainage applies per the contract rate (typically 5–10%), so at 10% retainage, you collect $11,920 on this line.
Step 3, Attach backup to the pay app. Staple the executed CO, the COR with full backup, and the coded cost reports behind the pay app. The owner's rep will cross-check. Missing backup is the number one reason COs get kicked from a pay app cycle, costing you 30 days of cash flow.
Step 4, Track retainage release. The $1,324 held as retainage on CO #12 releases at Substantial Completion per the same retainage schedule as base contract work. Log it separately so it doesn't get lost in the retainage reconciliation at closeout.
Status register with aging rules
| Status | Definition | Aging rule |
|---|---|---|
| PCO Open | Change event identified. Dedicated cost code opened for timecards, POs, and invoices. | Open within 24 hours of instruction or discovery. |
| PCO Priced | Labor, material, equipment, sub quotes, markups, and backup compiled. Assumptions written in plain English. | Price within 5 working days, or log the blocker. |
| COR Submitted | Sent with full backup pack including fragnet/TIA tied to named schedule activities. | Submit within 2 working days of pricing completion. |
| Under Review | Owner/GC/Architect questions tracked with due dates. Each question has one owner on your side. | Escalate at day 14 in writing. |
| CO Approved | Executed per contract. Contract sum and time updated. New SOV line created. | Must appear on the next pay app. |
| Rejected / Withdrawn | Denied or no longer pursued. Reason coded and entitlement notes saved for closeout. | Close within 48 hours of the decision. |
The operating rule that protects entitlement
Every PCO must link to three things or it is not a real record: the cause document (RFI, ASI, CCD, directive, daily report), the exact schedule activities it touches, and the cost codes where labor and material are landing. That triple linkage turns a pay app backup pack into claim-ready proof instead of a story you assemble at closeout.
Earned value from SOV
Setting: a $4.85M Class A office tenant improvement in Dallas, 38,600 sq ft, AIA A101, 22-week schedule. End of week 9, the GC wants earned value driven off the Schedule of Values (SOV), but only where percent complete is measured from installed quantities or signed-off milestones. A late RFI on ceiling plenum heights has slowed HVAC rough-in and is now blocking drywall close-up.
Step 1: Build PV, EV, and AC from the SOV and the week-9 schedule update
Planned Value (PV) comes from the baseline schedule percent for each SOV line at week 9. Earned Value (EV) comes from measured progress rules. Actual Cost (AC) comes from job cost to date, not billing, and you keep stored materials separate so EV doesn't get overstated.
| SOV line | Budget (BAC by line) | Planned % (wk 9) | PV | Measured % complete | EV | AC (cost to date) |
|---|---|---|---|---|---|---|
| Demolition & abatement | $218,400 | 100% | $218,400 | 100% | $218,400 | $231,750 |
| Mechanical (HVAC rough-in) | $1,124,000 | 45% | $505,800 | 38% | $427,120 | $486,300 |
| Electrical rough-in | $736,500 | 50% | $368,250 | 52% | $382,980 | $364,200 |
| Drywall & framing | $612,000 | 40% | $244,800 | 31% | $189,720 | $214,600 |
| General conditions | $486,000 | 41% | $199,260 | 41% | $199,260 | $207,400 |
| Subtotal (5 lines) | $3,176,900 | $1,536,510 | $1,417,480 | $1,504,250 |
Step 2: Calculate SPI, CPI, SV, and CV from those totals
- SPI = EV ÷ PV. $1,417,480 ÷ $1,536,510 = 0.92. You're earning 92% of the progress you planned.
- CPI = EV ÷ AC. $1,417,480 ÷ $1,504,250 = 0.94. You're getting $0.94 of budgeted value for every $1.00 spent.
- SV = EV − PV. $1,417,480 − $1,536,510 = −$119,030. That's the dollarized schedule shortfall.
- CV = EV − AC. $1,417,480 − $1,504,250 = −$86,770. That's the cost overrun already baked in.
Step 3: Forecast EAC and ETC using three formulas, then pick the right one
Full contract BAC is $4,850,000. The remaining work is BAC − EV = $4,850,000 − $1,417,480 = $3,432,520. Three EAC variants give you three different answers, and each one tells you something different about the job.
| EAC variant | Formula | Calculation | EAC | ETC (= EAC − AC) |
|---|---|---|---|---|
| CPI-only | AC + (BAC − EV) ÷ CPI | $1,504,250 + $3,432,520 ÷ 0.94 | $5,156,187 | $3,651,937 |
| CPI × SPI | AC + (BAC − EV) ÷ (CPI × SPI) | $1,504,250 + $3,432,520 ÷ (0.94 × 0.92) | $5,473,851 | $3,969,601 |
| Bottom-up (from buyout + open POs + labor remaining) | AC + independent re-estimate | $1,504,250 + $3,385,350 | $4,889,600 | $3,385,350 |
When to use each one:
- CPI-only assumes cost inefficiency continues at the current rate, but schedule recovers to plan. Use it when the schedule slip is caused by a one-off event you've already fixed, like an RFI that's now answered.
- CPI × SPI assumes both cost overruns and schedule delays keep compounding on the remaining work. Use it when the schedule problem is systemic, like labor shortages or a procurement chain that won't speed up. On this job, the HVAC RFI is still unresolved and blocking drywall, so CPI × SPI is the more honest forecast until the constraint clears.
- Bottom-up is the PM's independent re-estimate. It should always be run alongside the index forecasts as a cross-check.
Step 4: Credibility checks on the indices
Duration threshold. Week 9 of 22 is 41% through the planned duration. You've earned $1.42M of $4.85M (29% of value). Both indices have enough data behind them to act on. Waiting for "more data" just means you spend more money before you act.
Gap test between index EAC and bottom-up EAC. The CPI × SPI forecast ($5,473,851) is $584,251 above the bottom-up number ($4,889,600). That's a 12% gap. Anything over 5% means one of the two estimates is wrong. Here, the most likely cause is that the bottom-up hasn't priced the downstream drywall delay caused by HVAC. If the PM's re-estimate doesn't account for idle framing crews waiting on rough-in clearance, the bottom-up is understated. In Archdesk, this gap shows up in the CVR view as soon as subcontractor valuations and PO commitments hit the system, so the $584k discrepancy surfaces the same week instead of at the next monthly reconciliation.
Line-level sanity check. CPI on electrical rough-in is $382,980 ÷ $364,200 = 1.05. Electrical is ahead of plan and under budget. HVAC CPI is $427,120 ÷ $486,300 = 0.88. One trade is masking the other in the blended index. Always check CPI per SOV line before you trust the project-level number.
Takeaway
The non-obvious lesson: the CPI-only and CPI × SPI forecasts bracket your risk, not predict it. On this job, they produce a $317k spread ($5,156k vs $5,474k). That spread is your management question: do you believe the HVAC constraint is a one-off or a systemic drag? The action is commercial and operational in the same week. Price the $38,400 HVAC change order tied to the RFI delay and submit it before the next pay app. Re-sequence drywall to areas with completed rough-in so you stop the EV bleed. And run both EAC formulas every week until CPI × SPI and CPI-only converge, because convergence tells you the schedule problem is actually fixed, not just reported as fixed.
Challenge: catch the EV trap
Try this: You are the GC on a $9.65M ground-up commercial building under AIA A201. You are closing month 4. The Owner says your pay app draft feels "optimistic". Your job is to diagnose the earned value (EV) trap, correct EV using field quantities (not billed percent), then calculate PV, CPI, SPI, and two EACs. Finish by writing a six-line forecast note that names the top two drivers, the commercial owner for each, and the next action date.
| Input | Value |
|---|---|
| BAC (Budget at Completion) | $9,650,000 |
| Planned % complete at month 4 (baseline schedule) | 38% (PV = $3,667,000) |
| Actual cost to date (AC, job cost ledger through month 4) | $3,920,000 |
| Pay app draft, billed to date (treat this as "EV as-written" for the trap) | $4,669,857 |
| Steel status (daily reports) | 186 of 312 tons erected (60%). Decking not started (0%). |
| Steel SOV line (scheduled value) | $2,410,000 (billed 70% on pay app) |
| Other field-installed % to use for corrected EV | Sitework 90%, Concrete 73%, MEP rough-in 12%, Exterior envelope 3%, Interiors 0%, GC prelims 29% |
| RFI blocker | RFI-041 (structural connection detail) open 22 days. Steel stopped at grid J-K. |
| Change order register | PCO-007 $74,000 approved CO (age 38 days). PCO-009 $112,000 pending pricing (age 27 days, 6 days time). PCO-011 $41,000 potential (age 14 days, tied to RFI-041). |
What to calculate and why
Compute PV, EV, AC, then CPI = EV ÷ AC and SPI = EV ÷ PV. Do it twice: first using the pay app EV as-written, then using corrected EV from field-installed progress.
Then produce two distinct EAC forecasts using the corrected CPI:
- EAC₁ "simple index" = BAC ÷ CPI. This assumes the current cost efficiency holds for all remaining work.
- EAC₂ "spent plus remaining at current efficiency" = AC + (BAC − EV) ÷ CPI. This anchors on money already spent and only applies the efficiency factor to the work still ahead.
The two formulas will give slightly different numbers whenever AC ≠ EV (which is the normal case on a job with a CPI other than 1.00). Both are legitimate forecasts. EAC₁ is a quick sanity check. EAC₂ is more conservative because it locks in actual spend rather than redistributing it through the index.
Your forecast note should read like a month-end controls summary. Call out the EV distortion, name the cost exposure that will hit margin, assign a single owner per issue, and set a date to re-measure.
Show the worked solution
Step 1: PV (planned value).
PV is given: $3,667,000.
Step 2: EV "as-written" (the trap).
Treat the pay app billed-to-date as EV for the first pass: EV(as-written) = $4,669,857.
Step 3: CPI and SPI using EV(as-written).
- CPI = EV ÷ AC = $4,669,857 ÷ $3,920,000 = 1.19
- SPI = EV ÷ PV = $4,669,857 ÷ $3,667,000 = 1.27
Read that back. A CPI of 1.19 says you're earning $1.19 of value for every $1.00 spent. An SPI of 1.27 says you're 27% ahead of your baseline schedule. Neither can be true if steel is stopped for an unanswered RFI and a crew is sitting idle at grid J-K. The pay-app-based EV is fiction.
Step 4: Correct EV using field-installed progress.
| SOV line | Scheduled value | Field % | Corrected EV |
|---|---|---|---|
| Sitework & utilities | $1,180,000 | 90% | $1,062,000 |
| Concrete (foundations & SOG) | $1,640,000 | 73% | $1,197,200 |
| Structural steel | $2,410,000 | 42% | $1,012,200 |
| MEP rough-in | $1,890,000 | 12% | $226,800 |
| Exterior envelope | $1,280,000 | 3% | $38,400 |
| Interior finishes | $890,000 | 0% | $0 |
| GC prelims & general conditions | $360,000 | 29% | $102,857 |
| Total corrected EV | $9,650,000 | $3,639,457 |
Why steel is 42% and not 60%. Daily reports show 60% of tonnage erected, but decking is 0% and the RFI has stopped a portion of connections. The SOV line covers erection, connections, and decking. Using 42% reflects the weighted physical progress across all three scopes. Steel was billed at 70% even though measurable work is nowhere near that.
EV distortion (the actual trap).
EV gap = $4,669,857 − $3,639,457 = $1,030,400 of phantom EV. That's 10.7% of BAC in ghost earnings.
Step 5: Corrected CPI and SPI.
- CPI(corrected) = EV ÷ AC = $3,639,457 ÷ $3,920,000 = 0.93
- SPI(corrected) = EV ÷ PV = $3,639,457 ÷ $3,667,000 = 0.99
The corrected SPI of 0.99 tells a completely different story from the 1.27 the pay app implied. You are not ahead of schedule. You are fractionally behind, and that is before accounting for the steel stoppage at grid J-K, which is on the critical path. The "as-written" SPI of 1.27 would have told leadership the job was 27% ahead. The corrected 0.99 tells them the truth: schedule is slipping and needs intervention this week.
Step 6: Two EACs using corrected figures.
EAC₁ "simple index" = BAC ÷ CPI
= $9,650,000 ÷ 0.93
= $10,376,344
This formula takes the total budget and divides by the cost efficiency index. It assumes the rate at which you're burning money relative to value earned will stay the same for every remaining dollar. Think of it as: "if the whole job had run at this efficiency from day one, what would it cost?"
EAC₂ "spent plus remaining at current efficiency" = AC + (BAC − EV) ÷ CPI
= $3,920,000 + ($9,650,000 − $3,639,457) ÷ 0.93
= $3,920,000 + $6,010,543 ÷ 0.93
= $3,920,000 + $6,462,949
= $10,382,949
This formula takes money already spent as a sunk cost (the $3.92M is real, it's out the door) and then forecasts only the remaining work at the current CPI. The difference between EAC₁ and EAC₂ here is about $6,600. On a $9.65M job that's noise. But on a project where early phases ran efficiently and a problem emerged mid-job, EAC₂ will be higher than EAC₁ because it doesn't let the good early performance dilute the bad current performance. Use EAC₂ as your primary forecast. It's the more honest number.
Both EACs point to roughly +$730k over BAC, and that's before PCO-009 ($112k) and PCO-011 ($41k) price in.
Side-by-side summary
| Metric | As-written (trap) | Corrected (field) | What it means |
|---|---|---|---|
| EV | $4,669,857 | $3,639,457 | $1.03M of phantom value stripped out |
| CPI | 1.19 | 0.93 | Flips from "under budget" to 7% over |
| SPI | 1.27 | 0.99 | Flips from "27% ahead" to dead flat |
| EAC₁ (BAC ÷ CPI) | $8,109,244 | $10,376,344 | $2.27M swing in forecast final cost |
| EAC₂ (AC + remaining ÷ CPI) | $8,103,279 | $10,382,949 | Confirms $10.38M forecast |
Step 7: Six-line forecast note.
- Status: Month 4. EV corrected to field quantities. EV $3.64M vs billed $4.67M, a $1.03M phantom gap. CPI 0.93, SPI 0.99. EAC $10.38M (roughly +$730k vs BAC before pending change orders).
- Driver 1 (EV distortion): Steel billed 70% while field-measured progress is 42%. This created $1.03M of phantom EV and masked the true CPI and SPI. Owner: Project Controls Manager. Next action: reissue pay app backup with quantity-based earning rule by next Wednesday.
- Driver 2 (critical path stop): RFI-041 open 22 days. Steel stopped at grid J-K, and steel is the critical path activity. Owner: Project Engineer. Next action: escalate RFI-041 to Architect of Record by Friday 3:00 pm, then hold a same-day decision call.
- Change order exposure: PCO-009 ($112k, 6 days time) has sat 27 days without pricing. Owner: Project Manager. Next action: submit formal pricing package to Owner by next Tuesday noon.
- Forecast: Hold cost-to-complete review with steel and MEP subs after RFI-041 closes. Update EAC in the month 5 close. If CPI does not recover above 0.96 by month 5, trigger a formal recovery schedule.
- Measurement rule going forward: Steel EV must be earned off installed quantities (tons erected plus decking sq ft installed), not SOV billed percent. Apply the same rule to MEP rough-in using linear feet of conduit and pipe in place.
What most people get wrong: they treat "% billed on the SOV" as earned value. That turns EV into a cash-flow story, not a production story. The SPI looked like 1.27 and told leadership the job was ahead. The real SPI is 0.99. That distortion hides a bad CPI until the job runs out of places to overbill, and by then recovery costs twice as much. In Archdesk, the CVR view ties earned value to field-measured quantities rather than billed percent, so the corrected CPI and SPI surface in the same week the distortion opens, not two months later when someone finally reconciles the pay app against the daily reports.
Run the 30-day rollout
Project controls protect your margin when schedule, cost, and change all point to the same work packages. CPI, SPI, and EAC should drive decisions every week, not excuses at month-end. Below is a day-by-day calendar, with specific deliverables, templates, and meeting formats you can copy straight onto a live job.
Week 1 (Days 1–7): Lock the foundations
| Day | Deliverable | Done-right test |
|---|---|---|
| 1 | Stand up five logs: RFI, Submittal, Change Order, Trend (potential changes not yet priced), and Decision (owner + due date). Each log needs four columns minimum: Item #, Date Opened, Float Impact (days), and Responsible Party. | Every log has a unique numbering convention and a named log owner on the team. |
| 1–2 | Lock the WBS and cost code map. Every cost code traces to at least one CPM activity and one SOV line. Split any activity hiding different trades. "Cladding" covering framing, insulation, and panels will corrupt earned value inside 60 days. | A printed crosswalk: cost code → CPM activity → SOV line, no orphans in any column. |
| 3–4 | Baseline schedule quality gate. Run five checks: (1) missing logic ties, (2) hard constraints (should be zero beyond notice-to-proceed and Substantial Completion), (3) activities over 20 working days, (4) negative float, (5) open-ended activities. Fix failures within 48 hours. | A one-page pass/fail summary. Target: logic-tie density ≥ 95%, hard constraints ≤ 2, no activity longer than 20 days. |
| 5–7 | Draft the SOV tied to AIA G702/G703. Each line gets one percent-complete rule, one measurement source, and one cost code home. Ban billing ahead of install unless you have stored materials backup tied to an approved submittal, tagged location, and insurance coverage. | SOV line count matches the cost code map. Every line has a written measurement method: units installed, area complete, or milestone. |
Week 2 (Days 8–14): Set the rules and baselines
| Day | Deliverable | Done-right test |
|---|---|---|
| 8–10 | Publish a one-page Operating Rules sheet. Cover three things: (1) Percent-complete rules by SOV line (e.g., "Drywall: 0% until framing inspected, 40% at board hang, 75% at tape/finish, 100% at paint-ready punch"), (2) RFI triage tied to float (any RFI hitting critical path or < 10 working days total float gets same-day triage with PM and superintendent), (3) Change order status definitions: Potential → Priced → Submitted → Approved → Certified, with aging trigger ("Priced over 14 days gets called out in the weekly huddle"). | Laminated and posted in the trailer. Every superintendent and APM can name the percent-complete rule for their top three SOV lines from memory. |
| 11–12 | Set baseline KPIs. Calculate your Day-1 benchmarks: Budgeted CPI = 1.00, Budgeted SPI = 1.00, buyout gap (total budget minus committed POs/subs), and EAC = original budget. Record these in a single-tab spreadsheet or your project controls platform. | One page shows budget, committed, forecast, and variance for every cost code. This is your Month-0 snapshot. |
| 13–14 | Build a KPI calculation reference card. CPI = Earned Value ÷ Actual Cost. SPI = Earned Value ÷ Planned Value. EAC (index) = Budget at Completion ÷ CPI. EAC (bottom-up) = Actual Cost + re-estimated remaining work. Print this and tape it next to the monitor of whoever updates the cost report. | PM can hand-calculate CPI and SPI for any cost code in under two minutes using the current SOV and cost data. |
Week 3 (Days 15–21): Launch the weekly cadence
Start the Weekly Production & Forecast Huddle. 60 minutes, same day and time every week, never canceled. Here is the five-item agenda, with time boxes:
- CPI and SPI by cost code (10 min). Flag any code where CPI < 0.95 or SPI < 0.95. Name one owner and one corrective action per flag.
- Buyout gap update (10 min). How much budget is uncommitted? Which packages bid above budget? Decision: rebid, value-engineer, or absorb and adjust EAC.
- Top 5 aging RFIs by float impact (10 min). Sort RFIs by days open × float consumed. Any RFI open > 10 working days with critical-path impact gets an escalation call the same afternoon.
- Top 3 trend items by dollars (10 min). Trends are potential changes not yet priced. For each: estimated cost, schedule impact, and owner responsible for pricing by next huddle.
- Action tracker review (10 min). Every action from last week: done, in progress, or overdue. Overdue items get a new due date and an escalation path. If the meeting produces no actions, the meeting was wasted.
Capture minutes in a standing template: Date, Attendees, five-item summary, Action Items (Owner, Due Date, Status). Distribute within two hours of the meeting ending.
Week 4 (Days 22–30): Run the first monthly commercial close
| Step | What to reconcile | Red-flag threshold |
|---|---|---|
| 1 | Pay apps received vs. committed PO/subcontract values | Any sub billing > 5% above earned progress |
| 2 | Cost-to-date vs. earned value by cost code | CPI < 0.90 on any code > $50k budget |
| 3 | Index-based EAC vs. bottom-up EAC | Difference > 5%. Write the cause and name the owner. This gap is where margin gets "explained" away. |
| 4 | Change order log: approved dollars vs. billed dollars vs. cost impact | Approved but unbilled changes > $25k (you're leaving cash on the table) |
| 5 | Retainage held vs. retainage owed to subs | Net retainage position turning negative |
The monthly close produces one output: a two-page Project Health Summary sent to leadership. Page one is a table of CPI, SPI, EAC, buyout gap, and retainage position. Page two lists the top five risks by dollar exposure, each with an owner, a mitigation plan, and a deadline. In Archdesk, this summary pulls directly from the CVR view, where cost-to-date, value earned, and forecast final account update automatically as subcontractor valuations and PO commitments are entered, so the buyout gap or a WIP variance shows up the same week it opens instead of surfacing at the quarterly reconciliation.
Ongoing cadence after Day 30
- Weekly: 60-minute Production & Forecast Huddle (the five-item agenda above). Update CPI, SPI, and log aging data every Friday before the meeting.
- Monthly: Commercial close on the last working day of the month. Reconcile pay apps, committed costs, EAC, and retainage. Publish the two-page Project Health Summary within 48 hours.
- Quarterly: Schedule a 90-minute baseline review. Re-run the five schedule quality checks from Day 3. If logic-tie density has dropped below 90% or hard constraints have crept in, fix before the next pay app cycle.
What to learn next
- Time Impact Analysis (TIA) basics. Change orders get decided on entitlement and CPM cause-and-effect, not on who argues best in the trailer.
- DCMA-style schedule checks. Missing logic and hard constraints create fake critical paths. Every delay discussion turns into opinion without them.
- Trade-level labor productivity tracking. CPI can look fine while one crew installs 15% fewer square feet per day than the bid. That's how a $180k overrun appears "out of nowhere" at closeout.
Frequently Asked Questions
What is a project controls spine and why does it matter on a GC job?
A project controls spine links your baseline schedule, bill of quantities, Schedule of Values, and cost forecast into one connected system. Changes in one area, say a two-week RFI delay on HVAC rough-in, flow automatically into earned value, cost-to-complete, and your pay app. Without that link, your CPI and SPI are just numbers on a dashboard with no connection to real buyout gaps or field progress. Firms that run a connected spine catch margin erosion weeks earlier than those working from disconnected spreadsheets.
How do I stress-test a CPM baseline schedule before locking it?
Run the DCMA 14-Point Assessment, which checks 14 specific metrics including missing logic, negative float, high-duration tasks, and relationship density. Any metric that fails gets a fix added to a punchlist before the first status update. A baseline that scores below the DCMA thresholds, for example more than 5% of activities missing logic ties, will produce unreliable float paths and flawed delay analysis for the life of the job.
How should I map BoQ quantities to schedule activities on a tenant improvement project?
Break lump-sum schedule activities like "Interiors" or "MEP Rough-in" into measurable work packages tied to specific takeoff quantities. On a $8.74M, 38,600 sq ft TI project, for example, drywall framing on floor 12 becomes its own activity with linear footage from the takeoff driving both earned value and the SOV line. This connection means percent complete comes from field-measured quantities, not a superintendent's guess, and your AIA G702/G703 pay app reflects actual installed work.
What is the most common earned value trap on AIA contracts, and how do I avoid it?
The trap is billing percent complete based on cost or schedule progress instead of field-verified installed quantities. On a $9.65M job at month 4, your pay app can show 40% complete while field quantities show only 33%, creating a CPI above 1.0 that masks a real overrun. Fix this by driving EV from signed-off milestones or measured unit counts, then recalculate CPI, SPI, and your Estimate at Completion (EAC). The corrected EAC often lands 6% to 10% above the billed figure, and that gap is your true exposure.
How do I build a Schedule of Values that protects my cash flow and stands up to owner scrutiny?
Each SOV line needs a clear test for what "earned" means, whether that's installed linear feet, a signed inspection, or a delivered and stored material count. Front-loading lines without measurable milestones invites retainage disputes and owner pushback on pay apps. A strong SOV on a $4.85M office TI ties every line to a schedule activity and a BoQ quantity, so your AIA G702/G703 billing, retainage balance, and earned value report all show the same number.
What is the right way to forecast cost-to-complete on a GMP contract?
Don't treat actual cost as total exposure. On a $9.65M AIA A102 GMP job with $3.41M spent at period 6, your real exposure includes uncommitted buyout gaps, pending change orders, and anticipated cost growth on open subcontracts. Calculate EAC by adding committed costs, forecast remaining work priced at current production rates, and every unresolved PCO. A lender-ready forecast names each risk line and its dollar value, not just a rolled-up contingency number.
How should I track change orders to stop revenue leakage?
Run every potential change through fixed statuses: identified, priced, submitted, approved, time-adjusted, billed, collected. Set aging rules at each stage, for instance flagging any Potential Change Order (PCO) not priced within 7 days and any Change Order Request not submitted to the owner within 14 days. Most GCs lose change order revenue not because the entitlement was weak, but because backup was incomplete or the contractual notice window under AIA A201 was missed. Treating the process like a production line closes those gaps.
Can I roll out a full project controls system on a live job in 30 days?
Yes. Week 1 locks the baseline schedule (DCMA-scored), the BoQ-to-activity map, and the billable SOV. Week 2 builds the cost forecast and change order log with aging rules. Week 3 runs the first earned value cycle using field quantities, producing CPI, SPI, and EAC. Week 4 holds the first weekly controls meeting where CPI below 0.95 or SPI below 0.93 triggers a named corrective action, not a discussion. The key is assigning a specific deliverable to each day so no step depends on a template that hasn't been built yet.
![Best 15 Subcontractor Management Software for 2026 [Quadrant]](/_next/image?url=%2Fapi%2Fblog-posts%2Ffile%2Fbest-subcontractor-management-software-archdesk-1200x800.jpg&w=3840&q=75&dpl=dpl_24rtWSGpb1bvJFDhcPctEQRyehfS)




