Local-first · no data leaves your machine

Clean data once.
Re-run the pipeline forever.

Profile a messy CSV / Excel / Parquet / JSON file, review a cleaning pipeline as plain YAML, and export it as standalone pandas, Polars, or SQL code you own.

Chat tools clean a file once. A pipeline cleans every month's file.

The tidysheet interactive UI

Not another one-shot cleaner

Everything serializes, diffs, re-runs, and exports. Nothing is fixed silently.

🧬

The pipeline is the product

Every step is declarative YAML — git-diffable, re-appliable to next month's file, and validated against the schema before it runs.

📤

No lock-in

Export the whole pipeline to standalone pandas, Polars, or DuckDB SQL — verified cell-for-cell against the engine. Keep working code even if you drop the tool.

🪄

Infer from a hand-edit

Already fixed a file in Excel? Hand back both versions and tidysheet reverse-engineers the steps that reproduce your edits — and verifies them.

🛡️

Guarded re-runs

Re-running snapshots what the data looked like and reports value drift loudly — a new category, a value that silently coerces to null — instead of handing back quietly-wrong data.

🔍

Deterministic profiling

Types, missing values, distincts, duplicates, IQR outliers, and semantic types (emails, currencies, dates-as-text, countries) — no AI, fully explainable.

🤖

AI as an optional seam

The core runs offline with no model. An LLM may only propose steps for what deterministic rules can't explain — and its proposals pass the same verify gate. Bring your own model.

The workflow

Four verbs. Learn it in a minute.

1

Profile

tidysheet profile data.csv — a self-contained report of what's in here and what's wrong.

2

Suggest / Infer

suggest proposes steps, or infer original edited reverse-engineers them from your hand-edit.

3

Run

run pipeline.yaml next.csv --strict — replay forever; fail loudly on drift.

4

Export

export --to pandas — standalone code you own, no tidysheet dependency.

# turn a hand-cleaned Excel file into a reusable, verified pipeline
tidysheet infer  messy.xlsx  messy_cleaned.xlsx  -o pipeline.yaml
#   ✓ customer: stripped surrounding whitespace (12 cell(s))
#   ✓ country:  8 value replacement(s) (usa→United States, uk→United Kingdom, …)
#   Reproduced 214/214 edited cell(s) (100%).

# re-run on next month's file — drift never passes silently
tidysheet run  pipeline.yaml  next_month.xlsx  -o clean.csv  --strict

🔬 Live profile report

A real, self-contained report generated by tidysheet profile on the demo dataset — works entirely offline, light & dark.

Open the report →