Upload a CSV and map columns
Get a set of cases into a project as a dataset: the CSV requirements, column mapping, the content hash, and how archive, delete and restore behave.
After this page a dataset exists in the project with a content hash, is selectable in Evaluations → New run, and is offered as a target by Add to dataset in Traces. You also know what archive and delete do to the runs that used it.
datasets). With it locked, the nav item opens the upgrade panel — see Plan, usage and locks.The Datasets page
A table of name · type (text · conversation · voice) · rows · last run · pass rate · hash · updated, with search and a type filter, a row menu (Open · Run evaluation · Export · Snapshot · Delete) and New dataset. New dataset offers Upload CSV, Import JSONL (golden sets in the Gemini or OpenAI shape — see Golden datasets), From traces, Empty dataset (add rows by hand) and Voice dataset (locked when voice evaluation is not on the plan).
Upload a CSV
Drop the file
A header row, UTF-8 (a leading byte-order mark is stripped), at most 50 MB and 50,000 rows; the delimiter is auto-detected. Over either limit the server answers 422 naming the limit and the actual value. The browser previews the header and first rows before anything is uploaded.
Map columns
Input column (auto-detected from headers such as question, prompt, input) and Target column (optional; expected, answer, reference). A column literally named output is used as the output column. Every other column is kept as extra data on the row.
Name and create
Name defaults to the file name. On success the browser opens the new dataset.
The dataset page
Header: rows · columns · hash · created · used by n runs · golden count. Tabs: Rows · Snapshots · Runs · Health. Toolbar: Add row · Import · Generate outputs · Run evaluation · Export · Snapshot. A banner says No outputs yet — generate them or import an output column until the output column is filled, because a run scores outputs. The hash is shown from day one: it is computed over input and target of the non-archived rows in order, so editing an output or flipping a status never changes it and adding or editing input or target always does — which is what decides whether two runs are comparable.
Archive, delete and restore
| Operation | What moves | Effect |
|---|---|---|
| Archive rows | selected rows | status archived: out of reads, exports, the hash and snapshots; the dataset stays active |
| Archive the dataset | the dataset | hidden from lists and pickers; still readable, editable, exportable and re-runnable |
| Delete the dataset | the dataset | soft delete: 404 on every dataset endpoint and gone from every list; purged for real once a 30-day restore window closes, together with its rows, snapshots and files |
Both archive and delete first check what depends on the dataset — runs, snapshots pinned by runs, auto-add rules, review queues holding its rows, playground grids — and refuse with the list unless you force. Runs that already used a deleted dataset keep their results, can still be compared among themselves, and lose only Open dataset and Re-run. Restore brings an archived or deleted dataset back within the window. Deleting the project purges its datasets immediately.