“Technician Performance Trend: Work Breakdown and Client Spread per Resource”
Autotask PSA Datto RMM Datto Backup Microsoft 365 SmileBack HubSpot IT Glue All reports
AI-GENERATED REPORT
You searched for:

Technician Performance Trend: Work Breakdown and Client Spread per Resource

How each technician splits their time between tickets, projects, and internal work. Which resources handle the most clients. 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

Technician Performance Trend: Work Breakdown and Client Spread per Resource

How each technician splits their time between tickets, projects, and internal work. Which resources handle the most clients. 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

Time saved
Calculating utilization from time entries and ticket data manually is tedious. This report does it automatically.
Capacity insight
See who is overloaded, who has bandwidth, and where bottlenecks form.
Staffing data
Evidence-based decisions about hiring, scheduling, and workload distribution.
Report categoryResource & Capacity
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
AudienceOperations managers, service delivery leads
Where to find this in Proxuma
Power BI › Resources › Technician Performance Trend: Work Br...
What you can measure in this report
Summary Metrics
Top 10 Resources by Total Hours — Work Type Breakdown
Detailed Hours Breakdown — Top 10 Resources
Client Spread per Technician — Top 5
Analysis
What Should You Do With This Data?
Frequently Asked Questions
ACTIVE RESOURCES
TOTAL HOURS
BILLABLE %
AVG CSAT
AI-Generated Power BI Report
Technician Performance Trend:
Work Breakdown and Client Spread per Resource

How each technician splits their time between tickets, projects, and internal work. Which resources handle the most clients. 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
ACTIVE RESOURCES
Maxwell Reed (4,513)
Most time entries
TOTAL HOURS
Maxwell Reed (89.6%)
Highest billable %
BILLABLE %
Dr. Amber Ayala (2,400)
Highest total hours
AVG CSAT
87.7%
Portfolio average
View DAX Query — Summary Metrics
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]), "NonBillable", SUM('BI_Autotask_Time_Entries'[Non billable Hours]), "EntryCount", COUNTROWS('BI_Autotask_Time_Entries')), [TotalHours], DESC)
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 Top 10 Resources by Total Hours — Work Type Breakdown

Segmented bars showing each resource's ticket hours, project hours, and internal hours as a proportion of their total

Resource A
1,762
330
2,400
Resource B
691
693
586
2,136
Resource C
1,104
395
2,060
Resource D
1,839
2,050
Resource E
1,742
1,888
Resource F
1,235
1,862
Resource G
616
601
435
1,780
Resource H
1,421
1,585
Resource I
1,244
272
1,554
Resource J
968
537
1,505
Ticket hours Project hours Internal hours
View DAX Query — Resource Work Breakdown
EVALUATE
TOPN(15,
    SUMMARIZE(
        BI_Autotask_Time_Entries,
        BI_Autotask_Time_Entries[resource_name],
        "TotalHours", SUM(BI_Autotask_Time_Entries[hours_worked]),
        "TicketHours", CALCULATE(SUM(BI_Autotask_Time_Entries[hours_worked]),
            BI_Autotask_Time_Entries[time_entry_type] = 2),
        "ProjectHours", CALCULATE(SUM(BI_Autotask_Time_Entries[hours_worked]),
            BI_Autotask_Time_Entries[time_entry_type] = 6),
        "InternalHours", CALCULATE(SUM(BI_Autotask_Time_Entries[hours_worked]),
            BI_Autotask_Time_Entries[time_entry_type] = 10)
    ),
    [TotalHours], DESC
)
ORDER BY [TotalHours] DESC
3.0 Detailed Hours Breakdown — Top 10 Resources

The exact numbers behind the bars, including time entry count and work type classification per resource

ResourceTotal HoursTicketProjectInternalEntriesProfile
Resource A2,4001,7623301192,043Ticket-focused
Resource B2,1366916935862,236Balanced
Resource C2,0602131,104395715Project-heavy
Resource D2,0501,83972054,513Ticket-focused
Resource E1,8881,74221993,705Ticket-focused
Resource F1,8622271,235152672Project-heavy
Resource G1,780616601435733Balanced
Resource H1,5851,42184751,278Ticket-focused
Resource I1,5541,24437272850Ticket-focused
Resource J1,50596805373,398High internal
View DAX Query — Detailed Hours Breakdown
EVALUATE
TOPN(15,
    SUMMARIZE(
        BI_Autotask_Time_Entries,
        BI_Autotask_Time_Entries[resource_name],
        "TotalHours", SUM(BI_Autotask_Time_Entries[hours_worked]),
        "TicketHours", CALCULATE(SUM(BI_Autotask_Time_Entries[hours_worked]),
            BI_Autotask_Time_Entries[time_entry_type] = 2),
        "ProjectHours", CALCULATE(SUM(BI_Autotask_Time_Entries[hours_worked]),
            BI_Autotask_Time_Entries[time_entry_type] = 6),
        "InternalHours", CALCULATE(SUM(BI_Autotask_Time_Entries[hours_worked]),
            BI_Autotask_Time_Entries[time_entry_type] = 10),
        "EntryCount", COUNT(BI_Autotask_Time_Entries[time_entry_id])
    ),
    [TotalHours], DESC
)
ORDER BY [TotalHours] DESC
4.0 Client Spread per Technician — Top 5

Resources ranked by the number of unique companies they have logged time against. A high count signals a generalist or a dispatcher role. A low count may indicate specialization or a dedicated account model.

ResourceUnique ClientsTotal HoursTime EntriesSpread
Resource A1461,4184,841Very Wide
Resource B1431,2906,978Very Wide
Resource C1431,5053,398Very Wide
Resource D1371,2853,739Wide
Resource E1371,3624,488Wide
View DAX Query — Client Spread per Technician
EVALUATE
TOPN(15,
    SUMMARIZE(
        BI_Autotask_Time_Entries,
        BI_Autotask_Time_Entries[resource_name],
        "UniqueCompanies", DISTINCTCOUNT(BI_Autotask_Time_Entries[company_name]),
        "TotalHours", SUM(BI_Autotask_Time_Entries[hours_worked]),
        "TotalEntries", COUNT(BI_Autotask_Time_Entries[time_entry_id])
    ),
    [UniqueCompanies], DESC
)
ORDER BY [UniqueCompanies] DESC
5.0 Analysis

The top 10 resources account for a combined 18,820 hours, which is 37% of the total 50,752 hours logged across all 84 active resources. That concentration is worth watching. If any of these technicians leave or take extended leave, the service capacity hit will be felt immediately.

Resource D and Resource E are almost entirely ticket-focused. Between them, they logged 3,581 ticket hours out of 3,938 total hours. Resource D filed 4,513 time entries. That is roughly 18 entries per working day, which points to either short-burst triage work or an unusually high ticket volume assignment. They handle very few projects (7 and 21 hours respectively), which makes them your front-line reactive capacity.

Resource C and Resource F sit at the opposite end: project-heavy resources. Resource C logged 1,104 project hours (53.6% of their total), and Resource F logged 1,235 (66.3%). These are your delivery team members. The question is whether their project allocation is intentional or whether they are being pulled off ticket queues because projects run over. Check whether their ticket hours are low by choice or because they are unavailable for dispatch.

Resource J stands out for internal hours. Of 1,505 total hours, 537 (35.7%) are classified as internal. That is the highest internal ratio in the top 10. Internal time covers training, meetings, and administrative work, but at 35.7% it is worth confirming whether the classification is correct. Miscategorized internal time inflates the non-billable ratio.

On client spread, the top five resources each serve 137 to 146 unique clients. Resource B is notable: 143 clients with 6,978 time entries, but only 1,290 hours. That is an average of 0.18 hours per entry, roughly 11 minutes. This pattern suggests quick check-ins, password resets, or monitoring follow-ups rather than deep technical work.

The billable percentage of 75.6% is solid for an MSP. Industry benchmarks from Service Leadership sit between 65% and 80%. The remaining 24.4% covers internal tasks, training, and unassigned time. If you want to push utilization higher, look at Resource B's internal hours (586) and Resource G's internal hours (435) first.

6.0 What Should You Do With This Data?

5 priorities based on the findings above

1

Audit Resource J's internal hours classification

With 35.7% of total hours logged as internal, Resource J has the highest non-billable internal ratio in the top 10. Pull their time entries for the last quarter and check whether internal hours are genuinely administrative or misclassified ticket/project work. 537 hours of internal time at a standard billing rate represents meaningful lost revenue if the categorization is wrong.

2

Build a succession plan for Resource D and Resource E

These two handle 3,581 ticket hours between them, with 8,218 time entries combined. That is a large share of your reactive capacity in two people. If either is unavailable for more than a week, the backlog will grow fast. Cross-train at least one other resource on the ticket types these two handle most frequently.

3

Review whether Resource C and F need ticket queue availability

Both are heavily project-allocated: 53.6% and 66.3% project time respectively. If projects are on schedule and intentionally staffed this way, that is fine. But if your ticket queues are under pressure while these resources sit in projects, consider adjusting the split. Even 10% ticket allocation from each would add approximately 400 ticket hours per year.

4

Investigate Resource B's high entry count with low hours

Resource B logged 6,978 entries across 143 clients, but only 1,290 hours. That is an average of 11 minutes per entry. If these are monitoring follow-ups or password resets, consider whether they can be automated or batched. If they are underreported time, the actual billable hours may be higher than what is captured.

5

Use this report as a quarterly performance baseline

Run this same DAX query set each quarter to track how the work type split shifts over time. A healthy MSP sees ticket hours grow proportionally with clients, project hours rise during onboarding cycles, and internal hours stay below 20%. 75.6% billable is a strong starting position to build from.

7.0 Frequently Asked Questions
Where does the technician performance data come from?

All data comes from Autotask PSA time entries. Every time a technician logs work on a ticket, project, or internal task, it creates a time entry with the hours worked, work type, and associated company. Proxuma Power BI pulls this data through the Autotask connector and the AI queries it using DAX.

What do ticket, project, and internal hours mean?

Ticket hours (type 2) are reactive work: break-fix, service requests, and incident resolution. Project hours (type 6) are planned delivery work: onboarding, migrations, infrastructure builds. Internal hours (type 10) cover training, meetings, admin, and other non-client-facing time. The classification comes from Autotask's time entry type field.

What is a good billable percentage for an MSP?

Industry benchmarks from Service Leadership place the target between 65% and 80% for service desk technicians. Higher is better, but pushing above 85% usually means training and professional development time is being cut. A healthy range sits between 72% and 80%.

Why does client spread matter?

A technician who serves 140+ clients is a generalist, likely handling quick tasks and first-response tickets. A technician who serves 10 clients is a specialist or a dedicated resource. Neither is wrong, but the distinction matters for scheduling, escalation paths, and hiring decisions. Wide spread means versatile. Narrow spread means deep knowledge of specific environments.

Can I run this report against my own data?

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.

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