Sign in

Blog · Finance metrics and formulas · Professional services

Professional services cost analysis

Separate delivery labor, subcontractors and shared overhead to compare engagement costs. Follow a worked cost worksheet, reconcile it to the ledger and distinguish spending changes from utilization effects.

The short answerProfessional services cost analysis compares engagement delivery costs with an agreed budget and activity base. Combine approved time, loaded labor rates, subcontractor invoices and direct expenses, then add shared costs using a documented allocation driver. Reconcile the totals to the ledger and separate changes in hours, staffing mix, rates and utilization before deciding what action to take.

Professional services cost analysis separates delivery labor, subcontractors, direct expenses and shared overhead so an engagement's cost can be explained. Match the same period and scope to the budget, then distinguish extra work from higher rates, a different staffing mix or unused capacity.

A larger cost total alone does not identify a problem. It may reflect more authorized delivery, so start with hours and project scope before asking a team to cut spending.

Assemble the engagement cost file

Use approved time records, a controlled labor-rate schedule, subcontractor invoices, the expense ledger and the engagement budget. Keep engagement ID, team, service line, period and cost category in the exports. Summarize each source to engagement and period before combining them, so multiple invoices do not multiply the time rows.

The rate schedule should state which employment costs it includes. The IRS fringe benefit overview treats fringe benefits as compensation for services; a salary-only rate can therefore omit meaningful employment costs. Use your actual cost policy rather than assuming that tax treatment determines a project reporting rate.

Match incurred delivery costs to the chosen reporting window. The IRS explanation of accrual accounting distinguishes expenses incurred from payments made. That distinction matters when a subcontractor delivers work before its invoice is paid, although the controller should determine the accounting treatment for your firm.

Keep revenue analysis separate until the cost totals are sound. Professional services revenue analysis covers that neighboring question; this worksheet focuses on the resources used to deliver the work.

Build the worksheet from approved inputs

Engagement cost = Delivery hours × Loaded hourly rate + Subcontractors + Direct expenses + Allocated overhead

Cost variance = Actual engagement cost − Budgeted engagement cost

The following illustrative US consulting firm uses one month's approved engagement records. Put the inputs in columns A through G, rows 2 through 4. Rates are approved weighted rates for the people on each engagement, and the overhead allocation rate is $25 per delivery hour, entered in N2.

Engagement Delivery hours Loaded rate (USD/hour) Subcontractors (USD) Direct expenses (USD) Cost budget (USD) Revenue (USD)
Atlas implementation 1,200 70 20,000 4,000 130,000 180,000
Beacon advisory 900 80 10,000 3,000 95,000 140,000
Cedar assessment 600 75 5,000 2,000 68,000 100,000
Total 2,700 35,000 9,000 293,000 420,000

Add columns H through L for labor, overhead, total cost, cost variance and contribution. Enter these formulas in row 2 and copy down through row 4:

H2 = B2*C2
I2 = B2*$N$2
J2 = SUM(D2:E2)+H2+I2
K2 = J2-F2
L2 = G2-J2

The overhead rate allocates a separately identified $67,500 pool across 2,700 delivery hours. None of the employment costs already included in loaded labor sit in that pool. Positive cost variance means spending above budget; negative means below budget.

Engagement Labor (USD) Overhead (USD) Total cost (USD) Cost variance (USD) Contribution (USD)
Atlas 84,000 30,000 138,000 8,000 42,000
Beacon 72,000 22,500 107,500 12,500 32,500
Cedar 45,000 15,000 67,000 -1,000 33,000
Total 201,000 67,500 312,500 19,500 107,500

For Atlas, $84,000 + $20,000 + $4,000 + $30,000 = $138,000. Its cost exceeds the $130,000 budget by $8,000. These are management contribution figures for the stated expense scope, rather than a claim about accounting net profit.

Reconcile the worksheet and explain the budget gap

The $201,000 labor total must agree with the labor distribution schedule. Subcontractors and direct expenses must tie to the selected ledger accounts. Allocated overhead must sum to its separate pool, while any unallocated expense remains visible in a reconciliation.

Two worksheet checks should return zero:

Cost check = SUM(J2:J4)-SUM(H2:H4)-SUM(D2:E4)-SUM(I2:I4)
Contribution check = SUM(G2:G4)-SUM(J2:J4)-SUM(L2:L4)

Here, $201,000 + $35,000 + $9,000 + $67,500 = $312,500. The actual total less the $293,000 budget produces $19,500 above budget. The engagement variances also sum to $8,000 + $12,500 − $1,000 = $19,500.

Beacon contributes the largest dollar overrun, but the file does not establish why. Compare actual delivery hours, staff grades, subcontractor scope and expenses with their budget assumptions. If authorized scope increased, revise the forecast separately from the original baseline rather than overwriting the evidence of the change.

For the broader relationship between earnings, cash and capacity, use professional services financial analysis. Keep this review focused on explaining delivery costs.

Measure utilization without hiding idle capacity

Use a separate capacity schedule alongside the engagement report. The following independent illustration holds payroll and available hours constant, changing only delivery hours. It is not an additional expense to add to the engagement table.

Capacity measure Base case Lower delivery case
Employment cost pool (USD) 300,000 300,000
Available hours 5,000 5,000
Delivery hours 3,750 3,000
Delivery utilization 75.0% 60.0%
Cost per delivery hour (USD) 80.00 100.00

Utilization is delivery hours divided by available hours. Cost per delivery hour is the cost pool divided by delivery hours. Thus the rate rises by 25.0% even though employment spending is unchanged; a rate increase in this view is a capacity effect.

Show the capacity schedule to practice leaders alongside the professional services business measures. Allocating every idle hour into project rates can make project delivery appear more expensive while concealing the staffing decision that caused the change.

Where it goes wrong

  • Multiplying source rows. Joining raw invoices directly to raw time entries repeats both costs.
  • Unrecorded rework. Client delivery hours excluded because they are not billable understate resource use.
  • Overhead counted twice. Loaded labor and the shared pool must have distinct cost scopes.
  • Different budget scope. Compare actual costs with a budget covering the same engagements, period and included expense categories.

Analyze your engagement exports in Covirage

Bring a sample of your own approved time, engagement budget and expense records: Covirage maps the columns, and its tools compute and check the cost comparisons. The external AI model explains the result with every figure traced to its rows. Create a free Covirage account, which takes about a minute, then set up your business and bring your file.

See project cost control for the supporting business use case.

Questions people ask

Should nonbillable time be included in engagement costs?

Include nonbillable time attributable to an engagement, such as agreed client support or rework. Track general training, business development and unassigned time separately. Whether those broader costs are allocated to engagements depends on the stated management reporting policy.

What is a loaded labor rate?

A loaded labor rate combines the employment costs included in your policy and divides them by a defined hours base. State whether it includes employer taxes, benefits and paid leave, and whether the denominator is available hours or delivery hours.

Why can cost per delivery hour rise when payroll stays flat?

A fixed payroll pool divided by fewer delivery hours produces a higher cost per delivery hour. That can indicate more unassigned capacity rather than higher compensation. Review available hours and non-delivery activity before attributing the change to pay rates.