Which technicians touch the most clients, how their hours are distributed, and where context-switching is highest. Generated by AI via Proxuma Power BI MCP server.
Which technicians touch the most clients, how their hours are distributed, and where context-switching is highest. 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: Account managers, MSP owners, and service delivery leads
How often: Monthly for client reviews, quarterly for QBRs, on-demand when client signals change
Which technicians touch the most clients, how their hours are distributed, and where context-switching is highest. Generated by AI via Proxuma Power BI MCP server.
EVALUATE
ROW(
"TotalResources", CALCULATE(DISTINCTCOUNT('BI_Autotask_Time_Entries'[resource_name]), 'BI_Autotask_Time_Entries'[hours_worked] > 0),
"TotalClients", CALCULATE(DISTINCTCOUNT('BI_Autotask_Time_Entries'[company_id]), 'BI_Autotask_Time_Entries'[company_id] <> BLANK()),
"AvgClientsPerTech", DIVIDE(
SUMX(VALUES('BI_Autotask_Time_Entries'[resource_name]), CALCULATE(DISTINCTCOUNT('BI_Autotask_Time_Entries'[company_id]))),
CALCULATE(DISTINCTCOUNT('BI_Autotask_Time_Entries'[resource_name]), 'BI_Autotask_Time_Entries'[hours_worked] > 0)
)
)
Resources ranked by the number of distinct companies they have logged time against, with total hours and time entry count for context
| # | Resource | Unique Clients | Total Hours | Time Entries | Hours / Client |
|---|---|---|---|---|---|
| Daniel Daniels | 1,418 | 146 | 9.7 | ||
| Tracy Fitzpatrick | 1,290 | 143 | 9.0 | ||
| Gregory Horn | 1,505 | 143 | 10.5 | ||
| Brandon Bishop | 1,362 | 137 | 9.9 | ||
| Jonathon Burton | 1,285 | 137 | 9.4 | ||
| John Mahoney | 880 | 127 | 6.9 | ||
| Ronald Smith | 818 | 122 | 6.7 | ||
| Paula Lewis MD | 1,294 | 118 | 11.0 | ||
| Rose Russell | 768 | 117 | 6.6 | ||
| David Collins | 603 | 117 | 5.2 | ||
| James Li | 2,136 | 117 | 18.3 | ||
| Mr. Craig Peck | 1,232 | 115 | 10.7 | ||
| Todd Sloan | 369 | 115 | 3.2 | ||
| Maxwell Reed | 2,050 | 115 | 17.8 | ||
| David Brown | 443 | 109 | 4.1 |
EVALUATE
TOPN(
15,
FILTER(
ADDCOLUMNS(
SUMMARIZECOLUMNS(
'BI_Autotask_Time_Entries'[resource_name],
"LoggedHours", [Total],
"UniqueClients", CALCULATE(DISTINCTCOUNT('BI_Autotask_Time_Entries'[company_id]))
),
"HoursPerClient", DIVIDE([LoggedHours], [UniqueClients])
),
[LoggedHours] >= 50
),
[UniqueClients], DESC
)
ORDER BY [UniqueClients] DESC
Hours per client shows depth of engagement. A low ratio (under 7h/client) suggests the technician is touching many clients briefly. A high ratio (over 15h/client) indicates deeper, more sustained involvement.
| Resource | Clients | Hours | Hours / Client | Pattern |
|---|---|---|---|---|
| Resource J | 117 | 2,136 | 18.3 | Deep + Wide |
| Resource O | 104 | 1,888 | 18.2 | Deep + Wide |
| Resource K | 115 | 2,050 | 17.8 | Deep + Wide |
| Resource H | 118 | 1,294 | 11.0 | Balanced |
| Resource C | 143 | 1,505 | 10.5 | Balanced |
| Resource M | 115 | 1,232 | 10.7 | Balanced |
| Resource A | 146 | 1,418 | 9.7 | Balanced |
| Resource E | 137 | 1,362 | 9.9 | Balanced |
| Resource D | 137 | 1,285 | 9.4 | Balanced |
| Resource B | 143 | 1,290 | 9.0 | Balanced |
| Resource F | 127 | 880 | 6.9 | Shallow + Wide |
| Resource G | 122 | 818 | 6.7 | Shallow + Wide |
| Resource I | 117 | 768 | 6.6 | Shallow + Wide |
| Resource N | 109 | 443 | 4.1 | Spread Thin |
| Resource L | 115 | 369 | 3.2 | Spread Thin |
EVALUATE
ADDCOLUMNS(
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])
),
"HoursPerClient", DIVIDE([TotalHours], [UniqueCompanies])
)
ORDER BY [UniqueCompanies] DESC
Resources with the highest time entry counts relative to their client count. A high entry-to-client ratio suggests frequent, short interactions across many accounts: a proxy for context-switching overhead.
| Resource | Clients | Entries | Entries / Client | Signal |
|---|---|---|---|---|
| Resource B | 143 | 6,978 | 48.8 | Very High Switching |
| Resource F | 127 | 4,622 | 36.4 | High Switching |
| Resource K | 115 | 4,513 | 39.2 | High Switching |
| Resource O | 104 | 3,705 | 35.6 | High Switching |
| Resource A | 146 | 4,841 | 33.2 | High Switching |
| Resource E | 137 | 4,488 | 32.8 | High Switching |
| Resource D | 137 | 3,739 | 27.3 | Moderate |
| Resource C | 143 | 3,398 | 23.8 | Moderate |
| Resource J | 117 | 2,236 | 19.1 | Focused |
| Resource H | 118 | 2,161 | 18.3 | Focused |
EVALUATE
ADDCOLUMNS(
SUMMARIZE(
BI_Autotask_Time_Entries,
BI_Autotask_Time_Entries[resource_name],
"UniqueCompanies", DISTINCTCOUNT(BI_Autotask_Time_Entries[company_name]),
"TotalEntries", COUNT(BI_Autotask_Time_Entries[time_entry_id])
),
"EntriesPerClient", DIVIDE([TotalEntries], [UniqueCompanies])
)
ORDER BY [EntriesPerClient] DESC
The top 7 technicians each work with 120 or more different clients. That is a wide spread. At 146 unique companies, Resource A averages less than 10 hours per client across the entire reporting period. The work is shallow by definition: quick fixes, password resets, one-off escalations. This is not a performance issue. It is a structural one.
Resource B stands out for a different reason. With 143 clients and 6,978 time entries, they average 48.8 entries per client. That is the highest context-switching density on the team. Even at 1,290 total hours, the sheer volume of individual interactions means they are jumping between accounts constantly. This pattern correlates with burnout and with clients feeling like they always get a different person.
Resource J and Resource K show a different profile. Both handle 115+ clients but log over 2,000 hours each, producing hours-per-client ratios of 18.3 and 17.8 respectively. These technicians are doing real, sustained work across their portfolio. They are generalists who go deep. That combination is valuable and hard to replace.
Resource L is the most concerning outlier. They touch 115 different clients but have logged only 369 hours total, a ratio of 3.2 hours per client. With 840 time entries, that works out to about 26 minutes per entry. This pattern suggests dispatch-level triage: opening tickets, routing them, logging quick notes. If that is their role, fine. If not, they are spread so thin that no client is getting meaningful attention.
Resource N follows a similar pattern at 109 clients and 443 hours (4.1h/client). Two resources in the bottom tier by engagement depth is worth investigating. Are these part-time staff? Are they tier-1 dispatchers who should not be counted as technicians? The answer changes how you interpret the rest of the data.
5 priorities based on the findings above
At 48.8 time entries per client across 143 accounts, Resource B is the most heavily context-switched person on the team. Pull their last 30 days of entries and check: are they being auto-assigned to everything? Is there a dispatch rule sending tickets to them by default? 6,978 entries is roughly 2x the team average and that kind of volume usually means the routing is broken, not that the person is twice as productive.
Both show high client counts (115 and 109) with very low hours (369 and 443). If they are dispatchers or tier-1 triage roles, their numbers make sense and they should be categorized separately. If they are supposed to be delivering billable work, 3.2 and 4.1 hours per client across the entire period means no client is getting real attention. Either redefine their role or redistribute their accounts.
Resources A through E each handle 137+ clients. That works for reactive ticket flow, but it means no single technician owns the relationship with any client. If your service model includes named contacts for top-tier clients, the current distribution does not support it. Pick your 10 largest clients and assign a primary technician who handles at least 60% of their tickets.
These two are your best generalists: high client count (115+), high hours (2,000+), and low context-switching density (under 20 entries per client). They are doing sustained, meaningful work across a wide client base. Do not add more clients to their plate. They are operating near peak capacity and losing one of them would create a gap that two or three replacements could not fill immediately.
The average across your 84 active resources is roughly 80 clients each. But that average hides a wide range. Set benchmarks by role: dispatchers can handle 100+ clients at low depth. Senior technicians should cap at 60–80 with higher hours per client. Tracking hours-per-client as a KPI gives you a clearer picture of capacity than client count alone.
The data comes from the BI_Autotask_Time_Entries table in Proxuma Power BI. Every time entry in Autotask is logged against a resource (technician) and a company (client). The AI counts distinct company names per resource to produce the unique client figure. This includes all time entry types: ticket work, projects, internal, and administrative.
The report counts all time entries regardless of billable status. Internal companies and internal project time are included. If you want to filter to billable work only, add a filter on the is_billable column in the DAX query. The total of 50,752 hours includes 38,364 billable hours (75.6%).
Hours per client is total hours divided by unique client count. It measures engagement depth. A technician with 10 hours per client is doing roughly one to two meaningful interactions per client per month. Below 5 hours per client usually means quick-touch, triage-level work. Above 15 suggests real project or escalation involvement. It is a proxy for whether the client would recognize the technician by name.
Autotask retains resource records for former employees and inactive accounts. The 84 active figure reflects resources who have logged at least one time entry in the reporting period. The 34 inactive resources still appear in historical data but are not counted in the ranking or averages in this report.
Yes. The DAX queries can be filtered by adding a date condition on the time entry date column. For quarterly planning, filter to the last 90 days to see current client spread rather than historical accumulation. The results will look different: a technician touching 146 clients over two years may only touch 40 in a given quarter.
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 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