Українська

AI

AI for analysing a sales spreadsheet: five questions that have several correct answers in one table, reference figures on a sample order set, and a check rule built on control totals

You export a quarter of orders, upload the file into a chat and ask for September revenue. The answer arrives in seconds, with a table and an explanation. The trouble is that the same table holds three different September revenues, and each one is correct for its own definition.

Updated 2026-11-10 9 min Figures carry a check date
Illustration generated with AI (OpenAI gpt-image-2.5-flare) and labelled with IPTC metadata.

Three revenues for one month

An online shop's order table contains cancelled orders, parcels the customer never collected and returns. The question "what was September revenue" does not say what to do with them. So one and the same file can produce three different figures, and none of them is an arithmetic mistake:

September 2026 revenue on the sample order set, UAH
All rows1,068,816
Excl. cancelled1,007,314
Completed only908,458

The set was generated by code; the figures are illustrative. "Excluding cancelled" still includes refused parcels and returns: the money for them either never arrived or went back to the customer.

The gap between the first and the third figure is UAH 160,358, or 17.7% above actual revenue. If the assistant silently summed every row, you got a figure 17.7% higher than what you earned, and it looks exactly as convincing as the right one.

The model does not know which statuses in your accounting system mean "money received". Only the owner or the accountant knows that. So checking the answer starts with the question, not with the model.

The sample order set

To show the discrepancies in numbers rather than words, we generated a sample set with code: 1,500 orders of a shop selling clothing, footwear and homeware for July–September 2026. The set is invented; any resemblance to real shops is coincidental. You can download it as CSV and test your own assistant on it. Column values are in Ukrainian.

ColumnWhat it holds
order_idOrder number. One order can have one, two or three rows
dateOrder date, YYYY-MM-DD
customer_codeCustomer code instead of a name and phone
channelWebsite, marketplace or social media
paymentCard or cash on delivery
statusCompleted, cancelled, refused (parcel not collected), returned
category, skuProduct category and SKU
qty, unit_price, discount_pctQuantity, unit price, discount in per cent
line_totalRow amount after discount, UAH
unit_costUnit cost, UAH

Control totals of the set: 2,208 rows, 1,500 unique orders, 2,778 units, a total of UAH 3,044,536 across all rows. By status: 1,262 completed, 86 cancelled, 58 refused and 94 returned. These figures are used in the check below.

Five questions and reference answers

Each of the five questions sounds routine to a shop owner. Each has a spot where the short wording allows two or three answers. The reference was computed by code on the full set.

QuestionWhat is ambiguousAnswers on the sample set
1. What was September revenue?Which statuses to countUAH 1,068,816 all rows; UAH 1,007,314 excluding cancelled; UAH 908,458 completed only
2. What was the average order value for the quarter?Divide by rows or by ordersUAH 1,392.78 per row; UAH 2,042.82 per order (completed)
3. Which category is best?By revenue, profit or marginRevenue: footwear, UAH 1,092,907. Gross profit: clothing, UAH 312,084. Margin: accessories, 58.3%
4. What share of customers are repeat customers?Share of people or share of orders49.8% of customers placed two or more completed orders; they account for 82.9% of completed orders
5. Which channel has the most returns?Count or rate, of all orders or of shippedBy count: website, 66 refusals and returns. By rate of shipped orders: marketplace 12.6%, social media 12.5%

A few notes on the table.

Average order value. Dividing the total by the number of rows instead of orders makes the average 1.47 times smaller: UAH 1,392.78 instead of UAH 2,042.82. The reason is that 1,262 completed orders take up 1,851 rows. The mistake is easy to miss because both figures look plausible. What to do with the average order value itself is covered in the article on average order value.

Best category. Footwear brings the highest revenue but the lowest margin, 24.7%. Clothing earns UAH 41,697 more gross profit on lower revenue. Gross profit here is revenue minus product cost, before delivery, fees and advertising. How to account for the rest is in the article on online shop unit economics.

Repeat customers. 49.8% and 82.9% answer different questions. The first says how many people came back. The second says what share of the shop's work comes from those who came back. A decision about a loyalty programme needs the second.

Channels. Marketplace and social media differ by 0.1 percentage points. Social media has 208 shipped orders, so a single order there weighs 0.48 points. The difference is smaller than one order, and no conclusion such as "social media beats the marketplace" follows from it. Ask the assistant to show the counts behind every percentage.

How to phrase the request

The ambiguity is removed in the question itself. Add five things to the request:

  1. A period with boundaries. "From 1 to 30 September 2026 inclusive, by order date."
  2. Statuses. "Count only the status 'Completed'." If your system has a dozen statuses, list the ones that mean money received.
  3. A unit of count. "Average order value is the sum of completed orders divided by the number of unique order_id values."
  4. The method. "Show the spreadsheet formula or the code you used."
  5. Control totals first. "Before answering, state the number of rows, the number of unique orders and the sum of line_total across the whole file."

An example request for the sample set:

The file holds orders for July–September 2026. One order_id can have several rows. First state: the number of rows, the number of unique order_id values, the sum of line_total. Then calculate September revenue by order date for the status "Виконано" (completed) only, and the average order value as the sum of line_total for completed orders divided by the number of unique completed order_id values. Show the code or formulas you used.

Why "ready-made data analysis prompts" help little here is covered in the article on prompts for a business task: the definitions of revenue and statuses cannot be written into a template, because every shop has its own.

How to check the answer

The rule is simple: the assistant calculates, and a person compares with a figure they calculated another way. This does not mean recalculating everything — three control totals and one spot figure are enough.

Checking an AI assistant's answer on a sales table
  1. Do the row count, order count and grand total match yours?Calculate them in the spreadsheet yourself: the number of filled rows, the number of unique order numbers and the sum of the amount column. On the sample set these are 2,208, 1,500 and UAH 3,044,536. No → the assistant read the file partly or wrongly; stop here
  2. Did the assistant show a formula or code?Without them you cannot see which rows it included. If there is no formula, ask for it in a separate message. No → the answer cannot be checked; do not use it for decisions
  3. Does the formula use the statuses and period you named?Look at the filter condition: no "Cancelled" in it, and the period ends on 30 September, not 1 October. No → fix the request, not the figure
  4. Does one figure match your own manual calculation?Take one category or one week and calculate it with a filter or a pivot table. Yes → the answers can be trusted within this file and these definitions

For the second step a single spreadsheet formula along the lines of SUMIFS(amount, status, "Виконано", date, ">=2026-09-01", date, "<=2026-09-30") is usually enough. Function names and the argument separator depend on the program and the locale settings.

Checking control totals takes a few minutes and catches the most dangerous case: the assistant read only part of the file or misread the columns and keeps calculating with confidence.

Columns to remove before uploading

None of the five questions above needs a column that identifies a customer. A customer code instead of a name gives the same repeat-customer share. Before uploading an export from a CRM or the shop's admin panel:

ColumnWhat to do
First name, last name, phone, emailDelete; if repeat customers matter, replace with a code
Address, pickup point, waybill numberDelete; for regional analysis keep the region or city
Customer comment, manager notesDelete: they often contain phone numbers and personal details
Payment details, partial card numberAlways delete
Product cost and purchase pricesKeep only on a plan where data is not used to train the model

Which data you can give an AI assistant on different plans is covered separately in the article on data for an AI assistant.

Our position

Use an AI assistant for sales spreadsheets as a fast calculator with explanations, not as a source of definitions. Write down the definitions of revenue, average order value and repeat customer once, paste them into every request and check every answer with three control totals. That way the assistant saves time on formulas and pivot tables, and the decision does not depend on how it understood a short question.

The position does not hold if your accounting system already has a report where these definitions are fixed and checked by an accountant: asking the assistant the same questions then makes no sense, and any gap between the two sources would need its own explanation. Nor does it hold for tables whose amount column mixes currencies or amounts with and without VAT: such a table has to be brought to one form first, otherwise the control total will match and the revenue will not.

Checked on 10 November 2026: every figure in the article was recalculated by code on the sample set of 1,500 orders generated for this article. No AI models were run on the set, so the article does not rate the accuracy of particular assistants; it shows where one table gives several correct answers.

Still not sure this applies to you?

Describe the situation. The first reply says whether this is our work and how long the diagnostic takes.

Request a diagnostic