Pipelines you can open in one click

Sixteen cleaning pipelines, each one a single link. Click any of them and the builder opens with the steps already in place and a sample file already running through them, so you see the result before you go and find your own data. Every step is yours to change once it is open.

The everyday thirteen

The chains people build most often, in roughly the order they come up. Each opens with a sample already loaded.

Quick clean The ten-second sanity pass: structural problems reported, exact duplicate rows dropped, nothing else touched. ValidateRemove duplicates Opens with messy.csv loaded · Open recipe → Case-insensitive dedupe Catches ACME Corp against acme corp: rows that are the same record typed twice by two different people. Remove duplicates Opens with crm-export.csv loaded · Open recipe → Audit only The full structural report and nothing else. Every finding listed, not one cell changed. Validate Opens with messy.csv loaded · Open recipe → First 1,000 rows A small, clean slice for a quick experiment, with the file checked on the way past. ValidateQuery with SQL Opens with sales-10k.csv loaded · Open recipe → Excel-safe split Cut an oversized export into pieces a worksheet opens whole, after checking there is nothing structurally wrong with it. ValidateSplit into files Opens with sales-10k.csv loaded · Open recipe → 1,000-row chunks For the importer, API or ad platform with a per-upload row cap. Split into files Opens with sales-10k.csv loaded · Open recipe → Dedupe, then split Clean once, ship in pieces, so the same record cannot arrive twice in two batches. Remove duplicatesSplit into files Opens with sales-10k.csv loaded · Open recipe → Clean 100-row sample A shareable fixture cut from real data: checked, deduplicated, then trimmed to 100 rows. ValidateRemove duplicatesQuery with SQL Opens with sales-10k.csv loaded · Open recipe → Filter and sort starter The two steps everybody adds first, already in place. Pick the columns once the file is open. Filter rowsSort rows Opens with orders.csv loaded · Open recipe → Full workup The whole assembly line in one link: check, deduplicate, filter, sort, then query. ValidateRemove duplicatesFilter rowsSort rowsQuery with SQL Opens with orders.csv loaded · Open recipe → The janitor Messy export to tidy table: snake_case headers, whitespace scrubbed, blanks carried down, duplicates dropped. Clean headersTrim whitespaceFill blanksRemove duplicates Opens with crm-export.csv loaded · Open recipe → Fill down blanks Un-merge merged cells: every blank takes the value above it, which is the classic Excel-export repair. Fill blanks Opens with messy.csv loaded · Open recipe → Database-ready headers So the file imports into Postgres or SQLite without quoting drama: snake_case names, no stray spaces. Clean headersTrim whitespaceValidate Opens with crm-export.csv loaded · Open recipe →

A recipe is a link, and that is the whole design

There is no recipe stored on a server. Each of the sixteen links above holds its entire pipeline, compressed and encoded into the part of the URL after the #. Browsers never send that part anywhere, so the steps travel from this page to your browser without passing through ours, and the same is true when you copy your own pipeline and send it to someone.

That has three consequences worth spelling out. There is nothing to sign up for, because there is nothing to save. There is nothing to delete, because nothing was written down. And a recipe cannot go stale or disappear, because it is not pointing at anything: the link is the pipeline.

Your data is never part of it either. A recipe carries the steps, not the file. Send a colleague the janitor recipe and they run it on their own messy export, in their own browser, and you never see it.

One decoded recipe, for the curious. Quick clean is two steps and its whole specification is {"v":1,"n":"Quick clean","s":[{"k":"validate"},{"k":"dedupe"}]}, which compresses to about eighty characters in the link.

Every recipe arrives with data in it

Each link ends with &sample= naming a file, and the builder fetches it on open. Click The janitor and you are immediately looking at a CRM export with its headers rewritten, its whitespace scrubbed, its blanks filled down and its duplicate row gone, with a count under every step saying what it did.

This is the difference between a recipe you can evaluate and a recipe you have to take on trust. A configured builder with an empty drop zone tells you nothing about whether the pipeline does what its name claims. A configured builder with a result in it tells you immediately, and if the result is not what you wanted you can fix the chain before you ever load your own file.

The samples are small and deliberately imperfect. crm-export.csv has mixed-case emails, day-first dates, padded cells, one exactly duplicated row and two blank owners. messy.csv has a ragged row and a blank header. orders.csv has an order belonging to a customer who does not exist. Samples where everything is already fine teach you nothing.

Order matters more than the steps do

Look at The janitor: clean headers, trim whitespace, fill blanks, remove duplicates. Every one of those positions is load-bearing.

  • Headers first, because later steps name columns and renaming them afterwards would break those references.
  • Trim before dedupe, because "Grace Hopper " and "Grace Hopper" are two different rows until the padding comes off. Deduplicating first misses them entirely, and you would never know: the row count drops, just not by as much as it should have.
  • Fill blanks before dedupe, so rows that were only different because one of them had a gap collapse properly.
  • Dedupe last, once every row has been normalized into the form its duplicates share.

You can test all of that. Open the janitor, drag the dedupe step to the top, and watch the count under it change from one duplicate to none. That is a demonstration of the principle and a demonstration of why per-step counts are on every step.

Building your own

Start from the nearest recipe rather than from nothing. Open it, look at what it does to the sample, then start changing things: the steps reorder with the arrows, switch off with the circle so you can see what each one contributes, and remove with the cross.

When it does what you want, copy the link. That link is the whole artifact. Paste it into your team's runbook next to "monthly export cleanup" and anybody who clicks it gets your exact pipeline, ready for that month's file. It does not expire, it does not need an account, and it does not depend on anything of ours staying where it is.

Sixteen steps are available in the builder, more than any recipe here uses: validate, dedupe, filter, sort, select columns, clean headers, trim, fill blanks, find and replace, split a column, merge columns, normalize dates, calculated columns, group and summarise, SQL, and splitting the result into files. The full list and what each one does is on the builder page.

Frequently Asked Questions

What exactly is a recipe here?

A link, and nothing else. The pipeline is compressed into the part of the URL after the #, which browsers never send to a server. There is no recipe stored anywhere, no account, and nothing to delete. Open one and the builder arrives with those steps already in place; the recipe itself is just the address you got there by.

Do I need a file to try one?

No. Every recipe on this page carries a sample, so it opens with data already flowing through the steps and a result on screen. That is the point of the sample parameter in each link. Swap in your own file whenever you want; the pipeline does not care which file it is pointed at.

Can I change a recipe after opening it?

Yes, completely. A recipe is a starting point rather than a contract. Every step can be reconfigured, reordered, switched off or removed, and you can add your own. Copy a new link when you are done and you have your own recipe, with nothing to fork and nobody to ask.

Is my data sent anywhere when I use one?

No. The link carries the steps, never the data, and the whole pipeline runs in your browser. You can open a recipe, turn off your network connection, drop your file in, and it still works. Nothing about the file or the pipeline reaches us.

Which recipe should I start with?

Quick clean if you just want to know whether a file is sound: it validates and drops exact duplicates in two steps. The janitor if the file is visibly messy and you want it tidied in one go. Standardize a CRM export if you recognize the specific misery of an export with mixed-case emails, day-first dates and duplicated rows.

Can I build my own from scratch?

Yes, open the builder with no recipe and add steps. Sixteen are available, and the link is generated as you go. If you build something genuinely useful, the link is the whole artifact: paste it into your team's runbook and anyone who clicks it gets your exact pipeline.

Pick one and watch it run

Every recipe opens with sample data already in it, so you can see what it does before you decide whether you want it.

Open an empty builder