๐Ÿ‡ Rabbithole โ† All lessons Work with us โ†’
Step 0 of 6
Day 17 of 30
Rabbithole ยท Learn ยท ~12 min read

Spreadsheet Q&A

Talk to your spreadsheet: ask questions in plain English, get answers (and charts).

OwnersBookkeepersSales OpsAnyone with a CSVGoogle Sheets usersNo SQL needed
โ˜…

Stop hunting through tabs for one number

You have the data. It's right there in a spreadsheet: every order, every invoice, every customer. But getting one answer out of it ("which region did the most last month?", "who hasn't paid?") means a pivot table, a wall of formulas, or a filter you'll have to rebuild next time you blink.

This kit lets you ask the spreadsheet a question in plain words ("total revenue by region, biggest first"), and get the answer back, plus a tidy little chart, plus the exact steps it used to get there. You read the steps, you trust the number. No formula wrangling, no SQL.

Plain-English glossary, once: A CSV is just a spreadsheet saved as plain text (every spreadsheet can export one). Claude is the AI that reads your question and figures out the calculation. An MCP server (more on that in Day 9) is a small wrapper that hands your sheet to Claude as a tool it can read, but only in the ways you allow.

โ†ณ Skip ahead and grab the free kit on GitHub โ†’

1

Point it at your data: a CSV or a Google Sheet

What's happening: The kit needs to know where your data lives. That's it. You give it a path to a CSV file on your machine (data/orders.csv) or a link to a Google Sheet you can read. The kit loads the rows into memory and notices the columns (their names and whether they hold numbers, dates, or text). Nothing is uploaded anywhere.

Here's a slice of the sample sheet that ships with the kit, a tiny orders export. Your real one can have thousands of rows and any columns you like:

#dateregionrepproductamountstatus
12026-05-02WestDanaPro plan$1,200Paid
22026-05-04EastMarcoStarter$300Unpaid
32026-05-09WestPriyaPro plan$1,200Paid
42026-05-12SouthDanaTeam$2,400Paid
52026-05-18EastSamStarter$300Unpaid
...42 rows in the sample (orders.csv)
2

Give it a brain: connect Claude

What's happening: Your question ("revenue by region") is plain English. Something has to turn it into an actual calculation (group the rows by the region column, sum the amount column, sort biggest first). That something is Claude. The kit hands Claude the column names and your question, and asks for a structured plan (which column to group by, which to total, how to filter), never loose prose. The kit then runs that plan on the data itself.
  1. Go to console.anthropic.com and sign in.
  2. Open API Keys โ†’ Create Key.
  3. Copy the key (it starts with sk-ant-).
Default brain: claude-opus-4-8 (sharpest). Lots of questions? Day 4: which model helps you pick a cheaper one.
3

Expose the sheet as a tool: read-only by default

What's happening: The kit wraps your sheet as a small MCP server (built with @modelcontextprotocol/sdk) so Claude sees it as a tool it can use, not a file it can rewrite. The tool offers a few safe, read-only actions: list the columns, count rows, filter, group, total. It does not offer "write a cell" or "delete a row" unless you turn that on yourself.
Why this keeps you safe:
โ€ข Read-only on your data by default. The tool can look, group, and total. It cannot change a single cell unless you explicitly enable writes.
โ€ข Every answer shows its work. You see the exact filter and computation it ran, so the number is auditable, not a black box.
โ€ข No edits without confirmation. If you do enable writes later, the kit drafts the change and waits for your tap before touching anything.

The same sheet-as-a-tool idea powers a lot of useful kits. If you want to understand the wrapper itself, Day 9: Build an MCP walks through it line by line.

4

Try it: ask a question, see the answer and the steps

What's happening: Ask the sample sheet a question the way you'd ask a coworker. The kit turns it into a plan, runs the plan on the rows, and shows you three things: the answer, the steps and filter it used (so you can check it), and a small chart when the answer is a breakdown. This box is live. Try it. It runs entirely in your browser, nothing is sent anywhere.
Spreadsheet Q&A ยท orders.csv (sample)

Tap a sample, or write your own:

This runs entirely in your browser, nothing is sent anywhere.
5

Audit the answer, and confirm before any change

What's happening: Because every answer ships with the steps and the filter it used, you can sanity-check the number in seconds. And if a question would change the sheet ("mark order 2 as paid"), the kit never just does it: it drafts the edit and shows you exactly which cell would change, then waits. The demo above is wired to exactly this. Try the confirm buttons.
Three promises the kit keeps:
โ€ข The data is read-only unless you flip a switch you control.
โ€ข Every answer is auditable: you always see the computation.
โ€ข No write touches the sheet without your explicit confirmation.

In the kit, you ask from the terminal (npm run ask), from Claude itself (it drives the MCP tool), or from a tiny chat box. Same engine, same "show the work" answer, same read-only-by-default rule everywhere.

6

Bonus: save a question and get a chart on a schedule

What's happening: A question you ask a lot ("revenue by region this month") can be saved. Run npm run report and the kit answers your saved questions and renders each one to a simple chart you can drop into an email or a slide. Still read-only, still shows its work, still never edits your sheet.
npm run ask        # ask a one-off question in your terminal, nothing changes
npm run report     # answer your saved questions + render charts
npm run mcp        # expose the sheet as a tool so Claude can query it
npm start          # run the little chat box for the whole team

Run it yourself: it's free and it's the real thing

The kit is a complete, runnable repo: point it at a CSV or Sheet, connect Claude, and ask questions in plain English. It shows its work, draws charts, and is read-only by default. MIT-licensed, runs on your machine, nothing crippled. Run npm run setup and you're asking questions.

Get the free kit on GitHub โ†’
โ–ถ

Go live

With the kit downloaded and the checklist green:

npm install
npm run setup     # Claude key + your data path saved on YOUR machine
npm run ask       # ask your spreadsheet a question

Type a question and read the answer, the steps, and the chart right there. Prefer to drive it from Claude? Run it as an MCP server (npm run mcp) and your sheet becomes a tool Claude can query, the same idea from Day 9: Build an MCP. Not sure which model to point it at? Day 4: which model helps you choose.

Want it talking to your live data across every tool?

This kit is the DIY taste, one sheet on your laptop. We connect it to your live data across tools (your CRM, your billing, your warehouse), with guardrails: role-based access, audit logs, and read-only locks where you want them, so the whole team can just ask.

Have Rabbithole build it โ†’ โ†ณ Day 9: Build an MCP