Resource-level billable hour analysis against the 80% target. Built from Autotask PSA time entries, measured on logged hours. Generated by AI via Proxuma Power BI MCP server.
Resource-level billable hour analysis against the 80% target. Built from Autotask PSA time entries, measured on logged hours. 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: Operations managers, service delivery leads, and MSP owners managing capacity
How often: Weekly for scheduling, monthly for utilization reviews, quarterly for staffing decisions
Resource-level billable hour analysis against the 80% target. Built from Autotask PSA time entries, measured on logged hours. Generated by AI via Proxuma Power BI MCP server.
Of the top 15 resources by total hours logged, 8 meet or exceed the 80% billable target when measured against their actual logged hours. The remaining 7 fall short, with gaps ranging from 2.5 percentage points to over 27 percentage points.
The split is close to even, but the resources who miss the target tend to miss it by a wide margin. That skews the overall portfolio billable ratio down to 72.4%, well below the 80% goal.
EVALUATE
SUMMARIZECOLUMNS(
'BI_Autotask_Time_Entries'[resource_name],
"BillablePct", [Billable % (Autotask Capacity)],
"AchievementBillable", [Target - Achievement - Billable]
)
ORDER BY [BillablePct] ASC
| Resource | Total Hours | Billable | Rate |
|---|---|---|---|
| Dr. Amber Ayala DVM | 2,400 | 1,749 | 72.9% |
| James Li | 2,136 | 1,303 | 61.0% |
| Maxwell Reed | 2,050 | 1,838 | 89.6% |
| Andrew Roberts | 1,888 | 1,527 | 80.9% |
| Jennifer King | 1,585 | 1,228 | 77.5% |
| Gregory Horn | 1,505 | 957 | 63.6% |
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]), "NonBillable", SUM('BI_Autotask_Time_Entries'[Non billable Hours]), "TicketCount", DISTINCTCOUNT('BI_Autotask_Time_Entries'[ticket_id])), [TotalHours], DESC)
The Autotask [Billable % (Autotask Capacity)] measure divides billable hours by the total available capacity for each resource. That capacity figure includes every working hour in the period, whether or not the resource logged any time at all.
In practice, this produces billable percentages below 0.25% for all 77 resources. The "Target - Achievement - Billable" measure returns values around -0.80, meaning every resource appears to miss the 80% target by nearly the full 80%.
That is technically correct, but not useful. A resource who logs 40 hours in a week with 30 of them billable is performing at 75%. The capacity-based view would show that same resource at 1.5% because the denominator includes 2,080 annual hours.
The fix: use DIVIDE(SUM([Billable Hours]), SUM([hours_worked])) to get the ratio of billable to logged hours. This gives you an actionable percentage that reflects how each person spends the time they actually work.
These resources consistently bill above the 80% target. They represent the benchmark your team should aim for.
| Resource | Total Hrs | Billable % | Surplus |
|---|---|---|---|
| Resource N | 1,362 | 97.1% | +17.1pp |
| Resource M | 1,418 | 94.7% | +14.7pp |
| Resource L | 1,433 | 91.3% | +11.3pp |
| Resource D | 2,050 | 89.6% | +9.6pp |
| Resource E | 1,888 | 80.9% | +0.9pp |
| Resource O | 1,344 | 80.9% | +0.9pp |
Resource N stands out at 97.1% billable. Nearly every hour they log is client-facing work. Resources D and E also deserve recognition: both log high volumes (2,050 and 1,888 hours) while keeping their billable ratio above 80%.
EVALUATE
ROW(
"TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]),
"BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours]),
"BillableRatio", DIVIDE(
SUM('BI_Autotask_Time_Entries'[Billable Hours]),
SUM('BI_Autotask_Time_Entries'[hours_worked])
),
"ResourceCount", DISTINCTCOUNT('BI_Autotask_Time_Entries'[resource_name])
)
Resources below 60% billable spend more time on internal work than on client-facing tasks. This is not always a problem. Some roles (team leads, project managers, internal IT) naturally have a lower billable ratio. But if these resources are supposed to be on the tools, the gap deserves a conversation.
| Resource | Total Hrs | Billable % | Gap | Possible Cause |
|---|---|---|---|---|
| Resource C | 2,060 | 55.6% | -24.4pp | High volume, low billable ratio |
| Resource I | 1,554 | 52.7% | -27.3pp | Internal project load? |
Resource C logged 2,060 hours total but only 55.6% went to billable work. That is 916 hours of internal time. If even half of those hours could shift to billable work, the revenue impact is significant.
Resource I has the widest gap at 27.3 percentage points below target. Check whether this resource carries internal project responsibilities that explain the split, or whether billable work is simply not being routed to them.
All 77 resources show billable percentages below 0.25% when measured against Autotask Capacity. This is because the denominator includes total available hours, not logged hours. Switch to the logged-hours ratio (DIVIDE(Billable Hours, hours_worked)) for any target-tracking dashboard or report.
Resources C and I both fall below 60% billable on logged hours. Together they logged over 3,600 hours with nearly half going to non-billable work. If their roles are supposed to be billable, that gap represents a substantial revenue loss. If their roles are intentionally internal-facing, they should be excluded from the 80% target entirely.
Resources D, E, L, M, N, and O all bill above 80%. Resource N leads at 97.1%. These are your most efficient billers. Use their work patterns as a reference when coaching resources who fall short. Also make sure they are not overloaded: a sustained 95%+ billable rate leaves no room for training, documentation, or process improvement.
1. Replace the capacity-based billable measure in your dashboards. Use DIVIDE(SUM([Billable Hours]), SUM([hours_worked])) as the default. The current capacity-based view gives the impression that everyone is failing, which kills the usefulness of the metric.
2. Have a conversation with Resources C and I. Both are below 60% billable. Check whether their internal work is intentional (team lead duties, internal projects) or whether billable tickets simply are not being assigned to them. Reclassify non-billable resources so your target tracking stays clean.
3. Set up a weekly automated check. Run the DAX query in Section 3.0 every Monday morning. Any resource that drops below 70% for two consecutive weeks should get a one-on-one to review their workload distribution.
4. Watch the resources at 95%+ billable. Resources N and M are highly efficient, but sustained rates above 95% typically mean no time for skill development, documentation, or mentoring. Make sure they get scheduled non-billable time for those activities.
5. Exclude non-billable roles from the target. If certain resources (dispatchers, managers, internal IT) are not supposed to hit 80%, exclude them from the tracking. A smaller, cleaner dataset produces better insights than one padded with people who were never expected to bill.
The built-in Autotask Capacity measure divides billable hours by total available capacity (typically 2,080 hours per year per resource). If a resource logs 1,500 hours total and 1,100 are billable, Autotask shows 52.9% against capacity instead of 73.3% against logged hours. The logged-hours method gives you a more useful picture of how time is actually spent.
Most MSPs target 75-85% billable for technical resources. 80% is the most common benchmark. This leaves 20% for internal meetings, training, documentation, and admin work. Resources in leadership or internal-only roles should have a different (or no) billable target.
Add a date filter to the DAX query using your Power BI date table. For example, wrap the SUMMARIZECOLUMNS in a CALCULATETABLE with a filter on the date column. For weekly tracking, filter on ISO week number or a specific date range. The queries in this report use the full available date range by default.
No. Including non-billable roles drags down the average and gives a misleading picture of your service team's performance. Exclude dispatchers, service managers, and internal IT staff from the 80% target. Track their productivity separately with different metrics that match their actual responsibilities.
Yes. Connect Proxuma Power BI to your Autotask account, 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 data, and produces a report like this in under fifteen minutes.
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