“Unwritten Hours: Capacity vs. Logged Time Entries”
Autotask PSA Datto RMM Datto Backup Microsoft 365 SmileBack HubSpot IT Glue All reports
AI-GENERATED REPORT
You searched for:

Unwritten Hours: Capacity vs. Logged Time Entries

How many hours are your engineers working but not recording in the PSA? This report calculates the gap and breaks it down by resource. 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

Unwritten Hours: Capacity vs. Logged Time Entries

How many hours are your engineers working but not recording in the PSA? This report calculates the gap and breaks it down by resource. 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 › Unwritten Hours: Capacity vs. Logged ...
What you can measure in this report
Summary Metrics
Unwritten Hours Analysis — The Answer
Hours Logged per Resource — Top 10
Utilization by Resource — Billable Percentage
Key Findings
What Should You Do With This Data?
Frequently Asked Questions
ANNUAL CAPACITY
HOURS LOGGED
UNWRITTEN GAP
ACTIVE RESOURCES
AI-Generated Power BI Report
Unwritten Hours:
Capacity vs. Logged Time Entries

How many hours are your engineers working but not recording in the PSA? This report calculates the gap and breaks it down by resource. 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
ANNUAL CAPACITY
174,720h
84 resources × 40h/week × 52 weeks
HOURS LOGGED
50,752h
29.0% of capacity captured
UNWRITTEN GAP
123,968h
71.0% of capacity unlogged
ACTIVE RESOURCES
84
With time entry access in Autotask
View DAX Query — Summary Metrics
EVALUATE
TOPN(
  15,
  FILTER(
    ADDCOLUMNS(
      SUMMARIZECOLUMNS(
        BI_Autotask_User_Details[resource_user_name],
        "Logged", [Total],
        "Capacity", [Capacity Total (Proxuma)]
      ),
      "Unwritten", [Capacity] - [Logged],
      "UnwrittenPct", DIVIDE([Capacity] - [Logged], [Capacity])
    ),
    [Capacity] > 500
  ),
  [Unwritten], DESC
)
ORDER BY [Unwritten] 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 Unwritten Hours Analysis — The Answer

The split between logged hours and unlogged capacity, with a breakdown of billable vs. non-billable within the logged portion

71.0% unwritten
Capacity vs. Logged
75.6% billable
Billable vs. Non-Billable (Logged)
CategoryHours% of CapacityStatus
Billable hours logged38,36422.0%Revenue-generating
Non-billable hours logged12,3887.1%Internal / admin
Unwritten hours (gap)123,96871.0%Not captured in PSA
Total annual capacity174,720100.0%84 resources × 2,080h
Note on the 71% gap: In demo data, all resources carry a uniform 8-hour/day capacity. The unwritten gap includes PTO, sick leave, meetings, admin time, context switching, and hours that were simply never logged. In a real environment, capacity adjustments for leave and part-time schedules will produce a more accurate gap percentage. Even accounting for those factors, most MSPs find 30-50% of capacity goes unrecorded.
View DAX Query — Total Hours Logged (Billable / Non-Billable)
EVALUATE
ROW(
  "LoggedHours", [Total],
  "CapacityProxuma", [Capacity Total (Proxuma)],
  "UnwrittenProxuma", [Unwritten (Proxuma Capacity)],
  "UnwrittenPctProxuma", DIVIDE([Unwritten (Proxuma Capacity)], [Capacity Total (Proxuma)]),
  "EstTrueBillablePct", [Estimated True Billable % (Proxuma Capacity)]
)
3.0 Hours Logged per Resource — Top 10

Resources ranked by total hours logged against their annual capacity of 2,080 hours (40h/week × 52 weeks)

Dr. J. Adams
2,400h
72.9%
S. Martinez
2,136h
61.0%
D. Chen
2,060h
55.6%
API Integration
89.6%
M. Brown
1,888h
80.9%
J. Wilson
1,862h
76.0%
R. Thomas
1,780h
65.0%
E. Davis
1,585h
77.5%
L. Anderson
1,554h
52.7%
G. Horn
1,505h
63.6%
Bar width = relative to top logger. Percentage = utilization (logged hours / 2,080h capacity).
View DAX Query — Hours per Resource
EVALUATE
ADDCOLUMNS(
    VALUES('BI_Autotask_User_Details'[resource_name]),
    "hours_logged", CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked])),
    "billable", CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours]))
)
ORDER BY [hours_logged] DESC
4.0 Utilization by Resource — Billable Percentage

Billable hours as a percentage of total hours logged per resource, showing how much of their recorded time generates revenue

ResourceLoggedBillableBillable %UtilizationStatus
API Integration 2,050 1,837 89.6%
High
M. Brown 1,888 1,527 80.9%
High
E. Davis 1,585 1,228 77.5%
Good
J. Wilson 1,862 1,415 76.0%
Good
Dr. J. Adams 2,400 1,750 72.9%
Good
R. Thomas 1,780 1,157 65.0%
Average
G. Horn 1,505 957 63.6%
Average
S. Martinez 2,136 1,303 61.0%
Average
D. Chen 2,060 1,145 55.6%
Watch
L. Anderson 1,554 819 52.7%
Low
View DAX Query — Utilization per Resource
EVALUATE
ADDCOLUMNS(
    VALUES('BI_Autotask_User_Details'[resource_name]),
    "hours_logged", CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked])),
    "billable", CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])),
    "billable_pct", DIVIDE(
        CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])),
        CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked]))
    )
)
ORDER BY [billable_pct] DESC
5.0 Key Findings
1

71% of total capacity is unrecorded in the PSA

Out of 174,720 annual hours of capacity across 84 resources, only 50,752 hours appear as time entries. That is a 123,968-hour blind spot. Even after accounting for PTO, meetings, and admin overhead, most MSPs should expect 50-70% of capacity logged. A 29% capture rate means the majority of your team's work is invisible to reporting and billing.

2

Billable ratio is 75.6%, but only on the hours that get logged

Of the 50,752 hours that were logged, 38,364 were billable. That 75.6% billable ratio looks healthy in isolation. The problem is that it only covers 29% of capacity. If even 10% of the unwritten gap turns out to be billable work that was done but never recorded, that represents roughly 12,400 hours of lost invoicing opportunity per year.

3

Top loggers exceed their annual capacity, others fall below 60%

Dr. Jessica Adams logged 2,400 hours against a 2,080-hour capacity (115% utilization), suggesting overtime or capacity data needing adjustment. At the other end, Lisa Anderson logged 1,554 hours with only 52.7% billable. The spread between top and bottom performers indicates inconsistent time entry discipline rather than uneven workloads.

6.0 What Should You Do With This Data?

5 actions to close the unwritten hours gap and recover lost revenue

1

Set a minimum daily logging target and track it weekly

Start with a target of 6 hours logged per day per resource (allowing 2 hours for meetings and admin). That is 30 hours per week. Run a weekly report showing who hit the target and who did not. Teams that track daily logging consistently recover 15-25% of their unwritten gap within the first quarter.

2

Audit the bottom 10 loggers for missing billable time

Resources logging fewer than 1,200 hours per year with low billable percentages (like L. Anderson at 52.7%) likely have entire days of client work that never made it into Autotask. Pull their ticket history and compare closed tickets against time entries. Gaps between ticket resolution and zero time logged are the first place to look for recoverable revenue.

3

Create non-billable time entry categories for common activities

If engineers do not have a quick way to log meetings, internal projects, and training, those hours disappear. Add standard non-billable categories in Autotask: "Internal Meeting," "Training / Certification," "Documentation," "Travel." Making it easy to log non-billable time is the fastest way to improve capture rates and get an accurate picture of where hours go.

4

Adjust capacity figures for realistic availability

The 2,080 hours per resource assumes zero PTO, zero sick leave, and zero holidays. Adjust capacity to reflect actual availability (typically 1,760-1,880 hours per year after standard leave). This will give you a more honest utilization percentage and reduce the apparent gap. The remaining gap is the real problem to solve.

5

Use top performers as benchmarks for the rest of the team

Michael Brown (80.9% billable) and James Wilson (76.0% billable) demonstrate that high capture rates are achievable. Study their workflows: do they log time as they go or batch it at end of day? Do they use Autotask timer features? Share their approach with the team. Peer benchmarking is more effective than top-down mandates because it shows proof that the target is realistic.

7.0 Frequently Asked Questions
Where does the time entry data come from?

All time entry data comes from Autotask PSA, pulled into Proxuma Power BI through the Autotask connector. The AI then runs DAX queries against the BI_Autotask_Time_Entries table to sum hours_worked, Billable Hours, and Non billable Hours per resource. Capacity is calculated from the active resource count in BI_Autotask_User_Details.

How is capacity calculated?

This report uses a standard 40 hours per week multiplied by 52 weeks, giving 2,080 hours per resource per year. The total capacity is the number of active resources (84) multiplied by 2,080. For a more accurate picture, adjust capacity downward for PTO, holidays, and part-time employees. Typical adjusted capacity is around 1,800 hours per year.

What counts as an "unwritten" hour?

An unwritten hour is the difference between available capacity and logged time entries. It includes everything that was not recorded: PTO and sick leave (if not tracked as time entries), meetings, administrative tasks, breaks, and genuinely forgotten time entries for client work. The goal is not to eliminate all unwritten hours, but to understand what portion is recoverable billable time.

What is a good utilization target for MSP engineers?

Industry benchmarks for MSP engineers typically target 65-75% billable utilization against adjusted capacity (after subtracting leave). That means 6-6.5 billable hours per working day. Resources consistently above 80% may be overloaded or under-investing in training and internal work. Resources below 50% billable need a closer look at their workload and logging habits.

Can I run this report filtered to a specific team or time period?

Yes. The DAX queries can be filtered by adding conditions on resource department, role, or date range. For weekly tracking, filter BI_Autotask_Time_Entries by date_worked to a specific week and compare against that week's capacity (40 hours per resource). Ask the AI to add these filters when generating the report against your data.

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 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