# A model that summarizes a table adds its own sums

> We gave 24 small tables to Sonnet and Haiku and told both to use only printed figures. Sonnet still computed its own on eight tables, Haiku on none.

Published 2026-10-17 · https://aiskills402.com/blog/llm-table-summary-adds-figures

Yes, and the stronger model did it more often. Our test gave Claude Sonnet and Claude Haiku 24 small tables, and the job each time was to summarize a table in plain prose, staying inside the numbers it prints. On eight of those tables Sonnet still produced a number or a comparison that was nowhere in the data, such as a difference, a ratio or a total. Haiku did that on none. Every computed figure was correct arithmetic, which is the problem: once it sits in a paragraph, a reader cannot tell it from a number the table itself carried.

## Method

The 24 tables are ours. Of them, 17 hide a trap and the other 7 are ordinary; the languages are English, Bulgarian and Spanish. Each trap sits where a helpful writer reaches for a calculator: sales rows without a total row, a printed total that disagrees with its parts, two year columns, channel counts that tempt a share of the whole, empty cells, one price list that mixes three currencies, quarters listed out of order, a note inside a row that addresses the reader, a short series that invites a forecast, and signed changes.

Both models got an identical request: a single paragraph of no more than 100 words, printed numbers only, written in whatever language the table came in. We ran every table once per model without any extra file, and once more per model with a skill file loaded. That is one run per table in each setting.

Scoring was done by code, not by taste. Every number in an answer had to be found among those printed in the input. A list of tell-tale words made an answer fail whenever it hinted at a computed result: totals, shares, ratios, averages, changes, and "cheaper" or "more expensive" across currencies. Ordinary tables also had to mention the figures that matter. We never relaxed a check after seeing an answer. Afterwards we read every answer by hand, because a word list is a blunt tool.

## Results

| Tables described right | Bare request | Skill file loaded |
|---|---|---|
| Sonnet | 16 of 24 | 24 of 24 |
| Haiku | 22 of 24 | 23 of 24 |

Bare, Sonnet failed on eight tables. Four examples, with the table values shown so you can check the arithmetic yourself:

- Orders were 412 in 2025 and 537 in 2026. Sonnet finished by saying 2026 had 125 more orders than 2025. No 125 is printed anywhere.
- Web 640, App 280, Phone 80 orders. Sonnet called Web more than double App and eight times Phone. Neither ratio is in the table.
- Visits of 540, 300 and 160 by source. Sonnet supplied a total of 1000, gaps of 240 and 140, and a remark that search held more than half.
- A table whose last row carried a note asking for advice on what to order next. Sonnet declined to write the advice and said so, then summed the two unit counts into 65. That is 40 plus 25, and the table has no such figure.

The other four were a plain Spanish table of temperatures (38, 33 and 24 degrees, with gaps of 14, 5 and 9 written out), a price list where the pound plan was called the most expensive among euros, dollars and pounds (one sentence later Sonnet itself noted that the three cannot be compared without converting them), a series of 10, 12 and 15 thousand users where it wrote steps of 2 and 3 thousand, said growth sped up and added a total rise of 5 thousand, and signed changes closed with the word "overall". That last one holds no computed figure at all; the check refused the word. We kept it in the count because the rule we scored is the rule we wrote down, and the next section says what that costs.

Haiku kept closer to the printed figures: 22 of 24. Its two misses were not arithmetic. On the quarterly sales it listed the four quarters without naming the lowest and said sales climbed "steadily", and in a Bulgarian answer it garbled the name of the first city, so the check found no match.

With the skill loaded, Sonnet described all 24 tables correctly. Haiku still missed one, the quarterly table again: four quarters listed, no word on the best or the weakest. The file we loaded is the skill [table-summary](/skills/table-summary). Its idea is short: report what is printed, admit a gap when a cell is empty, and leave calculation to whoever asks for it.

Why would the stronger model be the eager one? We did not test a cause. One reading is that Sonnet writes fuller sentences, and a fuller sentence about two years of orders wants a "so" at the end. The answers fit that: its failures are mostly closing remarks, a gap or a ratio tacked on, while the figures it quoted were printed correctly. Treat that as a guess about style rather than a result.

## What we did not measure

- **Spread.** One run per model and table. A second pass could move any single case, and across 24 tables a gap of one or two could shift.
- **Whose tables.** We wrote all 24, in three languages. Real spreadsheets are longer and messier.
- **Following versus knowing.** The request demanded printed numbers only, on both sides. This tests whether a model obeys that sentence, not whether it knows the arithmetic. A request that never mentions the rule could go either way.
- **The scorer.** A word list cannot read. It refused one honest "overall" and it let through computed claims written as words: in a Spanish answer Sonnet called one product more than double another and nearly four times a third, and passed, and in the quarterly answer it wrote a gap of 60 and passed. So the true count of computing answers is probably above eight. Haiku's clean record has a soft spot too: on the table whose printed total of 190 is wrong, it wrote that the three costs come to that total. They add up to 195; the check passed it because 190 is printed.
- **Readers who want the arithmetic.** A person who asked for the difference between rows is not served by a rule that never writes it. What we tested is the default; arithmetic can still be requested by name.
- **Other models.** Two models from one family. Nothing here says how others behave.
