Skip to content

Get started

rowlab is a Python package. With uv:

Terminal window
uvx rowlab

That starts the API and the web app at localhost:8000, and keeps its state (a SQLite database, and datasets as Parquet) in ~/.rowlab. pip install rowlab and rowlab serve do the same.

Model calls go through OpenRouter. Paste a key in Settings → Providers, or set OPENROUTER_API_KEY before starting.

Drop a file on the datasets list, or paste a URL. CSV, JSON, JSONL and Parquet are read by their content, gzipped or not; from disk, the web, or S3 (with a connection from Settings → Storage). rowlab keeps a copy as Parquet; your file is never changed.

Open the dataset to see its rows and, per column, a profile: type, range, distinct values and the share of empty cells.

Pick the rows with SQL over the table data, for the first try a few of them:

SELECT * FROM data WHERE stars <= 2 LIMIT 20

Write the question with the row’s columns in it, pick an answer type and a model:

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

Answer type yes/no, model typesafe/jev-1.14, a fast decision model. The preview shows the prompt rendered for the first rows, the number of calls, and the estimated cost. Start the run.

The run makes a new dataset, reviews__1, with a column delivery__jev-1.14 and its probability. Read the answers next to the rows they came from. If the question was unclear for some rows, fix the prompt and run again from the original dataset: the cost of twenty rows is nothing, and the same prompt on the same row is never paid for twice.

Then take the LIMIT off and run on all rows. Export the result as CSV, JSONL or Parquet when it is done.