How much of your team's capacity turns into billable work, where the rest goes, and who is falling short. Generated by AI via Proxuma Power BI MCP server.
How much of your team's capacity turns into billable work, where the rest goes, and who is falling short. 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
How much of your team's capacity turns into billable work, where the rest goes, and who is falling short. Generated by AI via Proxuma Power BI MCP server.
EVALUATE TOPN(10, SUMMARIZECOLUMNS('BI_Autotask_Time_Entries'[resource_name], "TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]), "BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours])), [BillableHours], DESC)
Overall hour distribution: 75.6% of all hours logged are billable, leaving 24.4% as non-billable overhead
EVALUATE
SUMMARIZE(
BI_Autotask_Time_Entries,
BI_Autotask_Time_Entries[time_entry_type],
"Entries", COUNT(BI_Autotask_Time_Entries[time_entry_id]),
"Hours", SUM(BI_Autotask_Time_Entries[hours_worked]),
"BillableHours", CALCULATE(
SUM(BI_Autotask_Time_Entries[hours_worked]),
BI_Autotask_Time_Entries[is_billable] = TRUE()),
"NonBillableHours", CALCULATE(
SUM(BI_Autotask_Time_Entries[hours_worked]),
BI_Autotask_Time_Entries[is_billable] = FALSE())
)
ORDER BY [Hours] DESC
Where hours are going: ticket work dominates at 65.6%, followed by project tasks at 20.1%
| Type | Entries | Hours | % of Total | Category |
|---|---|---|---|---|
| Ticket Work | 74,138 | 33,271 | 65.6% | Client-Facing |
| Project Task Work | 4,662 | 10,216 | 20.1% | Client-Facing |
| Internal / Non-Billable | 3,583 | 5,400 | 10.6% | Overhead |
| Service Call / Recurring | 407 | 1,864 | 3.7% | Client-Facing |
EVALUATE
SUMMARIZE(
BI_Autotask_Time_Entries,
BI_Autotask_Time_Entries[time_entry_type],
"Entries", COUNT(BI_Autotask_Time_Entries[time_entry_id]),
"Hours", SUM(BI_Autotask_Time_Entries[hours_worked]),
"BillableHours", CALCULATE(
SUM(BI_Autotask_Time_Entries[hours_worked]),
BI_Autotask_Time_Entries[is_billable] = TRUE()),
"NonBillableHours", CALCULATE(
SUM(BI_Autotask_Time_Entries[hours_worked]),
BI_Autotask_Time_Entries[is_billable] = FALSE())
)
ORDER BY [Hours] DESC
85.7% of hours are client-facing. Internal overhead and service calls account for the remaining 14.3%.
The five highest-producing resources by total logged hours, with work mix breakdown
| # | Resource | Total Hours | Ticket | Project | Internal | Entries |
|---|---|---|---|---|---|---|
| 1 | Resource A | 2,400 | 1,762 | 330 | 119 | 2,043 |
| 2 | Resource B | 2,136 | 691 | 693 | 586 | 2,236 |
| 3 | Resource C | 2,060 | 213 | 1,104 | 395 | 715 |
| 4 | Resource D | 2,050 | 1,839 | 7 | 205 | 4,513 |
| 5 | Resource E | 1,888 | 1,742 | 21 | 99 | 3,705 |
EVALUATE
TOPN(15,
SUMMARIZE(
BI_Autotask_Time_Entries,
BI_Autotask_Time_Entries[resource_name],
"TotalHours", SUM(BI_Autotask_Time_Entries[hours_worked]),
"BillableHours", CALCULATE(
SUM(BI_Autotask_Time_Entries[hours_worked]),
BI_Autotask_Time_Entries[is_billable] = TRUE())
),
[TotalHours], DESC
)
ORDER BY [TotalHours] DESC
The headline number is clear: 75.6% billable is close to the 80% target, but the real problem is not the percentage. It is the absolute hours. Across 84 active resources, the average weekly billable output is 10.9 hours per person. That is a third of the 32-hour target. Either the team has significant part-time or administrative resources inflating the headcount, or the workload is spread unevenly across a large roster.
Resource D is the efficiency model. With 2,050 total hours and 89.7% on ticket work, this person is consistently producing high-volume billable output. They have 4,513 time entries, which means short, frequent ticket touches. If this represents a dedicated service desk engineer, the pattern is exactly what you want. Worth understanding what makes their workflow so productive.
Resource B and Resource C tell a different story. Both have significant internal hours: 586 and 395 respectively. Resource B splits evenly between tickets and projects, but over a quarter of their time is non-billable internal work. Resource C is project-heavy (54%) with nearly 20% internal time. These two resources need a closer look. Is the internal time legitimate (training, documentation, tool maintenance), or is it unstructured downtime that could be reallocated?
The time entry type breakdown shows that ticket work at 65.6% is the primary revenue driver, with project tasks at 20.1%. That 85.7% client-facing rate is healthy for an MSP. The 10.6% internal overhead is within acceptable range, but only if it is being used productively. Track the internal time by category to find out.
The gap between total hours worked (50,752) and capacity (84 resources at 40h/week over the period) suggests many of these resources are part-time, specialized, or logging time inconsistently. Cleaning up the active resource definition would give a more accurate utilization picture.
5 priorities based on the findings above
84 resources averaging 10.9 billable hours per week means the denominator is inflated. Filter down to full-time, billable-role engineers only. If you have 40 full-time techs, the weekly average jumps to roughly 22.7 hours. Still below target, but a more honest starting point. You cannot manage utilization against a headcount that includes dispatchers, managers, and part-time resources.
10.6% of all logged hours are internal. That is not automatically a problem, but you need to know what it covers. Break it down by time entry sub-type or notes. If a large chunk is meetings, admin overhead, or uncategorized time, you have a scheduling problem. If it is training and documentation, it is an investment. The difference between productive and wasted internal time is visibility, not volume.
Resource B has 586 internal hours (27.4%) and Resource C has 395 internal hours (19.2%). Both are above the team average. Pull their internal time entries and categorize them. If these resources are in leadership or training roles, the hours make sense. If they are billable engineers spending a quarter of their time on non-client work, you are leaving revenue on the table.
A flat 32-hour target works for service desk engineers, but project leads, team leads, and senior escalation engineers have different time profiles. Set role-based targets: 32h for L1/L2 techs, 24h for project engineers (who have planning overhead), 16h for team leads. Measure everyone against a realistic benchmark and the data becomes actionable.
Both are logging 90%+ on ticket work with high entry volumes. Resource D has 4,513 entries across 2,050 hours, averaging 27 minutes per entry. That is a fast, high-throughput workflow. Study what tools, templates, or processes they use. If you can replicate their pattern across even five more engineers, you recover hundreds of billable hours per quarter.
All time entries come from Autotask PSA. When a technician logs time against a ticket, project task, or internal activity, it creates a record in the BI_Autotask_Time_Entries table. Proxuma Power BI pulls this data automatically and the AI queries it using DAX to calculate totals, averages, and breakdowns.
Billable percentage and utilization are two different things. Billable % says 75.6% of logged hours are billable. Utilization measures those billable hours divided by total available capacity. If resources are logging fewer hours than they have available, the billable percentage can be high while absolute utilization is low. The fix is either more hours logged or fewer resources counted.
Industry benchmarks vary, but most profitable MSPs target 28-32 billable hours per week for full-time service desk engineers. That leaves 8-12 hours for meetings, training, documentation, and admin. Project engineers typically target 24-28 hours due to planning and coordination overhead. Anything below 24 hours for a full-time billable role is worth investigating.
Add a date filter to the DAX queries using the date_worked column. For example, add FILTER(BI_Autotask_Time_Entries, BI_Autotask_Time_Entries[date_worked] >= DATE(2026,1,1)) to limit results to the current year. For weekly tracking, filter to the last 7 or 14 days.
Yes. Connect Proxuma Power BI to your Autotask PSA 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