Import files
Upload CSV, Excel (.xlsx/.xls), JSON, or JSONL (.jsonl/.ndjson) into a dataset. Trodo previews the file, lets you map each column to input variables, Expected output, Metadata, or Tags, then appends the rows.
The fastest way to seed a dataset from an existing spreadsheet or fixture file. Open a dataset and click Import in the toolbar.
Supported formats
| Format | Extensions | Notes |
|---|---|---|
| CSV | .csv | Comma-separated; first row is the header. |
| Excel | .xlsx, .xls | Reads the first worksheet. |
| JSON | .json | A single object or an array of objects. |
| JSONL | .jsonl, .ndjson | One JSON object per line. |
Import flow
- Click Import and pick a file.
- Trodo shows a preview of the detected columns and the first few data rows.
- For each file column, choose where it maps:
- an existing input variable column;
- Expected output;
- Metadata;
- Tags;
- + new input — create a new variable column from this header;
- — skip — — ignore the column.
- Click Append N rows to add the mapped rows to the dataset draft.
- Click Save in the top bar to persist.
Imported rows are appended to whatever is already in the dataset — they do not replace existing rows.
Auto-mapping
Trodo pre-fills the mapping when column names are recognizable:
| File column name | Maps to |
|---|---|
expected, expected_output, ground_truth, target | Expected output |
metadata | Metadata |
tags, tag | Tags |
| A name that matches an existing input column | That input column |
| Anything else | + new input (column name cleaned to a valid variable name) |
JSON and JSONL record shapes
Each record can be structured or flat:
Structured (recommended for multi-field rows):
{
"input": { "query": "Refund policy?", "locale": "en" },
"expected_output": "30 days from purchase.",
"metadata": { "category": "billing" },
"tags": ["billing", "golden"]
}Flat (keys become input columns unless they match reserved names):
{
"query": "Refund policy?",
"locale": "en",
"expected_output": "30 days from purchase.",
"metadata": "{\"category\":\"billing\"}"
}For JSON/JSONL, nested input objects are unpacked into input columns. Reserved top-level keys (expected_output, expected, metadata, tags) are routed to their first-class fields.
Typed cell values
Values that look like JSON — objects {…}, arrays […], and the literals true, false, null — are stored as real typed JSON, not as plain strings. Plain text (ZIP codes, phone numbers, prose) stays a string. This matters when a prompt variable is declared as json or number: the binding receives the correct type at compile time.
Origin tracking
Rows imported from a file get an Origin badge in the grid — CSV, JSON, JSONL, or Spreadsheet — so you can tell file-sourced rows apart from SDK or trace-curated ones. Toggle the Display button in the toolbar to show the Origin column.
Export
Click the download icon in the toolbar to export the current dataset as CSV (input columns + expected + tags + metadata).
Snapshots
Import appends to the live draft. If you need a frozen baseline before making more edits, click Snapshots to save a version you can pin when running an experiment. See Why snapshots.
Next
- Edit in dashboard — review and fix imported rows
- Overview — how variables bind at experiment time
- Ingest from SDK — push rows from a script instead of a file
Overview
A dataset is a standalone, reusable set of test cases — structured inputs, an optional expected output, and metadata. Build one by hand, import a spreadsheet, curate from production traces, or push rows from the SDK, then run any prompt against it as an experiment.
Edit in dashboard
Add rows, edit Input / Expected / Metadata in the row panel, tag rows, and assign owners — all from the dataset detail page.