Can AI turn a spreadsheet into a client report?
Two AI agents turned a raw campaign spreadsheet into a client-ready dashboard in minutes, and the better one was the one that labelled the numbers honestly.
What the reel showed
One CSV from a real influencer seeding campaign: 21 creators across Singapore and Malaysia, each sent product and promised a Story or a Post. Names were replaced with ids; the figures are real. The brief: turn this into a dashboard I could send the client, in one web page.
Claude Fable 5.1 in Claude Code built a dark operations board: promised against delivered, a follower drift chart, and a spotlight that cycles through all 21 creators. It took 35 turns, 12 minutes and $5.90.
GPT-6 Astra in Codex CLI built a light, branded report with the full creator table in one pass, in 3m22 for $0.73. It refused to call follower counts 'reach' and said so in a footnote. On this data that was the right call.
| Entrant | Tool | Time | Cost | Verdict |
|---|---|---|---|---|
| Claude Fable 5.1 | Claude Code | 12m01 | $5.90 | Dark ops board, cycles all 21 creators |
| GPT-6 Astra | Codex CLI | 3m22 | $0.73 | Light report, would not call followers reach |
Each model ran in its maker's coding agent with the same CSV and brief, one attempt each; costs are read off each run's own bill and can differ from the figure shown in the reel.
What this means for your business
Campaign results, sales exports, ad reports and survey results all arrive as spreadsheets, and someone spends an afternoon turning them into something a client or a partner will read. Both agents produced a credible version of that afternoon in minutes.
The detail I care about most is Astra's footnote. A follower count is not reach, and plenty of reports blur that line. Whatever model you use, read what it claims about your numbers before anything goes to a client.
A report earns trust when it shows the uncomfortable parts clearly: what was promised against what was delivered, who has not delivered, where the numbers moved. The brief asked for those on purpose, and both agents showed them.
Remove names, emails and anything personal before the data goes near a tool you do not control.
What I’d use
Let a model build the first version of a recurring report, then have a person check every number and every label against the source before it goes out. That split saves most of the afternoon and keeps you safe.
For a one-off, the Claude app is enough: upload the file and ask. For a report you send every month, set it up once in Claude Code or Codex so it rebuilds from each new export. Both run on a subscription: Claude Code on a Claude Pro or Max plan, Codex CLI on a ChatGPT plan. That is how I use them every day, with no bill per run.
Try it yourself
Turn a spreadsheet you already have into a one-page report. You only need the Claude app for this.
Export a CSV
Take a spreadsheet you report on regularly: sales by month, ad results, campaign tracking. Save it as CSV, and replace names and emails with ids.
Open the Claude app and attach it
Start a new chat and attach the CSV with the + button in the chat box.
Ask for the report
Fill in the brackets with what the data is and who it is for.
Attached is [what the data is, e.g. "our Q3 ad spend and results by campaign"]. Turn it into a one-page report I could send to [a client / my business partner], as a single HTML page. - Start with three headline numbers and one sentence on what they mean. - Show what was planned against what happened, and flag anything that fell short. - One or two simple charts, no more. - Label every metric exactly as it is in the data. Do not call a number something it is not (followers are not reach). If a figure is missing or unclear, say so in a footnote. - End with three plain-language next steps. Keep it clean and readable on a phone.
Check every number
Pick five figures in the report and find them in your spreadsheet. Read every chart label. This is the step that makes it safe to send.
Compare with GPT, if you like
If you have a ChatGPT plan, give the same file and prompt to Codex, which signs in with that plan. To see both models side by side in one window instead, paste the CSV text and the prompt into OpenRouter's chat with Claude Fable 5.1 and GPT-6 Astra selected: one account for every model, pay per use. Either way, look at how each one labels your numbers.
Links
- Claude appAnthropic's chat appclaude.ai
- Uploading files to ClaudeWhich files it takes and howsupport.claude.com
- OpenRouter chatSend one prompt to several models side by sideopenrouter.ai
- Claude CodeAnthropic's coding agentclaude.com
- Claude Code with Pro or MaxRun it on your Claude subscriptionsupport.claude.com
- Codex CLIOpenAI's coding agent, signs in with a ChatGPT plangithub.com
Spending hours a week turning exports into client reports?
That is a good first place for AI. I set it up so the report rebuilds from each new export and a person only has to check it.