1. Home
  2. /Work
  3. /Chat With Your Data

An AI that answers with your numbers, not its imagination.

Upload a spreadsheet, ask a question in plain English, and get a real answer back. The interesting part isn't the chat box — it's that the model never invents a figure. It calls tools that do the arithmetic on your actual rows.

Next.js 16React 19 Claude API · Tool useStreaming TypeScriptPapa Parse
Want one for your data? →

Project

AI agent web app

Type

Self-directed build

The point

Grounded answers, not hallucinated ones

Pattern

Tool use + the agent loop

Why this exists

Clients keep asking for "AI in my app". Most of what gets shipped under that name is a chat box wired straight to a language model — which is exactly the setup that confidently reports last quarter's revenue as a number nobody can find anywhere in the business. For anything involving money, that's worse than useless.

I built this to work the other way round. The model is good at understanding a messy human question and deciding what needs computing. It is not the thing that computes. So it doesn't.

How it actually works

The app defines a small set of tools the model is allowed to call, then runs an agent loop: ask Claude, and if it responds by requesting a tool, run that tool in real JavaScript over the parsed rows, feed the result back, and repeat until it has enough to answer in plain English.

you ─ question ─▶ Claude ─ "call aggregate(revenue, sum, by=region)" ─┐
                   ▲                                                   │
                   │                                            your code runs it
                   └────────── real numbers fed back ◀─────────────────┘
        (repeats until Claude answers without asking for a tool)

The model chooses which tool and what arguments. My code decides what the tool actually does — and that boundary is the whole design. There are three tools:

Every figure in an answer came out of deterministic JavaScript running over the uploaded rows. If the data doesn't support the question, the honest outcome is "I can't answer that from this" — not a plausible-looking number.

The build

Where it goes next

It's a focused build, and it's honest about its edges: the dataset lives in memory rather than a database, and answers come back as text and figures rather than rendered charts. Both are deliberate next steps rather than things I've quietly skipped — the agent architecture is the part that had to be right first, because charts drawn from hallucinated numbers are just prettier lies.

For a client build, the same pattern points at a database instead of a CSV, with auth and per-user access on top — the shape doesn't change, only what sits behind the tools.

What this one proves

That I build AI features the way they have to be built when money is involved: tool definitions, the agent loop, streaming, and — most importantly — knowing which parts of a system an LLM should never be trusted to do.

Thinking about an AI feature?

If it touches your real numbers, it needs to be built this way. Tell me what you'd want to ask your data and I'll tell you what's realistic.

More work

Web app · Live

CoffieFX — membership platform

Mobile Money and crypto payments that unlock access automatically.

Mobile app

SwiftDrop — delivery & errands

React Native, live map tracking, a full rider side with verified handover.