Where does your spend go? This report separates labour cost from material charges across 279 projects, with breakdowns by client and project type. Generated by AI via the Proxuma Power BI MCP server.
Where does your spend go? This report separates labour cost from material charges across 279 projects, with breakdowns by client and project type. Generated by AI via the Proxuma Power BI MCP server.
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: MSP owners, finance leads, and operations managers tracking profitability
How often: Monthly for financial reviews, quarterly for strategic planning, on-demand for pricing decisions
Where does your spend go? This report separates labour cost from material charges across 279 projects, with breakdowns by client and project type. Generated by AI via the Proxuma Power BI MCP server.
The headline figures reflect a business generating solid project margins. Labour cost of $724,910 against total revenue of $1,441,162 produces a 49.7% overall margin. For an MSP running managed services and project work, that sits comfortably in the target range of 45–55%.
The charges cost of $0 is the notable gap. This does not mean no materials were purchased. It means expense cost tracking in the PSA has not been configured yet. The presence of $7,583 in charges revenue confirms that materials are being billed to clients, but the cost side is missing. Enabling this closes the loop and gives you true project profitability figures.
EVALUATE ROW("TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]), "BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours]), "TotalCharges", SUM('BI_Autotask_Charges'[extended_price]), "TotalRevenue", SUM('BI_Autotask_Billing_Items'[total_amount]))
Lewis LLC stands apart from the rest, consuming $126,812 in labour cost — nearly 1.75x the second-largest client. At a 44.4% margin, Lewis is profitable but sits below the overall average. Craig-Huynh, by contrast, turns $73,207 in labour into a 59% margin, making it the highest-margin account in this group. Wu-Jackson is the one client to watch closely: a 38.6% margin on $24,467 in labour cost is below the threshold where the work typically covers overhead.
| Company | Labour Cost | Revenue | Margin | Status |
|---|---|---|---|---|
| Lewis LLC | $126,812 | $227,918 | 44.4% | Below avg |
| Craig-Huynh | $73,207 | $178,449 | 59.0% | Excellent |
| Little Group | $46,640 | $89,503 | 47.9% | Good |
| Doyle-Contreras | $41,346 | $77,269 | 46.5% | Good |
| Rivers, Rogers & Mitchell | $32,485 | $65,219 | 50.2% | Good |
| Clements, Pham & Garcia | $32,011 | $59,583 | 46.3% | Below avg |
| Burke, Armstrong & Morgan | $27,706 | $49,122 | 43.6% | Below avg |
| Wu-Jackson | $24,467 | $39,867 | 38.6% | Low margin |
| Wall PLC | $20,805 | $42,108 | 50.6% | Good |
| Lee-Dalton | $18,285 | $39,218 | 53.4% | Good |
EVALUATE
TOPN(
10,
SUMMARIZECOLUMNS(
Project[Company],
"Labour_Cost", [Labour Cost],
"Revenue", [Labour Revenue] + [Charges Revenue],
"Margin_Pct", DIVIDE(
([Labour Revenue] + [Charges Revenue]) - [Labour Cost],
([Labour Revenue] + [Charges Revenue])
)
),
[Labour_Cost], DESC
)
Client projects make up the bulk of activity: $692,970 in labour cost generating $1,360,592 in combined revenue. Internal projects are smaller but noteworthy — $31,621 spent on internal work that generated $79,809 in labour revenue, which likely reflects time logged to internal projects being billed back or capitalised. Proposal work at $319 is negligible in cost terms but worth tracking to understand pre-sales investment.
| Project Type | Labour Cost | Labour Revenue | Charges Revenue | Total Revenue | Margin |
|---|---|---|---|---|---|
| Client | $692,970 | $1,353,009 | $7,583 | $1,360,592 | 49.1% |
| Internal | $31,621 | $79,809 | $0 | $79,809 | 60.4% |
| Proposal | $319 | $761 | $0 | $761 | 58.1% |
The internal project margin of 60.4% is higher than client projects. This is expected in a demo dataset where internal time entries may be valued at cost-rate rather than client billing rates. In production, internal projects typically show 0% margin since they are not billed externally — so this figure warrants confirming how your PSA is configured.
EVALUATE
SUMMARIZECOLUMNS(
Project[ProjectType],
"Labour_Cost", [Labour Cost],
"Labour_Revenue", [Labour Revenue],
"Charges_Revenue", [Charges Revenue],
"Total_Revenue", [Labour Revenue] + [Charges Revenue],
"Margin_Pct", DIVIDE(
([Labour Revenue] + [Charges Revenue]) - [Labour Cost],
([Labour Revenue] + [Charges Revenue])
)
)
ORDER BY [Labour_Cost] DESC
The monthly picture shows significant variation. April and March 2025 were the two heaviest months at $226,308 and $271,010 respectively. This kind of spike usually indicates large project deliveries or onboarding work for major clients. July and September also show elevated spend above $130K. The recent months of Q4 2025 and Q1 2026 have normalised considerably, with January 2026 at $53,344 representing more typical run-rate activity.
Feb 2026 at $10,652 is a partial month captured at the time of report generation, so it should not be compared directly to full months.
* Partial month at time of report generation
EVALUATE
CALCULATETABLE(
SUMMARIZECOLUMNS(
'Date'[YearMonth],
'Date'[YearMonthSort],
"Labour_Cost", [Labour Cost]
),
DATESINPERIOD(
'Date'[Date],
LASTDATE('Date'[Date]),
-12,
MONTH
)
)
ORDER BY 'Date'[YearMonthSort] DESC
The $0 charges cost against $7,583 in charges revenue means your project profitability figures are overstated. Every MSP that procures hardware or software through their PSA should have cost-of-goods mapped to project charges. Enabling this in ConnectWise takes one configuration change in the procurement module. Until then, treat all project margin figures as approximate, not exact.
At $126,812, Lewis LLC is your single largest labour consumer by a significant margin. The 44.4% margin is acceptable but below the portfolio average. This level of concentration warrants a client-level review: are rates current, is scope creep occurring on individual projects, and does the revenue trajectory justify the delivery commitment? A single client representing 17.5% of labour creates meaningful exposure if the relationship changes.
Wu-Jackson generates $24,467 in labour cost against only $39,867 in revenue. At 38.6%, this is the weakest margin in the top-10 list. For context, most MSPs target 45%+ on project work after accounting for overhead. A review of the engagement scope, billing rates, and time estimates versus actuals would likely surface one of three issues: under-pricing, scope creep without change orders, or inefficient delivery. This client may need a contract renegotiation at the next renewal.
With a 59% margin on $73,207 in labour cost, Craig-Huynh represents the kind of client relationship to replicate. The combination of meaningful scale and high margin suggests well-scoped work, appropriate billing rates, and efficient delivery. Understanding what makes this engagement different — project structure, client behaviour, team assigned, or contract type — can inform how you approach pricing and scoping for similar clients.
Across 279 projects, the blended margin of 49.7% is a strong result. The mix of client, internal, and proposal work naturally pulls the average in different directions, but the client project margin of 49.1% is what matters most commercially. With charges cost tracking added and a few below-average client relationships addressed, sustainable margins above 50% across the portfolio are well within reach.
Labour cost is the internal cost of your team's time, typically calculated from employee hourly rates or burden costs multiplied by hours logged in the PSA. Charges cost covers material expenses billed through the PSA: hardware, software licences, third-party services, and similar items purchased for a project. Both combine to give you the true total cost of delivering a project, which you subtract from revenue to get your actual margin.
Charges cost tracks the cost side of any products or expenses entered as project charges in your PSA. If cost fields on your products are empty, or if the procurement module is not linked to project charges, the cost value will be zero. The fix is to ensure product records in ConnectWise carry a cost price, not just a sales price. Once that is in place, the charges cost measure will populate automatically from historical data.
Industry benchmarks vary by project type, but most MSPs aim for 45–55% gross margin on project labour. Below 40% typically means the work is not covering overhead and contributing to profit. Above 60% on large projects can indicate pricing power or operational efficiency. Internal projects are typically excluded from margin analysis since they are not revenue-generating. The right target depends on your overhead structure, team rates, and market positioning.
Start with the clients below your margin threshold and work through why. Common causes are fixed-price contracts where actual hours exceeded estimates, billing rates that have not been updated, or scope expanding without change orders. Then look at high-margin clients to understand what those engagements share. Finally, enable charges cost tracking so your margin figures account for the full cost of delivery, not just labour.
Yes. The interactive dashboard linked at the top of this page supports filtering by client, project type, date range, and individual project. For ad hoc analysis, the DAX queries in each section of this report can be modified to filter on a specific project name or date using a CALCULATETABLE with a FILTER expression. Proxuma Power BI also includes pre-built project profitability drill-through pages accessible from the main dashboards.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started