Can AI Analyse My Sales Spreadsheet? What to Upload and Check

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Can AI Analyse My Sales Spreadsheet? What to Upload and Check.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Can AI Analyse My Sales Spreadsheet? What to Upload and Check.

Yes. ChatGPT, Claude, Gemini in Google Sheets and Copilot in Excel can all total, compare and chart a sales spreadsheet, and the first two run real code on your file. It works when the data is one clean table, one row per sale or invoice line, and you check the headline totals against your own reports before trusting anything else.

Upload an export, not your live workbook, and swap customer names for account codes if you're on a personal plan. When the tool runs code, the arithmetic is usually right. The mistakes come from the file (subtotal rows counted twice, credit notes treated as sales, dates stored as text) and from the tool's confident explanations of why a number moved, which are guesses unless your data contains the reason.

Follow me on Instagram@sagnikteaches

Which tool reads what

ToolHow it handles the fileLimits and requirements
ChatGPTWrites and runs Python on the uploaded file, then explains and chartsSpreadsheets up to roughly 50MB depending on row size, per OpenAI's file uploads FAQ
ClaudeRuns code on the file when code execution is on; CSVs can also be read as textUp to 500MB per file and 20 files per chat; Excel files need code execution enabled in settings
Gemini in Google SheetsWorks inside the sheet: pivot tables, charts, formulas, written insightsNeeds a Workspace or Google AI plan that includes Gemini in Sheets; charts don't update when data changes
Copilot in ExcelWorks inside the workbook on the data you selectFull features need a Microsoft 365 Copilot licence (Copilot Business is $21 a user a month on annual billing)

For a one-off deep look at a year of data, ChatGPT or Claude with an uploaded CSV is usually quickest. For a sheet you update every week, working inside the spreadsheet with Gemini in Google Sheets or Copilot in Excel saves re-uploading. Anthropic's file upload help page lists the current Claude limits; they change, so check before a big upload.

Connect on LinkedInSagnik Bhattacharya

Shape the export before you upload it

Most failed analyses fail here. AI tools read the grid literally: a "Total" row halfway down is just another sale to them. Ten minutes of tidying saves an hour of confusing answers.

Subscribe on YouTube@codingliquids
  • One header row, with plain column names ("invoice_date", "customer_code", "product_code", "qty", "net_value").
  • One row per invoice line or sale, not one row per customer with months across the top.
  • No merged cells, blank spacer rows, subtotal or total rows. Delete them; the AI can recalculate totals.
  • Dates as real dates in one format, and numbers as numbers (no "1,200.00 " stored as text with a trailing space).
  • Credit notes and returns clearly marked, ideally as negative values with a "type" column.
  • One currency, or a currency column if you sell in several.
  • A short data dictionary in your prompt: what each column means and anything odd ("net_value excludes delivery charges").

The before-and-after for a typical report exported from accounting software:

Before (report layout)After (analysis layout)
Customer name as a heading, invoices listed beneathcustomer_code repeated on every row
Subtotal per customer in boldRemoved
"Sep-25" in some rows, "01/09/2025" in othersinvoice_date, all as dates
Credit notes in red, positive numberstype = "credit", net_value negative
Product in a free-text descriptionproduct_code plus product_group columns

If your export is badly shaped every month, fix it at source: most accounting and sales systems can export a "transactions" or "invoice lines" report that's already flat. Our guide to cleaning messy data covers the Excel side of the tidy-up.

What to leave out of the file

Only upload the columns your questions need. A sales analysis rarely needs customer contact names, email addresses, phone numbers, delivery addresses or free-text notes, and the notes column is where the sensitive material hides ("customer says they're struggling to pay"). Replace customer names with account codes and keep the lookup table on your own computer; you can translate the answer back afterwards.

If you sell to consumers, the file holds personal data, so use a business account, which doesn't train on your content by default, and keep the columns to codes, dates, products and values. Cost prices and margins are commercially sensitive rather than personal, so the same business-account rule applies if you include them.

Five questions that get useful answers

Vague prompts ("analyse this") produce vague essays. Specific questions produce tables you can act on:

  1. Reconcile first: "Give total net_value by month and the row count. Don't analyse yet." Compare with your accounts before going further.
  2. Who moved: "Compare January to August this year with the same months last year by customer_code. Show the ten biggest increases and decreases in value, with both years' figures."
  3. Concentration: "What share of this year's sales came from the top 5, top 10 and top 20 customers?"
  4. Price versus volume: "For the five products with the biggest sales change, split the change into price effect and quantity effect, and show the working."
  5. Lapsed customers: "List customers who ordered at least four times last year and not at all in the last 90 days, with their last order date and last year's value."

The difference a specific question makes is easy to see side by side. Asked "analyse my sales", an assistant typically returns five paragraphs of observations, such as "sales show some variability across months" and "a small number of customers account for a large share of revenue", none of which tells you what to do on Monday. Asked question 5, the same assistant returns a list of nine named account codes with last order dates and values: a call list. The best questions for your business follow the same pattern. A courier firm might ask for revenue per customer per delivery; a laboratory, turnaround-sensitive clients whose test volumes fell; a wholesaler, average lines per order by customer, which drops before a customer drifts away.

Here's an illustrative answer to question 2 for a packaging supplier:

customer_codeJan-Aug last yearJan-Aug this yearChange
C-011884,20041,900-42,300
C-034212,50038,700+26,200
C-007755,10036,300-18,800

That's the useful part. The model then added a paragraph saying C-0118's fall "likely reflects reduced demand in the customer's sector". Nothing in the file supports that; it's a guess dressed as analysis. You'd delete it and phone the customer instead.

Question 3 often produces the most uncomfortable number. In the same illustrative file, the answer came back as "top 5 customers: 46% of sales; top 10: 63%; top 20: 81%". A quick sum shows why that matters: if the biggest single customer, at 14% of sales, left, the business would lose roughly one month's revenue in every seven. That's a reason to look at payment terms and contract length for those five accounts, which no spreadsheet will do for you.

Getting a chart you'd actually show someone

Both ChatGPT and Claude will draw charts from the file, and Gemini in Sheets adds them to a new tab. Ask for the specific chart you need, and say who it's for:

Make one line chart of monthly net sales (credits subtracted) for the last
14 months, with last year's same months as a dotted second line. Y axis
starts at zero. Label the axes. Title: "Monthly net sales vs last year".
Then give me the underlying monthly table.

Asking for the underlying table is the check: you can compare three months against your accounts in a minute. Two things to fix in first attempts. Charts often start the vertical axis just below the lowest value, which makes a 5% dip look like a collapse; "Y axis starts at zero" prevents it. And cumulative charts sometimes appear when you wanted monthly ones, which hides a bad month inside a rising line. If the chart is going to your bank or a board, rebuild it in your own spreadsheet from the table, so the numbers sit somewhere you control.

Check the answer against five numbers you already know

Before acting on anything, reconcile. It takes ten minutes and catches almost every file problem:

  1. Total sales for a period matches your accounting report for the same period.
  2. Row count matches the export (the tool should state how many rows it read).
  3. Date range is what you expect. Day-and-month mix-ups (5 March read as 3 May) show up as sales in months you barely traded.
  4. Top five customers look like the five you'd name from memory. A stranger in the top five usually means a duplicated customer code or a misread number.
  5. One customer by hand: pick a mid-sized account, total its invoices in your accounting software, and compare.

A realistic mistake and how it showed up: an illustrative wholesaler's export listed credit notes as positive numbers in a separate "type" column. The AI's total came out about 4% higher than the accounts, and the check in step 1 caught it. Without that check, the "top customers" table would have ranked one account third, when in reality most of its apparent sales that year had been returned. One line in the prompt fixed it: "rows where type = credit are refunds; subtract them."

Also ask the tool to show its working. ChatGPT and Claude can display the code they ran; you don't need to read Python fluently to spot "df[df['type'] != 'credit']" and realise credits were excluded rather than subtracted.

Worked example: 14 months of invoice lines at a packaging supplier

An illustrative packaging supplier with 11 staff wanted to know why sales felt flat despite winning new customers. Its accounting software exported 14 months of invoice lines: 9,400 rows, 23 columns. The owner cut it to 7 columns (date, customer code, product code, product group, quantity, net value, type), removed 140 subtotal rows, and fixed dates that had exported as text. That took about 40 minutes the first time.

Uploaded to a business-plan assistant with a four-line data dictionary, the reconciliation matched the accounts to within rounding. Then the questions:

  • Who moved: three long-standing customers were down a combined 71,000 on the same months last year; new customers had added 58,000. That was the "flat" feeling, explained in one table.
  • Price versus volume: on the largest product group, a 6% price rise in spring had held, but quantity fell 18%, almost entirely among the three shrinking customers.
  • Lapsed customers: nine accounts that ordered at least four times last year hadn't ordered in 90 days, worth 22,000 last year.

Total time: about two and a half hours including clean-up and checks, against a day or more building pivot tables by hand. The owner's follow-up was the valuable part: calls to the three shrinking customers found that two had moved some volume to a competitor after the price rise, and one had changed its own product range. None of that was in the spreadsheet, and the AI couldn't have known it.

When the AI's "why" is a guess

Models are trained to be helpful, and an explanation feels helpful. So they will tell you sales dipped in August "due to seasonal slowdowns" whether or not your business has seasons. Treat any explanation as a hypothesis unless the data contains the cause. A better prompt:

For each of the three biggest changes you found, list up to three possible
explanations. For each explanation, say what data would confirm or rule it
out, and whether that data is in this file. Don't state any explanation
as fact.

An illustrative reply for the August dip: "(1) Seasonal pattern: check August in the two prior years; only one prior August is in this file, and it also dipped 9%. (2) Lost customer: C-0118's orders stop after 12 July; confirm with the account manager. (3) Pricing: average price per unit is unchanged in August, so this is unlikely." That's analysis you can act on, because it tells you which phone call to make. Our guide to checking margins product by product with AI uses the same approach on cost data.

Turning a one-off into a monthly routine

The first analysis is the expensive one. After that, the same export, the same seven columns and the same five questions take about 20 minutes a month:

  1. Save the export settings in your accounting software so the file comes out the same shape each time.
  2. Keep the data dictionary and the five questions in a shared ChatGPT or Claude Project (or a Gemini Gem, becoming a skill from November 2026), so anyone in the team can run them.
  3. Run the reconciliation question first, every time, and stop if it doesn't match.
  4. Record the three headline figures in a small tracking sheet, so next month's answer can be compared with a number you trust rather than with the AI's memory.

If you'd rather not upload files at all, the same routine works inside the spreadsheet. In Google Sheets, open the export, click Ask Gemini and type "create a pivot table of net_value by customer_code and month, with credits subtracted, in a new sheet"; then check the grand total against your accounts, exactly as you would with an upload. In Excel, format the export as a table first, which gives Copilot a clearly defined range to work on. The trade-off is that in-sheet tools see only that workbook, which is often a benefit: the data stays inside your company's Workspace or Microsoft 365 account. If you want to run the same checks by hand, the Excel formulas guide covers the SUMIFS and pivot-table skills they rely on.

Once the monthly figures are reliable, they become the history you need for forecasting next quarter's sales with AI.

Signs the file is too big or messy for a chat upload

  • Uploads fail or time out, or the tool says it analysed a sample. Summarise first (for example, monthly totals per customer and product) and upload the summary.
  • Several files need joining (sales, costs, customer groups) and the tool keeps getting the joins wrong. Join them in Excel or Sheets first, where you can see the result.
  • Every month needs 30 minutes of manual tidying. Fix the export or use a flat report instead.
  • Different people get different answers to the same question. Standardise the prompt and data dictionary in a shared Project.

For what these tools can and can't read in other formats, such as PDFs of reports or photos of printed sheets, see whether ChatGPT can read PDFs, spreadsheets and photos. Used this way, AI turns a sales spreadsheet from a record you file into a set of questions you answer every month, with the reconciliation as the step that keeps the answers honest.

Questions about putting sales data into AI tools

Is it safe to upload my sales spreadsheet to ChatGPT or Claude?

On a business plan such as ChatGPT Business, Claude Team or Enterprise, your content isn't used for model training by default, and the account belongs to the company. On a personal plan, switch off the model-training setting and remove customer names and contact details before uploading. Either way, upload only the columns the question needs, and check your customer contracts for any confidentiality terms about their data.

How big a spreadsheet can AI tools handle?

Per the vendors' help pages, ChatGPT accepts spreadsheets up to roughly 50MB, depending on row size, and Claude accepts files up to 500MB with up to 20 per chat, though Excel files there need code execution switched on. In practice, a few hundred thousand rows of a narrow export is fine. Much bigger than that, summarise in Excel or Sheets first and upload the summary.

Can AI connect to my accounting or sales system instead of a file?

Sometimes. Some accounting packages have their own assistants that answer questions from the live ledger, and ChatGPT and Claude can connect to some business apps on business plans. A live connection saves exporting, but a file gives you a fixed snapshot you can reconcile, which is safer for your first analyses. Start with exports, then connect once you trust the answers.

Further reads

Sources: OpenAI File Uploads FAQ (file and spreadsheet limits); Claude help article 'Upload files to Claude' (file limits, code execution for Excel files); Google Docs Editors Help on Gemini in Sheets; facts sheet for plan prices and training defaults.

Want your sales data answering real questions?

On a 1:1 call we'll look at how your sales data is exported, set up a clean monthly file and a tested set of questions, and choose the AI tool that fits your current software.

Book a 1:1 call with me