The container is half the product
You've learned to control what the model says. This lesson is about controlling the shape it arrives in. Because here's the thing: a correct answer in the wrong format still makes work for you. If you needed a table and got seven paragraphs, congratulations: your new job is data entry.
The model can produce almost any container: bullet lists, numbered steps, Markdown tables, JSON, CSV, email format, one-word answers, tweets, haiku. It just needs to be told. If you don't specify the container, you get the model's default: paragraphs. So many paragraphs.
Real-world rescue: meeting notes to action items
You've got messy meeting notes and you want a clean action-item table. Watch the format instruction do all the heavy lifting.
❌ Weak prompt
Prompt
Here are my meeting notes: Dana will send the budget Friday, engineering needs the API specs from Sam before they can start, and someone should book the offsite venue - maybe Priya? Summarize the action items.
Output
During the meeting, several action items were discussed. Dana committed to sending the budget by Friday. Additionally, the engineering team is waiting on API specifications from Sam before beginning their work. Finally, there was a suggestion that Priya might book the offsite venue, though this was not confirmed.
Everything's there, but it's prose soup. You can't scan it, sort it, or paste it into a tracker. Correct content, useless container.
✅ Good prompt
Prompt
Here are my meeting notes: Dana will send the budget Friday, engineering needs the API specs from Sam before they can start, and someone should book the offsite venue - maybe Priya? Extract action items as a Markdown table with columns: Task, Owner, Deadline, Status. Use 'Unassigned' or 'TBD' where info is missing.
Output
A tidy three-row table: Send budget / Dana / Friday / Confirmed. Deliver API specs to engineering / Sam / TBD / Confirmed. Book offsite venue / Priya (tentative) / TBD / Unassigned.
Same notes, but now it's scannable, pasteable, and the gaps (no deadline for Sam, Priya unconfirmed) are visible instead of buried in prose. The 'use TBD where missing' rule handled messy reality gracefully.
The format menu
| You need... | Ask for... |
|---|---|
| Something scannable | "as a bulleted list, max 8 words per bullet" |
| Something comparable | "as a Markdown table with columns X, Y, Z" |
| Something a program can read | "as valid JSON with exactly these keys: title, priority, owner" |
| Something short | "in one sentence" or "in under 50 words" |
| Something in your voice | "casual and warm, like a text to a friend" |
| Something skimmable by your boss | "a 2-sentence summary, then details as bullets" |
Asking for JSON (a word to the wise)
When another program will consume the output (a script, a spreadsheet import, an app), ask for JSON and be strict about it:
Analyze this customer review and respond with valid JSON only - no explanation, no code fences, no extra text.
Use exactly these keys:
sentiment: one of "positive", "negative", "mixed"
main_complaint: a short string, or null if none
urgency: an integer from 1 to 5
Review: The app is gorgeous but it deleted my playlist twice this week. I pay for this!
The model would return a small JSON object (curly braces and all) with something like sentiment "negative", main_complaint "app deleted user's playlist", urgency 4. Three rules made that reliable: say "JSON only" (or chatty models will wrap it in commentary), name the exact keys, and constrain the values ("one of...", "integer from 1 to 5"). Vague value rules are how you end up with urgency: "pretty urgent!!" in your database.
Tone is a format too. The model follows "professional but warm," "blunt, no fluff," or "explain like a sports commentator" as readily as it follows structure instructions. If the vibe matters, spec the vibe.
Even with a strict prompt, always validate machine-bound output before trusting it; models occasionally slip in a stray word or a trailing comma. Prompting gets you to 98 percent; a validation check catches the rest.
Checkpoint
Specify the container (list, table, JSON with exact keys, word limit, tone), or the model defaults to paragraphs and you inherit the reformatting job.
📝 Quiz
Question 1 of 3What happens when you don't specify an output format?