For IT Consultants ·
What you'll accomplish
A retainer client's hours creep past what they're paying for, and you usually don't notice until the quarter's numbers already look bad. This guide uploads a de-identified export of logged hours by category to ChatGPT and asks it to find which task types are quietly eating unbilled time, so you can raise the scope conversation before the retainer becomes unprofitable instead of after.
What you'll need
Pull a time export for the retainer period you want to check: task category, hours, billable status, and date. Most PSA platforms (ConnectWise, Autotask, HaloPSA, and similar) support a CSV export from the time-entry or reporting screen.
What you should see: A spreadsheet with one row per time entry.
Remove the client's name, the technician's name if it identifies a specific employee, and any free-text ticket descriptions that might name a person or reveal something confidential. Keep the category label, hours, billable flag, and date.
What you should see: A file where every row still shows what kind of work happened and how long it took, but nothing that identifies the client or a specific employee by name.
Troubleshooting: If your PSA's category field is too generic ("Support" covers everything), spend a few minutes recoding entries into more specific categories first. The analysis is only as useful as the categories underneath it.
Go to chatgpt.com, start a new chat, and click the "+" icon at the bottom of the message box. Choose "Upload from computer" and select your cleaned export.
What you should see: The file attaches above the message box. ChatGPT recognizes the spreadsheet and will run analysis automatically once you ask a question about it, no separate setting to turn on.
Ask which categories are consuming the most hours relative to what the retainer covers, and whether any category is trending up over the period.
What you should see: A response naming the top categories by hours, often with a simple chart, and a note on which ones look disproportionate.
Follow up asking which categories account for the most unbilled or over-scope time, separate from total hours. A category can be high-volume and perfectly fine if it's billable; the real signal is where hours go over what the retainer includes.
What you should see: A narrower list, maybe two or three categories, that's actually driving the profitability problem rather than just being busy.
Before you take this to a client conversation, open your PSA's own reporting screen and check the same category totals it just gave you. The export is a snapshot, and a small transcription or filtering mistake during export can produce a number that looks meaningful but isn't real.
What you should see: Matching totals, or a discrepancy that tells you to recheck the export filters before drawing a conclusion.
Troubleshooting: If the numbers don't reconcile, check your export's date range and category filters first. A mismatched date window is the most common cause.
Trend over multiple periods:
Compare this quarter's category breakdown to last quarter's (both
attached). Which categories grew the most as a share of total hours?
Renewal conversation prep:
Based on this breakdown, draft three bullet points I can use to explain
to the client why we need to revisit their scope or hours, focused on
the pattern, not blame.
Category cleanup check:
Do any of these categories look like they overlap or should be merged
for clearer reporting next quarter?
Per-technician view (only if technician identity doesn't need to stay hidden internally):
Break down hours by category and by technician ID. Flag any category
where one technician accounts for most of the overage.