
The model's project rate is $185 an hour. Its project gross margin target is 50%. To investigate why projects go over budget, compare the work you priced with the work still required, then find where the difference entered the plan.
I'd run seven checks through the project record, each with an owner. Use them to separate a missed estimate from a changed scope or an incomplete time record. They won't make every quote land exactly, but they give you a specific decision before assigning more work.
1. Verify What the Estimate Assumes
The estimator owns the discovery check. Before a quote is approved, connect each material assumption to a record the engineer can inspect. For a proposed migration, that might mean verifying the systems in scope and confirming the access needed to examine them.
Keep an unresolved assumption visible beside the task it affects. If the engineer cannot verify it, decide whether to investigate before quoting or describe a priced scope with a clear condition. Don't let an unknown become a confirmed fact when the proposal moves to delivery.
For a project already running, compare the unexpected condition with the original discovery record. A condition that was checked and later changed calls for a different response from one nobody examined. Preserve that distinction when updating the estimate.
2. Include the Work Needed to Finish
The technical lead owns the completeness check. Have them walk the estimate through to the agreed completion test, including the work around the visible implementation. A migration isn't ready for handover just because the data copy completed.
Attach the required preparation and verification to real tasks. If a recovery step must be ready before a change, include the work to prepare it. Put documentation and the service-desk handover in the plan where the agreed deliverable requires them.
Keep the estimate beside that task record. When you discover omitted work, record the reason instead of quietly expanding the original task. That gives the next estimator something more useful than a final total marked over budget.
3. Get a Decision on Changed Scope
The project manager owns the scope check. Compare a new request with the agreed deliverable before assigning it. If it changes the work, put the proposed change and its cost and schedule effects in front of the authorized client decision-maker.
Keep that decision separate from the engineer's technical recommendation. An engineer can explain why a change is useful without committing the MSP to include it in the existing price. Follow the agreement's approval process before treating the change as authorized work.
For an urgent safety or recovery decision, follow the applicable incident and approval process, then preserve the reason and authorization in the project record. Don't rewrite the original scope afterward to make the extra effort disappear. Finance needs to know which work the original fee was meant to cover.
4. Confirm Dependencies Before Booking the Engineer
The coordinator owns the readiness check. Confirm the client-side prerequisite before reserving the next task against an engineer's available time. Record who will supply the access or other dependency and how the team will know it is ready.
If it isn't ready, change the booking and tell the client what decision or action is needed. Separate elapsed waiting from labor actually spent trying to proceed. A delay can move a completion date without every waiting hour becoming a labor cost or a billable hour.
For any extra preparation or repeated attempt, record the work and its cause. That lets the project manager assess the cost effect under the agreement rather than billing from the calendar alone. The next booking should reflect the updated readiness record.
5. Check That the Assigned Time Exists
The delivery manager owns the capacity check. The model gives a dedicated project engineer 85% utilization of 1,660 available annual hours. The monthly calculation is 1,660 × 0.85 ÷ 12, or about 117.58 productive hours, with no escalation duty in that role assumption.
If you also assign that engineer service-desk escalation work, measure the time available for the project rather than reusing the dedicated-role assumption. Retire 'resource optimization' until someone has checked the actual bookings. A name for the problem isn't an available engineer.
Include onboarding in the same capacity view. The model places its 60 hours per new client on project engineers, unpaid, rather than in the service desk's spare capacity. Those hours still need a place in the schedule even though they produce no project fee.
6. Make the Time Record Complete
The engineer owns recording the work; the project manager owns checking the record before using it to report cost. Keep actual labor against the relevant task, including rework that the client will not be billed for. An empty time entry doesn't mean the task cost nothing.
Reed Warren recommends separating direct labor by the revenue stream it supports, including projects and managed services. That is his accounting advice. Apply it when reviewing the project line so work hasn't disappeared into a general support bucket.
For a labor-only illustration, calculate the direct-labor allowance per priced hour as the model's $185 rate × (1 − 0.50), using its 50% margin target. That is a target allowance, not the engineer's actual hourly cost. Compare the project's actual burdened labor with its allowance, and account for any other direct costs in a job that includes them.
On a fixed fee, extra labor without added revenue uses more of that allowance. On time-and-materials work, establish which recorded hours the agreement permits you to bill. Neither arrangement makes an incomplete record a useful cost report.
7. Estimate What Remains, Then Update the Plan
The project manager owns the completion forecast, with the assigned engineer estimating the remaining work. Add the cost already incurred to the estimated cost to finish. Compare that total with the approved budget on the same cost basis.
Keep a change to the remaining estimate distinct from an approved increase in the budget. A green status doesn't pay the engineer. If the forecast has moved, record the reason and the decision needed before booking the next stage.
Erik van Hurck describes using lessons from previous projects as input to future project risks, with the project manager still responsible for interpreting them. That is his design proposal. Use a completed job to test a specific estimating assumption rather than treating its duration as a universal allowance.
Put the Decision on the Board
My test for these checks is simple: what does this do to the board on Monday morning? It should change the actual task or booking when a prerequisite is missing, an estimate has moved, or a client decision is outstanding. A separate spreadsheet nobody uses to assign work won't do that job.
Choose a current project and walk the seven checks through its existing record. Correct the first gap that changes the next assignment, name the person responsible, and update the forecast. Keep the explanation so the next quote benefits from the work you have already paid for.
mspoutpost.com/articles/why-projects-go-over-budget-seven-checks-for-your-msp
Written by Megan Friesen
MSP Outpost publishes information, not legal, financial, insurance, tax or compliance advice, and reading it creates no professional relationship. For decisions about your business, talk to a qualified professional.
