What you will build
A Report Desk: the same short weekly report every Monday, filled in by AI from two or three source files, with every number traced back to a file and column. The Desk flags stale, missing or conflicting data instead of guessing, ends with an honest state (verified, unverified or broken), and never sends the report anywhere. You check it, then you decide who sees it.
You will finish with a folder that holds your sources, the checked report, a one-line receipt for each run, and a known-good copy of the prompt and format.
Before you start
- A weekly report you already make by hand, or wish you had: sales, enquiries, jobs, expenses.
- Two or three source files: for example a sales export from your POS or invoicing app, your enquiry list and your job sheet.
- Claude, ChatGPT or Gemini. In Claude, CSV files can be attached directly; Excel files need the code execution setting on, according to Claude's Upload files to Claude help page. Menus may move; check your app.
- A folder on your computer or Google Drive for the Desk.
- About 45 minutes for the first build.
How it works
A report you rewrite from scratch every week rarely gets done, and when it does, the numbers are hard to trust. A Report Desk has a fixed format, fixed sources and one rule above all: every number must come from a source file. If a number is not in the files, the report says "not found". It never estimates.
The Desk also checks freshness. A report can look perfect and still be wrong because one export is from last Wednesday. So the report carries a status: verified if the sources are current and the numbers trace, unverified if something is stale or unchecked, broken if a source is missing or the AI wrote numbers it could not support. A person with a name checks the report before anyone else reads it.
- Choose the report and name its owner.
- Set up the folder and prepare the sources.
- Fix the output format.
- Write the Report Desk rules.
- Run the Desk.
- Check the numbers yourself.
- Save the report, a receipt and a known-good copy.
- Test it with a changed sample.
Step 1: Choose the report and name its owner
Start with the report you already need, not a dream dashboard. Write the Desk header at the top of a document.
REPORT DESK
Name: [e.g. Monday Sales and Enquiries Report]
Owner (checks before anyone reads it): [name]
Reader: [who uses it, e.g. owner, partner, outlet supervisor]
Runs: [e.g. every Monday 9am, after the weekend exports]
Input files: [list]
Output: [where the checked report is saved]
What must never be guessed: sales totals, counts, datesIf you cannot say who reads the report and what decision it helps, keep it smaller.
Check
- The report has one named owner and a clear reader.
- The input files already exist in your business.
- "Never guessed" items are written down.
Step 2: Set up the folder and prepare the sources
Make a simple folder structure. It keeps originals safe and makes every run repeatable.
Report Desk/
source/ (this week's exports, never edited)
outputs/ (checked reports)
receipts/ (one note per run)
templates/ (known-good prompt and format)Name each source file with the period it covers, for example sales-2026-09-15-to-21.csv. Before copying a file into source/, remove customer names and contact details. Replace them with labels or delete the columns. Keep only the columns the report needs.
Two or three files is enough. More files mean more reading, more room for confusion, and higher usage on your AI plan.
Check
- Each source file name includes its period.
- Private columns are removed or replaced.
- Originals are never edited inside
source/.
Step 3: Fix the output format
Decide the report format before you ask the AI. A fixed format stops the AI from inventing a new layout each week and makes weeks easy to compare.
WEEKLY REPORT: week ending [date]
Period covered:
Source files used: [file names]
Freshness check: [does each file cover this period? yes / no, which]
1. Sales this week: RM [ ] (file, column) Last week: RM [ ] (from last week's report)
2. New enquiries: [ ] Hot: [ ] Quoted: [ ] (file, column)
3. Jobs completed: [ ] Still open: [ ] (file, column)
4. Three things worth knowing (one line each, only from the files)
5. One decision I need to make this week
6. Not found or stale: [list, do not estimate]
Status: verified / unverified / broken, with the reasonSection 6 is the most important. It turns gaps in your records into a visible list instead of a smooth paragraph that hides them.
Check
- Every number has a place for its source.
- There is a freshness line and a "not found" section.
- The report ends with a status and a reason.
Step 4: Write the Report Desk rules
These rules go at the top of every run. Keep them short enough to read on a phone.
REPORT DESK RULES
- Use only the attached source files and last week's report.
- For every number, write the file and column it came from, in brackets.
- If a number is missing, write "not found" and list it in section 6. Never estimate.
- If a file does not cover the report period, say so in the freshness check and mark the report unverified.
- If two files disagree, show both numbers and flag the conflict.
- Do not explain causes ("sales dropped because...") unless the files say so.
- Do not send, publish or share anything. Do not edit the source files.
- End with a status: verified, unverified or broken, and the reason.The rule about causes matters. AI likes to add a neat story. A story that is not in your files is a guess, and a guess in a report looks like a fact.
Check
- "Never estimate" and "not found" are both in the rules.
- Freshness has its own rule.
- Invented causes are ruled out.
Step 5: Run the Desk
Start a new chat for each weekly run. Attach or paste the source files and last week's report, then use this work order.
You are my Report Desk.
Follow MY RULES exactly. Fill in MY FORMAT using only the attached files and last week's report.
Before filling the format, list each source file with the date range it covers, based on the dates inside the file.
Then fill the format.
Then give the status with a reason.
MY RULES:
[paste]
MY FORMAT:
[paste]
LAST WEEK'S REPORT:
[paste or attach]
SOURCE FILES:
[attach or paste]Asking the AI to list each file's date range first is a simple freshness check. You can see at a glance if one file is from the wrong week.
Check
- Each file's date range is listed before the report.
- Every number has a file and column in brackets.
- The status has a reason, not only a label.
Step 6: Check the numbers yourself
The AI report is a draft. Now you, the owner, check it against the sources. You do not need to check everything. Check the things that would cause harm if wrong.
OWNER CHECK
[ ] The input files are the right files for this week.
[ ] Each file's date range matches the report period.
[ ] Spot-check two numbers: open the file, find the column, compare.
[ ] Sales total matches your own sum or your POS or invoicing app's total.
[ ] Section 6 lists every gap; nothing is hidden in a paragraph.
[ ] No causes or trends appear that the files do not support.
[ ] The status is honest.If a spot-check fails, the report is broken until you find out why. Do not correct the number by hand and carry on. Fix the rule or the file and run it again.
Check
- Two numbers checked by you against the source.
- The sales total matches an independent total.
- You agree with the status before anyone else reads the report.
Step 7: Save the report, a receipt and a known-good copy
Save the checked report in outputs/ with the week in the file name. Then write a short receipt in receipts/.
REPORT DESK RECEIPT
Run date:
Owner:
Inputs used:
Output saved as:
Checks done:
Issues found:
Status: verified / unverified / broken
Next run note: [e.g. "ask outlet B for Sunday export before 9am"]When the format and prompt produce a report you trust, copy them into templates/ as your known-good copy. If a future edit makes the report worse, go back to this copy.
Next week, paste this week's report as "last week's report" so the comparison line fills in from a checked number.
Check
- The checked report is saved in
outputs/, not only in a chat. - A receipt exists for this run.
- The known-good prompt and format are in
templates/.
Step 8: Test it with a changed sample
Before you trust the Desk every week, test that it notices problems. Make a copy of your source files and change them on purpose:
- Change one file's dates so it covers the previous week.
- Leave one required field blank.
- Add a row that conflicts with another file.
Run the Desk on the changed copy. A good Desk marks the report unverified, lists the stale file and the blank field in section 6, and shows the conflict. If it writes a smooth, confident report instead, tighten the rules and run again.
Check
- The stale file was caught in the freshness check.
- The blank field appeared under "not found".
- The status changed to unverified or broken.
Worked example
This example is made up for teaching. The business and every number are invented.
A self-service laundry (dobi) with two outlets in Kuantan wants a Monday report. The owner uses three files: a sales export per outlet from the payment terminal, and a Google Sheet where staff log machine problems. Customer names never appear in these files.
First run, week ending Sunday. The Desk listed file date ranges first:
sales-outlet-A-2026-09-15-to-21.csv: 15 to 21 September
sales-outlet-B-export.csv: 15 to 17 September only
machine-log.csv: 15 to 21 SeptemberOutlet B's export stopped on Wednesday. The report still filled section 1 with outlet A's total, RM 2,340 (made up), wrote outlet B as "not found for 18 to 21 September", and listed it in section 6. Status: unverified, because one source does not cover the period. Under "three things worth knowing" it wrote: "Machine log shows dryer 3 at outlet A reported 'not heating' on 17 and 19 September." No invented cause, only the log.
The owner spot-checked outlet A's total against the terminal's own daily totals: matched. The owner asked the outlet B supervisor for a full export, re-ran the Desk with the new file, and the status became verified. The decision for the week, written in section 5: "Call the technician about dryer 3."
On an earlier test, the Desk had written "Sales dipped midweek due to rain." Nothing in the files mentioned rain. The owner added "Do not explain causes unless the files say so" to the rules. That line is now in the known-good copy.
Common mistakes and fixes
- Numbers appear without a source → require "file and column" for every number in the rules and the format.
- The AI estimates a missing number → the rule is "not found", listed in section 6, never estimated.
- A stale export slips through → ask for each file's date range before the report and add a freshness rule.
- The report explains causes the files do not show → rule out causes unless the files say so.
- Too many source files → keep two or three; more files add confusion and use more of your plan.
- The report only lives in a chat → save it in
outputs/with a receipt inreceipts/. - Last week's comparison is typed from memory → paste last week's checked report instead.
Take it further
- Project: keep the rules, format and last week's report as Project files, and start each weekly run inside the Project. See Set up a Claude Project as your business brain.
- Connected Drive: once the Desk is stable, you could let Claude read the source files from a Google Drive folder instead of attaching them, read-only first. See Connect Claude to Gmail, Drive and Calendar safely.
- Weekly habit: put "Run Report Desk" in your calendar for Monday morning and "Check receipt" right after it.
- Related: Sort a pile of receipts into a clean expense table, Check the AI's answer before a customer sees it and Before you paste anything into AI: a two-minute safety check.
Quick checklist
- One report, one owner, one reader.
- Folder with source, outputs, receipts and templates.
- Two or three sources, private columns removed, periods in file names.
- Fixed format with sources, freshness line and "not found" section.
- Rules: no estimates, no invented causes, no sending.
- File date ranges listed before each report.
- Two numbers spot-checked by the owner.
- Receipt and known-good copy saved.
- Changed-sample test caught stale and blank data.