Your weekly growth report is due. An AI tool can turn the raw tables into numbers in minutes, but your name goes on the report, so the real question is whether you can send what it gives you.
We tested three tools between 23 September and 12 October 2026. Most people know ChatGPT. Quadratic is a spreadsheet where AI works in the sheet, and Julius is an AI assistant built for data analysis. We gave them simulated data for 6 fictional companies, each analysed once and then recalculated after a data update, plus a 60-question bank on one e-commerce dataset, and checked every answer against an answer key computed from the data.
You can’t send it without checking it, whichever tool you use. None of the three gave us a full set of numbers we would send unchecked, and the mistakes that mattered were rarely arithmetic. They were a wrong file, a region silently dropped, or a total declared “verified” when it wasn’t.
ChatGPT’s overall score was 95.5 out of 100, against Quadratic’s 74.8, but even ChatGPT silently dropped North America from two answers; the score averages the five capabilities tested, as explained at the end. With the rules spelled out, ChatGPT and Quadratic both got all 72 first-round company metrics right and recalculated all six companies correctly after a data update, and Julius got all 69 metrics that were visible in its saved pages. When the AI had to decide the rules itself, ChatGPT got 27 of 30 cross-table questions right, against 21 and 11 in Quadratic’s two runs. Four of ChatGPT’s 30 prompts for those questions carried extra hints, and its CSV run was a single conversation; leaving those four out, it still led with 23 of 26, against 19 and 11.
Julius has no overall score. It got 9 of the first 10 questions right on reworded prompts and then ran out of credits, so it has no question-bank results from question 11 on.
Here is one of the mistakes from this test. It began with a file mix-up on our side.
We asked Julius to recalculate one company’s results after a data update. Its projection came back at 28 orders and $1,960 in revenue, and the arithmetic was right. The correct answer for that company was 32 orders and $2,400.
The numbers belonged to a different company. When our tester attached the update, two files with the right names came from Julius’s file library, and both belonged to another company. Julius did not hide the problem: in the same reply its metrics showed $0 in revenue and zero buyers, and it flagged that the transaction IDs carried the other company’s prefix. The warning was on the screen, but the projection looked like a normal answer. After the correct files were attached, its rerun got every value right.
This is the results chart at the top of this page ↑
All data is simulated, and the results apply to this test only. How we checked the answers is explained at the end.
When the rules are spelled out, does AI get the numbers right?
Mostly, yes.
We started with metrics whose rules were written out plainly, such as this month’s revenue net of refunds, excluding test accounts. Each company had 12 metrics, 72 in all. ChatGPT got all 72 right, and so did Quadratic, which worked through both rounds in one combined pass from instructions our tester wrote. Julius got all 69 that its saved pages show; three values for one company didn’t appear on the page, so we couldn’t check them.
On the 10 most basic questions in the question bank, ChatGPT got all 10 in its CSV run and all 10 in its Excel run. Quadratic got 9 of 10 in both runs, and so did Julius. The misses were odd.
Asked how many customers there were, Quadratic’s Excel run answered 180. The right answer was 24,000: it had taken a 180-row table in the file to be the customer table. In the CSV run its sheet had the right split, 248 test customers and 23,752 others, but its written answer said 2,000 and 22,000.
Julius reported 10,745 customers with no region and called that normal. Those customers are in North America, whose region code is NA, and many data tools read those two letters as “no data”. Julius was given reworded versions of these 10 questions, some without the bank’s rules such as excluding test customers, so its 9 isn’t a like-for-like match with the other two.
ChatGPT exported the metrics, the list of excluded transactions and the code it used for every company. When we reran its code on our copy of the data, every data file the code wrote came out the same.
Quadratic did one useful thing on the company tasks. It put its metric results from both rounds (72 per round) into a single sheet, so you can see where each number came from. It did not produce the list of transactions it excluded, which the task asked for.
When the data is updated, is AI using the new data?
Mostly. The errors we saw came from a wrong or missing file, not from the arithmetic.
A weekly report gets new data every week, so we swapped in a new version of the transaction data and asked for a recalculation.
ChatGPT got all six companies right: all 144 updated values (72 metrics and 72 scenario figures), with the previous results kept for comparison and the changed and unchanged metrics split correctly. It also explained what had changed in the data, for example one refund rising from $0 to $12 and a new $96 order at one company.
Quadratic also got all 144 updated values right and kept apart the metrics that should change from those that shouldn’t. It worked out both rounds in one pass from a file holding both versions of the data, so this shows less about how it handles a real refresh than a separate recalculation would.
Julius got four of the six companies fully right, counting the rerun from the opening story. For one of them it explained where the changes came from: one refund went from $0 to $11, and a new customer paid $72. Those were exactly the two changes we had planted, and the update prompt had asked for that explanation.
At a fifth company Julius got the new numbers right but described the change wrongly. Its “previous” column showed refunds of $34 and net revenue of $1,986, where the first round had found $20 and $2,000. It then called the refund total unchanged and missed the refund we had planted, which went from $0 to $14.
The sixth case was our mistake, not Julius’s. Our tester started the last company’s update as a new task and didn’t attach the customer table. Julius said so on screen and used substitute data, and its numbers were wrong: it counted a test customer’s $300 order, giving 23 buyers instead of 22 and $5,921 in gross revenue instead of $5,621. When we later asked it to redo the work with only the real customer table, it said it couldn’t without the file. Because the required file was never supplied, we count this company as not tested.

So after a data update, don’t jump to conclusions. Look at the first few rows the AI read in, check that the company, IDs and dates match, and don’t give different files the same name.
When nobody says how to calculate, does AI get it wrong?
Quadratic often did and ChatGPT sometimes did, and where it happened, the wrong answers looked convincing.
Many real questions come without rules. Should gross revenue include cancelled orders? How many contracts were active at the end of June: by their status then, or by their status now? We wrote 30 questions like this.
ChatGPT got 27 right. Quadratic ran them twice and got 21 right in its CSV run and 11 in its Excel run. The conditions weren’t equal. Four of ChatGPT’s 30 prompts carried extra hints, such as “explicitly exclude test customers” or the columns to return, and it answered every question in one conversation, so earlier answers may have helped later ones. Leaving those four questions out, ChatGPT got 23 of 26 against Quadratic’s 19 and 11, so it still got the most right. Julius has no results on these questions because it ran out of credits.
Growth reports · rules the AI had to decide
ChatGPT got 27 of 30; Quadratic got 21 in one run and 11 in the other
One square per question; filled: right. Ten questions per level.
| Product | Single-table rules | Multi-table joins | Point in time, denominators | Total |
|---|---|---|---|---|
| ChatGPT | 10/10Best | 9/10Best | 8/10Best | 27/30Best |
| Quadratic · CSV run | 7/10 | 7/10 | 7/10 | 21/30 |
| Quadratic · Excel run | 2/10 | 5/10 | 4/10 | 11/30 |
| Julius | Not run: out of credits | Not run: out of credits | Not run: out of credits | Not run: out of credits |
- Not run is not a failure: Julius ran out of credits and has no results from question 11 on.
- Four of ChatGPT’s prompts carried extra hints (three single-table, one multi-table); without them it got 23 of 26, against 19 and 11.
- BEST marks the best result in each column; ties are marked equally.
Here are a few of the errors.
North America disappeared. We asked ChatGPT how sales changed by region from June to July. Its answer listed only Asia-Pacific and Europe. It read North America’s region code, NA, as “no data”, just as Julius did, and more than $360,000 of North American sales over the two months dropped out of the analysis. It happened again in a question about failed payments, and in three other questions it kept North America. It fell into the same trap twice.
A wrong total that “verified” itself. In its Excel run, Quadratic left out the revenue lost from contracts that ended, reported zero lost revenue, and declared the revenue bridge verified. That word invites you to stop checking.
Cancelled orders counted as revenue. In both runs, Quadratic counted cancelled and failed-payment orders in gross revenue, overstating January by more than $36,000. In the Excel run it carried the error into the next question.
Today’s status for a question about the past. Asked how many contracts were active on a given date, Quadratic’s Excel run used each contract’s current status and got 6,345. The right answer was 6,276; its CSV run got 6,278 by counting contracts that ended on that day.
ChatGPT went off course too. Asked for the average value of orders containing one product, it should have used that product’s sales alone, which comes to $35.27. It used the whole order and got $191.05.
It also kept a clear head on a refund question. August’s refund rate was only 0.96%, and ChatGPT pointed out that those orders weren’t yet old enough to be refunded, so the low number said nothing about order quality.
There is also a consistency problem. Across Quadratic’s two runs, 19 questions in the bank were right in one run and wrong in the other. If you run a question only once, you can’t tell which of the two you got. ChatGPT ran these questions once, so we can’t tell how consistent it is.
When the data itself has errors, does AI notice?
On planted bad records, yes. On messy values such as comma decimals and odd dates, ChatGPT did and Quadratic mostly didn’t.
Real data is never clean, so we planted problems on purpose. The first check used event records, the clicks, sign-ups and similar actions a product logs. We planted 8 bad records per company, 48 in all, alongside valid records that should not be flagged. ChatGPT found all 48 and flagged none of the 48 valid records. Julius found all 40 planted errors at the five companies whose lists we could check and flagged none of the 40 valid control records; its list for the sixth company wasn’t visible on the saved page. Quadratic reported finding all 48 with no false flags; its report lists the rows for one company and says the others follow the same pattern. We checked those 8 rows, and all 8 match the planted errors; the other 40 rest on Quadratic’s reported total.
The second check was 11 dirty-data questions: duplicated orders, mistyped dates, amounts written as 506,0 instead of 506.0. Quadratic got 8 of 11 in its CSV run and 6 of 11 in its Excel run, and its misses were typical:
- Amounts using a comma as the decimal point: it caught none of them in either run.
- Ambiguous dates, future dates and dates with time zones: it flagged none of them in either run.
- The full cleanup should have quarantined 90 rows. The CSV run quarantined 6,566; the Excel run quarantined 30 and removed 50 duplicates where there were 40.
ChatGPT got all 11. In its first session the dirty files hadn’t been provided for 8 of the questions; it said it couldn’t see them and didn’t make up numbers. It got the other 3 right, and in one of them showed that joining orders to both item rows and payment attempts inflates sales from $6,029,123.18 to $14,500,444.56, 2.4 times the real figure, and explained why. When we reran the 8 on 12 October with the files provided, it got all 8 right. Its full cleanup quarantined exactly the 90 rows it should have and logged every change, and it flagged an instruction hidden in a support ticket without acting on it.
Growth reports · dirty data
ChatGPT got all 11 of 11; Quadratic got 8 in one run and 6 in the other
One row per question, one square per answer.
RightWrong
| Question | ChatGPT | Quadratic · CSV run | Quadratic · Excel run |
|---|---|---|---|
| Duplicate order keys | Right | Right | Wrong |
| Conflicting duplicate amounts | Right | Right | Right |
| Orders with an unknown customer | Right | Right | Right |
| Currencies and exchange rates | Right | Right | Right |
| Date defects | Right | Wrong | Wrong |
| Number formats | Right | Wrong | Wrong |
| Test-account inflation | Right | Right | Right |
| Join inflation | Right | Right | Right |
| Incomplete 90-day windows | Right | Right | Wrong |
| Instructions hidden in text | Right | Right | Right |
| Auditable full cleanup | Right | Wrong | Wrong |
- 8 of ChatGPT’s answers come from a rerun on 12 October with the dirty files provided. In its first session it said it could not see them and did not invent results.
- Julius did not run these questions: it ran out of credits before question 11.
Can AI explain why the business changed?
ChatGPT mostly could, with 7 of 8 judgment questions right. Quadratic got 5 of 8 in its CSV run and 2 of 8 in its Excel run.
Here is one question. Overall, the Search channel converts at 32% and Meta at only 11%, which makes it look as if the whole budget should go to Search. But split by region, Meta is higher in both: 40% against 35% in North America and 8% against 6% in Europe. The two channels’ traffic sits in different regions, so pooling them flips the comparison. ChatGPT and Quadratic both spotted this.
Asked whether a price increase brought in more revenue, ChatGPT gave the figures (unit price up 10%, volume down 24%) and proposed a randomized price test. Its one miss was the failed-payment question, where it dropped North America again even though its estimate for Europe was right.
In Quadratic’s CSV run, the figure it called customer acquisition cost was really spend per converting session, and its business summary carried a wrong churn rate (51.28% instead of 49.59%) from an earlier question. In the Excel run it gave a cause the data couldn’t show and invented sample sizes, dates and effect sizes for an experiment plan.
Julius ran out of credits
We tested Julius on its Plus plan, $20 a month, between September and 12 October 2026. It stopped at the credit limit more than once during the company tasks. On the question bank it answered the first 10 questions on 9 October and then ran out of credits; a second attempt on 12 October ran out again. It has no results from question 11 on. The plan page offered an upgrade to the $45-a-month Pro plan.

Credits aren’t scored, but for a team that produces a report every week, they are a cost to factor in.
What else to watch for, though we didn’t score it
None of the following affects the results above. These things came up during the test.
| Product | What happened this time | What to do when you use it |
|---|---|---|
| Quadratic | Made claims about a file before it had been imported | Confirm the data it cites actually exists |
| Quadratic | Didn’t produce the list of transactions it excluded | Ask for the exclusion list explicitly and check it |
| Julius | Worked on another company’s files when same-named files were attached, though it flagged the mismatch | Don’t reuse file names; read its warnings and glance at the preview |
| ChatGPT | Said plainly when a file was missing and didn’t make up numbers, but gave no warning when it read North America as blank | It will tell you when material is missing; rule errors you still have to check yourself |
So, can you send an AI-built weekly report straight to your boss?
Not without checking it, whichever tool you use.
If your weekly report follows fixed rules, ChatGPT and Quadratic both got every company metric right, and Julius got every first-round metric we could check right. After a data update, ChatGPT and Quadratic got all six companies right, though Quadratic computed both rounds in one pass. Julius got four companies fully right and one partly right, and we didn’t test the sixth because we left out its customer table.
Quadratic put both rounds’ results in one sheet, which makes them easier to trace, but it didn’t produce the exclusion list, so ask for it. With Julius, avoid duplicate file names, read its warnings, and plan for the credit limits.
If a one-off business question comes up and the AI has to decide the rules itself, this round’s results point to trying ChatGPT first, even leaving out the prompts that carried hints. It also had the higher overall score, 95.5 against Quadratic’s 74.8, but it still dropped North America from two answers.
Before you send anything:
- Put the rules in your request: whether to subtract refunds, whether test accounts count, and which date’s status to use.
- Look at the first few rows the AI read in and check the company, dates and regions.
- Check one or two numbers you already know, such as the total order count.
- Have someone look over any number that involves money.
We didn’t test database connections, long-term cost or hours saved. If you’re choosing a tool, the best test is the report you produce most often.
Method and where the evidence stops
The products tested were ChatGPT, Quadratic and Julius. Julius ran the company tasks between 2026-09-23 and 2026-09-26, with a rerun and a follow-up check on 2026-10-01. Quadratic ran the company tasks on 2026-09-28 and 2026-09-29, the question bank in Excel on 2026-09-29 and in CSV on 2026-09-30. ChatGPT’s question-bank runs were recorded by 2026-10-02; its company tasks, and a rerun of eight dirty-data questions with the files provided, ran on 2026-10-12. Julius answered questions 1 to 10 on 2026-10-09. We rechecked every record against the answer keys on 2026-10-16.
- Company tasks: 6 fictional companies (two each in software, e-commerce and local services). For each, a first analysis and then a recalculation with replaced transaction data, covering 12 metrics, a list of excluded transactions, 8 planted event-tracking errors and three scenario projections.
- Question bank: 10 tables and about 355,000 rows from one fictional e-commerce company, with 60 questions from basic counts to business judgment. Quadratic ran it once with CSV and once with Excel. ChatGPT ran it once with CSV and ran the first 10 questions with Excel. Question 60 compares connection modes and is not scored.
The results are grouped into five capabilities:
| Capability | What it tests | Based on |
|---|---|---|
| 1. Metrics with stated rules | Whether metrics are right when the rules are written out | 72 first-round company metrics; questions 1 to 10 |
| 2. Data refresh and recalculation | Whether it recalculates after a data swap and reads the new file | Updated metrics and scenario figures for the 6 companies |
| 3. Cross-table business rules | Whether it gets the answer right when it has to decide filters, joins and denominators | Questions 11 to 40 |
| 4. Data quality checks | Whether it finds planted errors without flagging valid records | The event check; questions 41 to 50 and 58 |
| 5. Business interpretation | Whether conclusions rest on numbers, and whether correlation is presented as causation | Questions 51 to 57 and 59 |
The overall score is the average of the five capability results on a 0 to 100 scale; where a capability has two parts or a tool ran two modes, they are averaged first. Each capability result counts only the answers we could check. ChatGPT scored 95.5 and Quadratic 74.8. Quadratic’s score averages its CSV and Excel runs, while ChatGPT’s rests on its CSV run alone after question 10. Counting Quadratic’s CSV run alone, its overall score would be 82.8; ChatGPT’s stays 95.5. Julius has no overall score because three capabilities were not run.
- Numbers were checked against answer keys recomputed from the data: counts, IDs and dates exactly, money to within a cent in the company tasks and 2 cents in the question bank, rates to within 0.01 percentage points or the key rounded to the precision shown. Judgment questions also required a correct core conclusion and no unsupported cause or invented parameter. A value missing from the saved record counts as not tested, not as wrong.
- Some records are our tester’s transcripts of the sessions rather than saved product pages: Quadratic’s results, 14 of ChatGPT’s CSV answers (questions 1 to 9, 11, 13, 15, 16 and 18), Julius’s rerun on 2026-10-01 and Julius’s answers to questions 1 to 10.
- Anything not run counts neither as wrong nor as right.
- Four calls set how some answers count. Julius’s update for the company whose files were mixed up counts its 2026-10-01 rerun, whose values were right and which was saved as our tester’s transcript. Julius’s update for the company run without its customer table counts as not tested, because a result that wasn’t properly produced is untested, not 0. ChatGPT’s failed-payment question counts as wrong because it dropped North America, although its estimate was otherwise right. Three Quadratic answers count as right as graded: a duplicate-key question in Excel, the price question in CSV and the hidden-instruction question in Excel, graded on the run after the file was actually imported.
- Test conditions differed by tool. Quadratic ran both rounds of the company tasks in one combined pass, from instructions our tester wrote for the combined file. Julius received reworded prompts for some steps, and two of its updates were started as new tasks rather than continuations. Five of ChatGPT’s CSV prompts carried extra hints, such as “explicitly exclude test customers” or the output columns; four of them were cross-table questions. Its first Excel prompt asked only for the total customer count. ChatGPT’s CSV run was a single conversation, so earlier answers may have helped later ones, and its dirty-data rerun was a single conversation too. Its company tasks ran on 2026-10-12, after its question bank. Julius received reworded versions of questions 1 to 10, some without the bank’s rules such as excluding test customers, and ran out of credits before question 11.
- All data is synthetic, and the dirty-data problems were planted in fixed numbers that don’t reflect how often they occur in real businesses. Each mode ran once. The plans and model versions for ChatGPT and Quadratic weren’t recorded.
- We didn’t test database connections, hours saved or cost of use.
The results describe how each product did on this round’s tasks only, not the value of buying the whole product.
This review received no sponsorship of any kind.
Commercial relationships. analyst.ai has no commercial relationship with any product reviewed here: no sponsorship, paid placement, affiliate links, or vendor-provided accounts or credits.
Data. The tables behind this review (results per capability, per company task and per question) are available to download from this page. Selected original outputs appear as figures above; the full set of originals will be added to the evidence pack.
Corrections. Spot an error? Our corrections log and how to report one: analyst.ai/corrections.
Sources
The records below will be added to the evidence pack.
- Our recheck of every result on file, 16 October 2026: a summary, the answer keys and the scripts that recompute them.
- Question-bank results, one row per tool, run and question (the per-question download on this page). The four cross-table prompts with extra hints are questions 12, 17, 20 and 21.
- Company-task results, one row per tool, company and step, and one row per checked value.
- Answer keys: for the company tasks, recomputed from the input data; for the question bank, checked against 60 reference database queries.
- ChatGPT’s question-bank records (the CSV run and Excel questions 1 to 10), received 2 October 2026.
- Quadratic’s company tasks, event check and question-bank runs, received 2 October 2026.
- Julius’s company tasks: saved pages and per-step screenshots, received 2 October 2026.
- Julius’s rerun for the company whose files were mixed up, 1 October 2026.
- Julius’s update without the customer table (Figure 2) and the follow-up request.
- Julius’s plan and credits (Figure 5).
- An inventory of every raw item, with its tool, test, date and status.
- ChatGPT’s company tasks and dirty-data rerun (12 October 2026), Julius’s answers to questions 1 to 10 (9 October 2026) and our rerun of ChatGPT’s saved code, received 16 October 2026.