The usual starting point
Evaluation sets, labelled examples and fine-tuning candidates almost always begin life in a spreadsheet, because that is where the people who label data work. Getting them into JSON is the first step of every pipeline built on top of that.
This handles the parts that hand-rolled splitting gets wrong: quoted fields containing the delimiter, escaped quotes inside quoted fields, and blank trailing lines.
Type coercion, and when to switch it off
CSV has no types — everything is text. The converter infers numbers, booleans and nulls, which is what you want most of the time.
Switch it off when identifiers could be misread as numbers. A postcode, an order reference or a version string can lose leading zeros or become a float, and that corruption is silent and permanent.
From records to a dataset
JSON records are rarely the final destination. For fine-tuning you need JSONL with a messages array per line — build that with the chat messages tool, then check it with the JSONL validator before uploading.