One Prompt To Format Every Doc

Here’s the short version: a Redditor got sick of AI docs coming out in a different shape every time, so they built one prompt that locks the structure and only lets the content change.

The frustration is real. You feed a model some rough notes, get a nicely formatted doc back, then feed it slightly different notes tomorrow and get a completely different layout. No headers in the same place, no consistent sections, nothing you can drop into a template. u/FalseArt3972 posted the fix over in r/PromptEngineering, and it’s a smart little reframe: stop treating the AI like a writer and start treating it like a document generator with a template baked in.

The Problem With “Just Write It Nicely”

Most people prompt for content and hope the formatting follows along. That’s backwards. If you never specify the skeleton, the model invents a new one every session based on whatever pattern feels right for that particular input. Fine for a one-off. Useless if you’re producing docs you actually need to reuse, compare, or hand to someone else.

The original poster’s fix was to flip the instruction. Instead of “write a doc about X,” the prompt says “always output in this exact structure, and only fill it with what I give you.” The content becomes the variable. The shape stays fixed.

Why The “TBD” Rule Is The Real Trick

Here’s the part worth stealing even if you build your own template from scratch. Before adding one specific rule, the original poster’s Open Questions section would happily fill itself with plausible-sounding filler, stuff that was never in the source notes at all. That’s a classic hallucination trap: the model sees an empty section and its instinct is to complete the pattern, not leave it blank.

The fix is one line: if a section has no input, write “TBD” instead of inventing content. That single constraint turns a section that used to lie convincingly into a section that honestly flags what’s missing. You get an accurate to-do list instead of a paragraph you have to fact-check against your own notes.

This is a constraint prompt doing exactly what constraint prompts are supposed to do. It’s not there to make the output prettier. It’s there to stop the model from doing the one thing models do by default: filling gaps with something that sounds right.

Breaking Down The Structure

The template itself is simple on purpose:

  • Title plus a one-line Purpose and Audience, so anyone opening the doc knows what it’s for in five seconds
  • Context, two to four sentences of background, kept short so it doesn’t turn into a wall of text
  • Key points, bulleted, one full sentence each, no fragments
  • Details, where each key point gets expanded under its own subheading
  • Open questions, or “none” if there genuinely aren’t any

That’s role assignment (“act as a document generator”), a hard structural constraint (“nothing else”), and a grounding rule (“use only the information I give you”) stacked in one short prompt. Three techniques, four sentences of actual instruction. That’s the whole reason it’s reusable instead of a one-time trick.

Use Cases 📋

  • Meeting notes to project briefs. Dump your raw bullets from a call, get a doc your team can actually skim.
  • Feature specs. Feed it half-formed product notes, let the Open Questions section tell you what you still need to nail down.
  • Onboarding docs. Keep every new-hire guide in the same shape so people know where to look for what.
  • Client deliverables. Swap the input, keep the format, and every doc you send out looks like it came from the same system, because it did.

One commenter, u/Ok-Shallot8865, does something close to this already, keeping the template in a separate text file and pasting it in fresh each time rather than retyping it. If you’re going to reuse a skeleton like this more than twice, that’s the move: save it once, paste and swap forever.

Prompt Of The Day

Act as a document generator. Always output in THIS structure, nothing else:

# [Title]

Purpose: one sentence on why this doc exists

Audience: who reads it

## Context

2-4 sentences of background.

## Key points

Bulleted, each point a full sentence.

## Details

Expand each key point under its own subheading.

## Open questions

Anything the input didn’t answer. If none, write “none.”

Rules: use only the information I give you. If a section has no input, write “TBD” rather than inventing content.

Input:

[paste your bullets]

Two variations worth trying if you want to push this further. First, add a word-count cap per section (“Context: max 60 words”) if your model tends to ramble once it has room to expand. Second, swap the fixed section list for a numbered one and ask the model to skip any section you mark “N/A” in your input, so you get one template that flexes for short docs and long ones without rewriting the whole thing.

If you’ve been fighting inconsistent AI output for anything you actually reuse, save this template, swap in your own bullets, and see how fast “format drift” stops being a problem. Worth checking the full thread for how other users are adapting the skeleton to their own doc types.

Frequently Asked Questions

Q: Why is the TBD rule such a game-changer? Doesn’t the model just need better instruction?

The TBD rule works because it removes the incentive to hallucinate. When left with incomplete info, LLMs default to filling gaps with plausible-sounding content. By explicitly saying “write TBD here,” you flip the behavior. The model treats “TBD” as a complete, valid output and stops fishing for invented content. You also get a visual audit trail of what you still need to actually write, which keeps half-baked docs from sneaking through.

Q: Should I paste the template each time, or keep it in a separate file?

Either works fine. Keeping it in a separate file makes it easy to version and reuse across projects; pasting it inline reduces copy-paste overhead. Some people maintain different templates for different doc types (specs, briefs, postmortems). Whatever reduces friction in your workflow is the right call.

Q: Does this approach hold up for longer or messier documents?

It generally works well for focused inputs. On really long or complex briefs, you might notice some drift. If that happens, break the input into smaller chunks, keep each section tight and organized, or re-run sections that drifted. Shorter, cleaner input = stronger structure hold.

Q: Can I modify the template for different document types?

Absolutely. The principle is consistency within a document type, not global rigidity. A technical spec might swap “Context” for “Architecture”; a project brief might add “Timeline.” The same TBD rule and tight structure apply everywhere. Just tailor the sections to the document’s actual purpose.

I built a reusable document-generator prompt so every doc comes out with the same structure
by u/FalseArt3972 in PromptEngineering

Scroll to Top