“Resource Cost vs Revenue: Per-Resource Profitability Analysis”
Autotask PSA Datto RMM Datto Backup Microsoft 365 SmileBack HubSpot IT Glue All reports
AI-GENERATED REPORT
You searched for:

Resource Cost vs Revenue: Per-Resource Profitability Analysis

Which team members generate more revenue than they cost, and where non-billable hours are eroding your margin. Generated by AI via Proxuma Power BI MCP server.

Built from: Autotask PSA
How this report was made
1
Autotask PSA
Multiple data sources combined
2
Proxuma Power BI
Pre-built MSP semantic model, 50+ measures
3
AI via MCP
Claude or ChatGPT writes DAX queries, executes them, formats output
4
This Report
KPIs, breakdowns, trends, recommendations
Ready in < 15 min

Resource Cost vs Revenue: Per-Resource Profitability Analysis

Which team members generate more revenue than they cost, and where non-billable hours are eroding your margin. Generated by AI via 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

Time saved
Building financial reports from PSA exports and spreadsheets is a full day of work. This report delivers it in minutes.
Margin visibility
Revenue numbers alone do not tell the story. This report connects revenue to cost for true profitability.
Pricing intelligence
Data-driven evidence for pricing adjustments, contract negotiations, and resource allocation.
Report categoryFinancial & Revenue
Data sourceAutotask PSA · Datto RMM · Datto Backup · Microsoft 365 · SmileBack · HubSpot · IT Glue
RefreshReal-time via Power BI
Generation timeUnder 15 minutes
AI requiredClaude, ChatGPT or Copilot
AudienceMSP owners, finance leads
Where to find this in Proxuma
Power BI › Financial › Resource Cost vs Revenue: Per-Resourc...
What you can measure in this report
Summary Metrics
Resource Cost vs Estimated Billable Revenue — Top 10
Cost Recovery by Resource
Non-Billable Cost Burden
Key Findings
What Should You Do With This Data?
Frequently Asked Questions
TOTAL LABOR COST
TOTAL REVENUE
AVG INTERNAL COST
REVENUE / COST RATIO
AI-Generated Power BI Report
Resource Cost vs Revenue:
Per-Resource Profitability Analysis

Which team members generate more revenue than they cost, and where non-billable hours are eroding your margin. Generated by AI via Proxuma Power BI MCP server.

Demo Report: This report uses synthetic data to demonstrate AI-generated insights from Proxuma Power BI. The structure, DAX queries, and analysis reflect real MSP data patterns.
1.0 Summary Metrics
TOTAL LABOR COST
$5.8M
50,752 hrs × $115/hr avg
TOTAL REVENUE
$17.6M
From billing items (incl. products)
AVG INTERNAL COST
$115/hr
Uniform across demo resources
REVENUE / COST RATIO
3.0x
$17.6M ÷ $5.8M
View DAX Query — Summary Metrics
EVALUATE
ROW(
    "TotalHoursWorked", SUM('BI_Autotask_Time_Entries'[hours_worked]),
    "TotalBillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours]),
    "AvgInternalCost", AVERAGE('BI_Autotask_User_Details'[internal_cost]),
    "TotalLaborCost", SUMX(
        VALUES('BI_Autotask_User_Details'[resource_name]),
        CALCULATE(VALUES('BI_Autotask_User_Details'[internal_cost]))
            * CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked]))
    )
)
What are these DAX queries? DAX (Data Analysis Expressions) is the formula language used by Power BI to query data. Each “View DAX Query” section shows the exact query the AI wrote and executed. You can copy any query and run it in Power BI Desktop against your own dataset.
2.0 Resource Cost vs Estimated Billable Revenue — Top 10

Each resource's total labor cost (hours × $115/hr) compared to estimated billable revenue (billable hours × $115/hr). Sorted by total hours worked.

Dr. Jessica Adams DVM
$276K cost
$201K revenue
Sarah Martinez
$246K cost
$150K revenue
API Integration
$236K cost
$211K revenue
Michael Brown
$217K cost
$176K revenue
Total Labor Cost Estimated Billable Revenue
ResourceTotal HoursBillableNon-BillableUtil %
Dr. Amber Ayala DVM2,4001,74965172.9%
James Li2,1361,30383361.0%
Kevin Allen2,0601,14591555.6%
Maxwell Reed2,0501,83821389.6%
Andrew Roberts1,8881,52736180.9%
View DAX Query — Resource Cost vs Revenue
EVALUATE TOPN(15, SUMMARIZECOLUMNS('BI_Autotask_Time_Entries'[resource_name], "TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]), "BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours]), "NonBillableHours", SUM('BI_Autotask_Time_Entries'[Non billable Hours]), "EntryCount", COUNTROWS('BI_Autotask_Time_Entries')), [TotalHours], DESC)
3.0 Cost Recovery by Resource

What percentage of each resource's labor cost is recovered through billable hours. 100% means the resource's billable revenue equals their total cost. Above 100% would mean they bill out at a higher rate than their internal cost.

API Integration
89.6%
Michael Brown
80.9%
Emily Davis
77.5%
James Wilson
76.0%
Dr. Jessica Adams
72.9%
Robert Thomas
65.0%
Gregory Horn
63.6%
Sarah Martinez
61.0%
David Chen
55.6%
Lisa Anderson
52.7%
Reading this chart: Cost recovery equals utilization in this dataset because all resources share the same $115/hr internal rate. In a real environment with varying bill rates, a resource at 60% utilization could still recover 100%+ of their cost if their bill rate is high enough. The key metric is whether billable revenue covers labor cost, not utilization alone.
View DAX Query — Cost Recovery Ratio
EVALUATE
ADDCOLUMNS(
    VALUES('BI_Autotask_User_Details'[resource_name]),
    "cost_recovery_pct", DIVIDE(
        CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])),
        CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked])),
        0
    ),
    "total_cost",
        CALCULATE(VALUES('BI_Autotask_User_Details'[internal_cost]))
        * CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked])),
    "billable_revenue",
        CALCULATE(VALUES('BI_Autotask_User_Details'[internal_cost]))
        * CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours]))
)
ORDER BY [cost_recovery_pct] DESC
4.0 Non-Billable Cost Burden

The dollar value of non-billable hours per resource. This is the direct cost of time that generates zero client-facing revenue.

ResourceNon-Billable HrsCost @ $115/hr% of Total HoursBurden
David Chen 915 $105,225 44.4%
Sarah Martinez 833 $95,795 39.0%
Lisa Anderson 735 $84,525 47.3%
Dr. Jessica Adams DVM 651 $74,865 27.1%
Robert Thomas 623 $71,645 35.0%
Gregory Horn 547 $62,905 36.4%
James Wilson 446 $51,290 24.0%
Michael Brown 361 $41,515 19.1%
Emily Davis 357 $41,055 22.5%
API Integration 213 $24,495 10.4%
View DAX Query — Non-Billable Cost Burden
EVALUATE
ADDCOLUMNS(
    VALUES('BI_Autotask_User_Details'[resource_name]),
    "non_billable_hours",
        CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked]))
        - CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])),
    "non_billable_cost",
        (CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked]))
        - CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])))
        * CALCULATE(VALUES('BI_Autotask_User_Details'[internal_cost])),
    "pct_non_billable", DIVIDE(
        CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked]))
        - CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])),
        CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked])),
        0
    )
)
ORDER BY [non_billable_cost] DESC
5.0 Key Findings

At the portfolio level, $17.6M in revenue against $5.8M in labor cost gives you a 3.0x revenue-to-cost ratio. That is healthy. But the aggregate number hides significant variance at the resource level, and the labor cost calculation here only covers internal hourly rates. It does not include benefits, tooling, or overhead.

No resource fully recovers their labor cost through billable hours alone. The best performer, API Integration, recovers 89.6% of its cost through billable time. This is expected in an MSP: internal meetings, training, admin, and project work consume hours that do not appear on client invoices. The remaining revenue comes from managed services contracts, product margin, and flat-rate agreements that are not tied to individual time entries.

The three resources with the lowest cost recovery are Lisa Anderson at 52.7%, David Chen at 55.6%, and Sarah Martinez at 61.0%. Lisa Anderson logs 735 non-billable hours, costing $84,525. David Chen has 915 non-billable hours at $105,225. These are not small numbers. If even a quarter of those hours can be converted to billable work or eliminated, the margin improvement is immediate.

On the other end, Michael Brown at 80.9% and Emily Davis at 77.5% show that high utilization is achievable. Their non-billable cost burden is under $42K each, roughly half of what the bottom-performing resources carry.

6.0 What Should You Do With This Data?

5 priorities based on the findings above

1

Audit David Chen's and Lisa Anderson's non-billable hours

David Chen has 915 non-billable hours ($105K) and Lisa Anderson has 735 non-billable hours ($85K). Together that is $190K in labor cost generating zero revenue. Pull their time entry categories. Are they logging internal project work that should be billable? Are they stuck in meetings that could be shorter or skipped? Find the top three non-billable categories and decide whether to reclassify, reduce, or accept the cost.

2

Review Sarah Martinez's workload mix

Sarah logs 2,136 total hours but only 1,303 are billable, giving her a 61.0% utilization rate and a $96K gap between cost and billable revenue. That is the second-highest gap on the team. If she is spending 833 hours on internal work, the question is whether that work is necessary or whether it can be distributed. If it is necessary, it should be budgeted as overhead rather than treated as a utilization problem.

3

Replicate the API Integration resource model

API Integration has 89.6% utilization and only 213 non-billable hours. It is the most cost-efficient resource in the dataset. If this represents automated or semi-automated billable work, expanding this model could improve margin without adding headcount. Look at what makes this resource different and whether the pattern is replicable.

4

Set utilization targets with cost recovery in mind

Most MSPs set utilization targets around 70-80%. This report shows that at a uniform $115/hr internal rate, even 80% utilization leaves a 20% cost gap that must be covered by non-hourly revenue. If your bill rates vary by resource, run this analysis with actual bill rates to see the true cost recovery picture. A resource billing at $175/hr only needs 66% utilization to recover their $115/hr cost.

5

Track this monthly to catch negative trends early

Run this report monthly and watch for two signals: resources whose utilization drops below 60%, and resources whose non-billable hours are increasing quarter over quarter. Both indicate a workload problem that will eventually show up in margin. Michael Brown and Emily Davis are currently the benchmarks to measure others against.

7.0 Frequently Asked Questions
Where does the cost and revenue data come from?

Labor cost is calculated from each resource's internal cost rate in Autotask multiplied by their total hours worked. Billable revenue is estimated by multiplying billable hours by the same internal rate. In a production environment, you would use actual bill rates for the revenue calculation. The $17.6M total revenue figure comes from billing items in the PSA, which includes managed services contracts and product revenue beyond hourly billing.

Why does every resource show a negative cost gap?

Because no resource is 100% billable. Every team member spends some hours on internal work, meetings, training, and admin. The gap represents the labor cost of those non-billable hours. In a healthy MSP, this gap is covered by managed services revenue, product margin, and flat-rate contracts that are not tied to individual time entries. A negative gap is normal. A large and growing gap is a problem.

What utilization rate should I target?

Most MSPs target 70-80% utilization for technical staff. Below 60% typically indicates a workload problem. Above 85% can lead to burnout and quality issues. The right target depends on your billing model: if you bill mostly on fixed-fee contracts, utilization matters less than throughput and resolution quality.

Can I see cost vs revenue for a specific time period?

Yes. Add a date filter to the DAX queries using BI_Autotask_Time_Entries[date_worked]. For monthly tracking, filter to the current month. For quarterly reviews, use a three-month window. Comparing quarters side by side shows whether cost recovery is trending up or down.

Can I run this report against my own data?

Yes. Connect Proxuma Power BI to your Autotask PSA, add an AI tool (Claude, ChatGPT, or Copilot) via MCP, and ask the same question. The AI writes the DAX queries, runs them against your real resource data, and produces a report like this in under fifteen minutes.

Generate this report from your own data

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