rowlab

Ask a question of every row.

rowlab labels, extracts and rewrites tabular data with AI. Add a CSV, JSON or Parquet file, write the question, try it on twenty rows, then run it on a million. Open source, runs on your laptop, or hosted when you'd rather not run it.

uvx rowlab

One process, one SQLite file, one data folder. Open localhost:8000, add a file, and bring your own OpenRouter key.

Try before you pay

See the rows, calls and cost before a run. Run two models on the same rows and compare them, against your own labels if you have any. Cheap decision models for yes/no questions, LLMs for the rest.

Nothing changes in place

Every run makes a new dataset with the answers added, named after where it came from. Keep the tree, export any branch as CSV, JSONL or Parquet, to a file or S3.

Built for people and agents alike

A fast web app, a plain API, and an MCP server with skills that teach agents to label well. The same work, whichever way you do it.

What a run looks like

Pick the rows with SQL, write the question from the row's own columns, choose the answer type, and a model.

SELECT * FROM data WHERE stars <= 2 LIMIT 20

Is this review about delivery?
Review of a kitchen product: {{review}}

yes / no  ·  typesafe/jev-1.14  ·  20 calls  ·  $0.00

Read the answers next to the rows. Fix the prompt. Then take the LIMIT off.

Who it's for

  • Analysts with a column to fill in.
  • Teams making training data.
  • Researchers coding open-ended answers.
  • Ops triaging tickets and reviews.

Answer types

Classify

Yes/no, pick one, pick any, or a score on a scale. Any model, each answer with its probability.

Extract

Typed fields pulled out of the row: text, numbers, dates, lists. Empty when the text doesn't say.

Write

New text from the row: a summary, a translation, a rewrite.