Office workflows
Use ChatGPT to Turn a CSV Work Queue into a Weekly Workload Brief
Cihan's view: Upload a clean CSV, define remaining work precisely, ask ChatGPT to calculate totals by team, and check the rows and arithmetic before using the workload brief.
A task list tells you what exists. A workload brief tells you which team has unfinished work, how much estimated effort remains, and where work is blocked.
This guide uses ChatGPT data analysis to prepare that brief from one small CSV. The deliverable is a team-level table and a short internal update—not an automatic staffing decision.
Evidence label: documentation-based tutorial with fictional sample data and an illustrative acceptance table. The sample arithmetic was independently checked with Python; this is not a recorded ChatGPT session, a personal tool test, or a measured time-saving result.
What you need
- A ChatGPT account with file upload and data analysis available for the selected model and workspace. Access and limits vary by account.
- A spreadsheet exported as CSV, with descriptive column headers and one task per row.
- Permission to process the data in your company’s approved AI environment. Start with the fictional data below, not a live customer export.
OpenAI’s data-analysis documentation describes CSV analysis, tables, and Python-backed calculations. No connector, coding agent, or ChatGPT Work setup is needed for this exercise.
1. Create the complete practice file
Copy this into a plain-text file named work-queue.csv, or paste it directly into ChatGPT for the practice run:
ticket,team,status,estimated_hours
T101,Support,open,2
T102,Support,blocked,3
T103,Sales,open,1.5
T104,Sales,done,2
T105,Operations,open,4
T106,Operations,blocked,1
T107,Support,done,1
T108,Operations,open,2.5
These are fictional tickets. The hours are estimates, not actual time worked, and there is no due-date or capacity column.
2. Attach the CSV and define the calculation
Start a new chat and attach the practice file using your account’s file-upload control. If that control is unavailable, paste the CSV and explicitly say it is the input table.
Use this instruction:
Prepare a weekly workload brief using only the attached work-queue.csv
(or the CSV pasted below).
First inspect the input. Report its column names, row count, duplicate
IDs, missing estimates, and unexpected statuses. Do not silently repair,
deduplicate, or fill missing values.
Definition: remaining work means status=open or status=blocked.
Exclude status=done from remaining-work totals. Count blocked tasks
separately, but include their estimated hours in remaining hours.
Return:
1. A table by team: remaining task count, remaining estimated hours,
and blocked task count.
2. A reconciliation showing input rows, included rows, excluded rows,
and the total remaining estimated hours.
3. An internal update of no more than 80 words.
Use Python for calculations if data analysis is available, and show
or explain the calculation code. Treat hours as estimates. Do not
infer deadlines, overload, employee performance, or business urgency.
If a required value is missing, report the gap instead of inventing it.
3. Inspect the input before reading the conclusion
For this sample, ChatGPT should identify four columns and eight rows, with no duplicate ticket IDs or missing estimates. Six tasks are remaining; two are done and excluded.
If its input inspection differs, stop. Check whether the file lost a header, used the wrong delimiter, or uploaded only part of the table. A polished conclusion cannot fix an incorrectly parsed input.
4. Check the expected table
This is an illustrative acceptance result, not a screenshot or transcript of ChatGPT output:
| Team | Remaining tasks | Remaining estimated hours | Blocked tasks |
|---|---|---|---|
| Operations | 3 | 7.5 | 1 |
| Sales | 1 | 1.5 | 0 |
| Support | 2 | 5.0 | 1 |
| Total | 6 | 14.0 | 2 |
Check at least one team against the original rows. Operations should include T105, T106, and T108. The blocked T106 remains in the workload total; it is not completed work.
An acceptable internal update might read:
The sample queue contains six unfinished tasks with 14 estimated hours remaining. Operations accounts for 7.5 hours, Support for 5 hours, and Sales for 1.5 hours. Two unfinished tasks are blocked. These figures describe estimated work, not team capacity or a deadline commitment.
Do not change that into “Operations is overloaded.” The input contains no capacity information to support it.
5. Ask for a reusable export
After the totals pass review, ask:
Return the reviewed team-level table as CSV with these columns:
team,remaining_tasks,remaining_estimated_hours,blocked_tasks.
Keep the grand total separate. Do not add a recommendation column.
Save the result in the weekly report. A chart is optional: a small table is usually enough for this example.
6. Test a messy case before using real data
In a separate practice run, append this row:
T109,Sales,open,
The correct behavior is to flag the missing estimate, not assign zero hours. Sales would have another unfinished task, but its complete remaining-hour total would be unknown. Ask the model to separate known hours from tasks without estimates.
For a second test, duplicate T106. It should report the duplicate and ask how you want it handled—not silently count it twice or erase it.
Troubleshooting
- The totals include done tasks: repeat the remaining-work definition and request the exact included ticket IDs.
- Decimals become text: check the delimiter and decimal format in the CSV; do not let the model guess the conversion.
- No Python calculation is available: verify the totals in a spreadsheet before using the narrative. Pasting a table is not proof that code execution occurred.
- The answer makes staffing claims: ask it to remove them. Capacity, priority, and deadlines need separate approved inputs.
TRY / SKIP / USE: TRY this on the fictional queue; SKIP uploading confidential exports without permission; USE the brief only after the row reconciliation and arithmetic pass review.
Sources and next step
For the next practice run, replace only the fictional task names—not the calculation rules—and see whether the same checks still work.