LLMs don’t need more adjectives. They need a place to put the truth.
You don’t need “better prompts.” You need outputs that don’t waste your life. Most people ask for “a summary” and get oatmeal. Or ask for “ideas” and get Pinterest spam. The fix is simple: pick the right shape, then force it.
Stop worshiping words; design the container.
Structure (tables/JSON/diffs/rubrics) shrinks chaos and makes results scannable, scoreable, chainable.
Constrain first, create second—then add one line of style if you must.
What’s an “output shape,” really?
A predefined structure the model has to pour its answer into—table, JSON, checklist, diff, rubric, timeline. Shapes kill mush. They make outputs scannable for humans, checkable by scripts, and chainable into the next tool. If it doesn’t fit the frame, you know instantly.
A short history of why structure wins
We’ve done this forever. UNIX pipes compose because programs honor strict I/O contracts. Spreadsheets scale because columns are promises. APIs thrive because schemas are law. Bureaucratic forms (painful, yes) move mountains by refusing to move fields. We didn’t invent structure in the LLM era—we forgot it. Output shapes are just us remembering that constrain first, create second beats charming essays every day of the week.
Why shapes beat vibes (without a listicle)
Shapes reduce the surface area where answers can go wrong. They keep the model from drifting into “bonus commentary.” They make evaluation possible (you can score a rubric; you can’t grade a vibe). And when an answer fails, you tune a slot—not your entire prompt novel. That’s how you go from demo magic to repeatable work.
Rule zero: shape before style
If the model can’t shape its answer, it won’t respect your style. So stop begging it to “be concise and professional” while giving it a blank page. Tell it what to build.
Design rules (use these and you’ll stop bleeding time)
Name the frame, not the feeling. “Return a 7-row table with these columns” beats “be concise/strategic.”
Separate structure from style. First demand the skeleton; at the end allow one sentence of “voice,” max.
Cap the scope. “Exactly N items,” “no extras,” “no preamble” are kindness, not cruelty.
Show one tiny example. One row, one object. Enough to set the grooves; not enough to bloat context.
Fail loudly. Add a compliance_notes
/limitations
field so the model can admit what broke.
Starter shapes you can steal
JSON spec (machine-ready):
{"problem":"",
"constraints":[""],
"steps":[{"id":1,
"action":"","
evidence":""}],
"decision":"",
"confidence":0.0,
"compliance_notes":""}
Table (human-fast): fixed columns you actually need; fixed row count; one-line cells.
Diff/Patch (surgical edits): “Return a unified diff. Only changed lines.”
Rubric (judging with teeth): five criteria × 0–5 with a one-line justification each; total up front.
Common failure modes (and the adult fixes)
Shape rot. Your schema drifts across prompts. Fix: version it (shape_v3
) and paste the exact same block everywhere.
Over-boxing. You demanded the impossible; the model hallucinates. Fix: let it confess in compliance_notes
, then relax the spec or split the task.
Token bloat. You pasted a museum of examples. Fix: keep one example. Link the rest elsewhere.
Style leakage. You wanted snark and got rambling. Fix: fill the shape first, then allow a single-sentence kicker.
The quiet hammer
Structure is mercy. It saves readers from mush and you from rewrites. Pick a shape, pin it, and make every answer pass through it. Discovery can stay jazz. Delivery is sheet music—and it ships.