Ask for clean data.

Jade is an AI data analyst for messy spreadsheets. Describe the fix in plain English. Jade writes the pandas, runs it on your file, and shows its work.

Fig. 1 — The Jade workspace, recorded on the live app with its built-in sample file.Waiting on the model is sped up.
Files
CSV and Excel, every sheet.
Workspace
Flags blanks and junk values; charts land on a dashboard.
Assistant
Writes and runs pandas, then explains the result.

One request, measured.

The sample file is 500 real-world cafe sales with the usual damage. One plain-English request, “Clean up missing and invalid values,” takes it from unusable to ready.

MeasureUploadedAfter one request
Rows500497
Empty cells3290
Invalid values1740
Fig. 2 — The sample file before and after a single cleaning pass. Missing totals were recalculated, not dropped.

How it works

Three steps you can watch: what was wrong, what changed, and proof that nothing is left broken.

Upload a CSV or Excel file. Jade checks every cell and flags blanks and placeholder junk like ERROR and UNKNOWN before you type a word.

cafe_sales.csvrows 1–10 of 500
ItemQtyPriceTotalPaymentLocation
Coffee22.04.0Credit CardTakeaway
Cake43.012.0CashIn-store
Cookie41.0ERRORCredit CardIn-store
Salad25.010.0UNKNOWNUNKNOWN
Coffee22.04.0Digital WalletIn-store
Smoothie54.020.0Credit Card—
UNKNOWN33.09.0ERRORTakeaway
Sandwich44.016.0CashUNKNOWN
—53.015.0—Takeaway
Sandwich54.020.0—In-store
10 issues in these rows · 503 across the file
Fig. 3 — The first ten rows of the sample file, as Jade cleans them.

Under the hood

A LangGraph workflow decides what you are asking for, writes pandas code, runs it against your data, and checks the result before it answers.

Your message

POST /chat/stream

Classify intent

intent_classifier.py

Broad cleaning

Repeats until clean · stops when a pass makes no progress

Assess quality

quality_assessor.py

Write the fix

code_generator.py

Run pandas

code_executor.py

Transform · analyze · chart

One pass

Write code

code_generator.py

Run pandas

code_executor.py

Summarize

response_generator.py

Stream to the workspace

server-sent events

Fig. 4 — Each request is routed by intent. Broad cleaning runs a quality check, writes a fix, runs it, and checks again. Tokens stream to the chat as they are generated; the updated table and any chart arrive when the run finishes.
Next.js + React
The workspace: AG Grid table, chat, and a Chart.js dashboard.
FastAPI
File parsing with pandas, and chat responses streamed over SSE.
LangGraph
Routes each request and runs the multi-pass cleaning loop.
Groq · gpt-oss-120b
Fast generation for the pandas code and the result summaries.