Using ChatGPT or Claude to analyze ad data
ChatGPT and Claude read ad data well and do the maths badly. Compute the table first, then make the model cite a row for every claim it makes.
ChatGPT and Claude read ad data well and do the maths badly. Compute the table first, then make the model cite a row for every claim it makes.
It is Monday, the client call is at ten, and you have an Ads Manager export with 60 rows. You paste it into Claude, ask which ads to scale, and get a clean answer in eight seconds: ad 14 is the winner, CPA down 31%, raise its budget. It reads like a sharp analyst wrote it. Then you open the sheet yourself. Ad 14 has three purchases. The 31% appears nowhere in the file.
I have done exactly this. The model predicted what a good analysis sounds like, and it predicted well.
Short answer: ChatGPT, Claude and Gemini are useful for analyzing ad campaign data once you compute the numbers yourself and hand the model a finished table. Let a pivot or a short script calculate spend, conversions, CPA and ROAS per ad, then ask the model to explain, prioritize and draft. Every recommendation it makes stays a hypothesis until your own numbers agree.
The takeaways
For reading an ad report, the gap between ChatGPT, Claude and Gemini matters far less than what you feed them. All three make the same mistakes on a raw export: misread columns, rows dropped from long files, percentages that appear in the answer but not in the data.
The "which one gets it" threads on r/PPC compare different prompts over different exports, so they mostly measure the input. Give two models the same finished table and the same question and their answers converge. Give either one a raw 400-row CSV and you re-check every line.
Use the model you already pay for. Spend the effort on the table.
A language model writes text that fits the shape of an answer. It does not calculate anything unless a code tool does it, and even then the model picks which columns go into that code. An ad export gives it plenty of quiet ways to fail:
None of this shows in the answer. The tone is identical whether a number is right or invented.
Build the table yourself, in a pivot or a ten-line script: one row per ad with spend, impressions, clicks, conversions, CPA and ROAS, all for the same date range and the same attribution setting. Keep the conversion count as its own visible column, because it is the number the model will most happily ignore.
Then cut the table down. Drop ads under a spend floor you would never act on anyway. If the export runs to hundreds of rows, split it by campaign and ask one question per piece.
The model now gets thirty clean rows instead of a file whose summary line totals mixed result types. Its job shrinks to what it does well: reading a finished table, pointing at the rows worth a look, and listing what might explain them.
Tie each statement to the rows behind it. The prompt I use: "For every claim, quote the ad ID and the exact figures from the table. If a claim rests on fewer than 10 conversions, label it too thin. Do not explain causes. List hypotheses I could test instead."
That paragraph changes the output. "Ad 14 is the clear winner" becomes "Ad 14: €96 spend, 3 conversions, CPA €32 (too thin)". You can check that against the sheet in seconds.
The hypotheses list is where the model earns its keep: it proposes tests fast, and a proposal costs nothing until you act on it. The 10-conversion line is my own floor for a first read; set yours from your CPA and how expensive a wrong call would be.
No model can tell you a result is real from 40 clicks. Whether the gap between two ads is signal or luck depends on how many conversions sit behind it, and that is a sample-size question, not an intelligence question. A stronger model reads three conversions just as precisely as a weaker one. They stay three.
What the model can do is help you not fool yourself, if you ask. Ask which conclusions would flip if one conversion moved. Ask how many ads you compared, because ranking twenty and crowning the top one is the multiple-comparisons trap (I walk through it in winner or lucky?). An LLM can run that checklist with you. It cannot make the sample bigger.
Keep the model on the writing side and keep the decisions on computed numbers. The client note, the weekly summary, a list of test ideas: good uses. Pausing or scaling an ad because a chat window read your CSV is how an invented percentage turns into spent budget.
That split is how I built Adscalr. Creatives are ranked on a composite of 6 metrics, early scores get pulled toward what their format usually does so a lucky first day doesn't win, and false-discovery-rate control applies when many creatives are compared at once. Kill rules sit behind fixed safeguards, including a lockout that leaves any ad under 5 days or €200 of spend alone, and every evaluation is logged. The automation pillar lays out those safeguards one by one.
Let the model talk. Let the table decide.
This is the thinking behind Adscalr.
See the product →