Running one prompt over a hundred rows is straightforward until something is missing. A placeholder the data never supplies gets sent as literal text; a column nobody references sits there implying it is used; and a value that itself contains braces looks, on a second pass, like another placeholder. This handles all three. Substitution is a single pass on purpose, so a value containing braces is treated as data rather than re-expanded. Both directions of coverage are reported — placeholders with no column, and columns with no placeholder — and the result can be stepped through row by row before it is exported.
Features
Three placeholder styles, so it fits whatever your prompt already uses
CSV with quoted fields and embedded newlines, or a JSON array
Single-pass substitution — a value containing braces stays data
Reports placeholders with no column, and columns with no placeholder
Missing values kept visible or blanked, your choice
Step through every expanded row before exporting
Per-row warnings for the values that were not supplied
Exports as JSONL, one message per line
How to use the Prompt Template Filler
Paste the prompt with placeholders where the data goes
Paste the rows as CSV with a header, or as a JSON array
Check the coverage report and the row preview
Export the expanded prompts as JSONL
Example
Input
Ticket from {{customer}} on the {{plan}} plan
Output
Ticket from Acme Ltd on the Pro plan
Placeholders with no column are reported rather than silently blanked.
Common errors & troubleshooting
A placeholder comes through as literal text. — There is no column with that name. The coverage report names it — the usual cause is a spelling difference between the header and the placeholder.
My CSV is parsed wrongly. — Fields containing a comma or a newline have to be quoted, and a literal quote inside a quoted field is doubled. Both are handled; unquoted commas are not.
A value containing braces was not expanded. — That is deliberate. Substitution is a single pass so that data containing braces stays data — otherwise pasted content could inject placeholders.
A column is reported as unused. — Only a note. It is worth checking, because an unused column is often a placeholder spelled slightly differently.
Frequently asked questions
Which placeholder style should I use?
Whichever your prompt already uses — all three are supported and switching between them re-reads the same template. Double braces are the most common and the least likely to collide with JSON in the prompt.
What happens to a row with a missing value?
You choose. Keeping the placeholder makes the gap obvious in the output; blanking it produces a clean prompt with a hole in it. Either way the row is flagged in the preview.
Can I paste JSON instead of CSV?
Yes — an array of objects, where the keys become the columns. Nested values are stringified rather than dropped, so a structured field still reaches the prompt.
What is the JSONL export for?
It is the shape most batch and evaluation tooling reads: one JSON object per line, each with the expanded prompt as a user message. It is also the input to the batch request builder.
Is there a row limit?
Nothing is uploaded, so the limit is your browser's memory rather than a quota. Very large files are worth splitting anyway, because the preview becomes the slow part.
Related tools
Batch Request Builder — Turn a table of rows into a batch job, with unique ids per request.