Dead numbers: why AI pastes values into your spreadsheet.
Ask an AI assistant to "add a 2027 projection column" and it will. The numbers look right. The formatting is clean. Then change your growth assumption and watch nothing move. The assistant gave you dead numbers — values sitting where formulas should be — and the workbook will keep looking correct right up until the moment it matters that it isn't.
A spreadsheet is a program, not a table
The entire point of a spreadsheet is that cells compute other cells. Change the input, the waterfall recalculates, the summary updates — that dependency graph is the model. A value where a formula should be is a cached result of a computation nobody kept. It renders identically. It prints identically. The difference only surfaces when an input changes — weeks later, silently, in whatever cell someone happens to trust.
Why every AI tool defaults to this
Hardcoding isn't a bug in one product; it's the natural output of how most AI touches spreadsheets. Four reasons, in rough order of blame:
1. The analysis pipeline produces values by construction.
Upload a workbook to a chatbot and your "edit" is Python running over
a copy of the data. Pandas computes 1.08 × 42,000 and
writes back 45,360. It has no concept that the answer
was supposed to be =D4*(1+$B$2) — the computation
happened outside the grid, so the grid gets only the residue.
2. Chat is answer-shaped. Language models are trained to answer questions, and "what's revenue in 2027?" wants a number. A formula isn't an answer — it's a small machine that produces answers, wired into a specific location in a specific file. That's a different artifact than chat output, and tools built on chat emit the thing chat is optimized to emit.
3. Flattened context has no geometry. To write
=C4*(1+$F$2), the model has to know your growth
assumption lives in F2, that revenue history sits in
C4, and that both will still be there when the formula
calculates. Paste a workbook into a prompt as text and that grid
geometry is gone. Emitting a literal is the only move that can't
dangle a reference — hardcoding isn't laziness, it's what's left
when the model can't see the grid.
Practitioners see this from the outside, too. A recurring complaint from accountants who've tested these tools seriously is that the model "doesn't understand grid layouts" — it confuses how headings relate to the numbers beneath them, even with analysis libraries helping. That's not a bug to be patched next quarter; language models consume the world as a sequence of tokens, and a two-dimensional dependency graph is a genuinely foreign shape. Tools that work have to hand the model the geometry explicitly.
4. Nobody catches it. A pasted value and a computed formula look identical on screen. The demo impresses, the review passes, the file ships. The failure is invisible by design.
The damage, itemized
- Silent staleness. Inputs move; the projection doesn't. This is the worst kind of wrong — confidently, invisibly, with last quarter's assumptions baked in as this quarter's facts.
- Audits stop cold. Anyone tracing precedents through the model hits a wall of literals, and from that point every number in the file is suspect. One hardcoded column can cost a workbook its credibility entirely.
- The model stops being a model. No scenarios, no sensitivity, no "what if growth is 5% instead of 8%" — what-if is the whole reason the file exists, and dead numbers don't answer it.
The classic way this gets discovered: someone changes an assumption the morning of a board meeting, the summary doesn't move, and the next hour is spent finding out how much of the workbook has been dead since March.
Getting formulas out of a chatbot anyway
If a chat tool is what you have, you can raise the odds considerably by hand-carrying the geometry it can't see:
-
State the addresses. "Growth is in
B2. Revenue 2024–2026 is inC4:E4. Write the formula forF4." Every address you pin down is a reference the model no longer has to guess. - Say "formulas, not values" — explicitly, every time. The default is values; you have to opt out of it.
-
Make it reference the assumption cells rather than
inlining their current contents —
$B$2, not0.08.
This helps, but two limits don't move. You're doing the context
management by hand, one address at a time. And the chatbot never
finds out how it went — it can't see the #REF! it just
caused, so you're the calculation engine's error handler.
What formula-first looks like when it's built in
The fix isn't a better prompt; it's a tool whose loop runs through the grid instead of around it. Finance users have started evaluating on exactly this axis — in CFO forums, the praise that matters is "proper formula structure, not hard-coded numbers, so what-if scenarios work." Concretely, that means four properties — this is how we built GridPath, but they're worth demanding from any spreadsheet agent you evaluate:
-
It writes ranges of formulas, not messages. One
tool call lays down a 58-row block of
=SUMs and lookups against real addresses — not sixty chat turns of pasted output. -
It sees formulas next to their computed values.
The context shows
=SUM(C4:C9)and the128,400it evaluates to — the machine and its output together — so the model reasons about a live grid, not a text dump. -
It reads its work back. After writing, the agent
re-reads the range. A
#REF!or#DIV/0!shows up as itself, gets fixed in the same session, and the loop continues until the block is actually clean. - The real engine does the math. When the file opens in Excel, Excel recalculates it. Your numbers come from the reference implementation, not from anyone's re-implementation of it.
The poster test
Whatever tool touched your workbook, run this before you trust the result: change one input by an order of magnitude and watch the dependents. If the totals move, you have a model. If nothing moves, you have a poster of a spreadsheet — pretty, printable, dead. It takes ten seconds, and it's the single highest-value habit for working with AI in spreadsheets. (For the wider tooling landscape, see our honest look at free Excel alternatives.)
Where GridPath fits
GridPath is formula-first by design: the agent writes
=SUM and =VLOOKUP against your real
.xlsx, checks its own output, and shows you every
change as a diff before it commits — on your own Claude or ChatGPT
subscription. Download for Mac or Windows,
or read why we built it.