Home / Articles

From Vague to Precise: Refining One Prompt in Three Deliberate Passes

Watch a one-line LLM prompt evolve into a structured brief, and learn why context says what is true while role, format and constraints define a good result.

Publisher: REACTAPP.TOP4 min read1003 words

This article is published in English.

Sources: I Rewrote the Same Prompt Three Times. Here’s What Changed Each Time.

Most weak LLM output does not come from a weak model; it comes from a prompt that leaves the model guessing. The quickest way to see this is to take a single request and improve it step by step, observing what each change removes from the guesswork. Below, one everyday task goes through three versions, and by the end you will have a repeatable pattern for turning your own frequently used prompts into ones whose output needs little or no editing.

The task throughout: draft a LinkedIn post that announces a product update.

Pass one: the request as people usually type it

The first version is the one almost everyone sends.

Write a LinkedIn post about our new feature launch.

Nothing here is incorrect, but almost nothing is specified either. There is no role for the model to adopt, no description of the feature, no intended audience, no tone and no format. The only signals are "LinkedIn post" and "feature launch", so the model fills every gap with its safest, most generic defaults. The result is polished corporate copy that could announce any product at all.

Pass two: supplying the facts

The second version tells the model what actually happened.

Write a LinkedIn post about our new feature launch. We just added dark mode to our app, and users have been asking for it for months. Keep it casual.

This is a real improvement. The model now knows the feature is dark mode and that users have wanted it for a long time, and "keep it casual" pushes the tone away from a press release. What is still missing is a defined speaker, a format limit and a clear objective beyond "write a post". The model therefore still has to decide how long to go, whether to add a call to action, and whose voice it is writing in.

For many people this is where prompting ends, and the output is usually serviceable. Serviceable, though, is not the best you can get.

Pass three: adding role, objective, format and constraints

The final version splits the request into two parts. First comes a role that fixes the voice:

Act as a founder writing a personal, low-key LinkedIn update, not a marketing announcement.

Then comes a structured brief that covers context, objective, format and explicit exclusions. It is labeled plain text, not YAML; putting each label on its own line keeps the sections easy to parse.

Context: We just shipped dark mode after users requested it for months. This is a small update, not a major launch, so it shouldn't be hyped up.Objective: Announce the update in a way that feels like a genuine update from a builder, not corporate copy, and invite people to try it and share feedback.Format: Under 100 words. No emojis. End with a direct, casual question rather than a call to action button.Constraints: Do not use the words "excited," "thrilled," or "game-changer." Do not use hashtags.

The gain is not simply that the prompt got longer. Every ambiguity left open in pass two is now closed: the model knows who is speaking, which tone to stay away from, the word limit, how to end the post and which words and hashtags are off-limits. When there is little left to guess, there is little left to get wrong.

Notice the negative constraints in particular. Listing banned words such as "excited" or "game-changer" is often the most efficient way to strip out the clichés that make generated copy recognizable, because it targets the model's most likely defaults directly.

Why the second jump matters more than the first

Moving from pass one to pass two added context. Moving from pass two to pass three added structure: a role, an explicit format and limits on what to avoid. The second step tends to have a bigger effect than people expect, because the two ingredients do different jobs. Context tells the model what is true. Structure tells it what a good result looks like.

That difference also changes where your effort goes. With a pass-two prompt you usually fix the shape of the output after it arrives: trimming length, removing hype, rewriting the ending. With a pass-three prompt you describe the shape up front, so the editing mostly disappears. If you want a more exhaustive template for production systems, see our seven-layer framework for LLM prompts.

A caveat worth keeping in mind: not every prompt deserves the full treatment. For a throwaway question, pass two is plenty. The structured version pays off for prompts you reuse, share with a team or rely on for public-facing text.

Apply the pattern to your own prompts

Pick a prompt you send regularly, one you could almost type from memory, and repeat the exercise:

  • Add context first: the facts the model cannot know on its own.
  • Add a role that pins down the voice or perspective.
  • Add a format: length, structure and how the output should end.
  • Add one or two explicit exclusions: words, styles or elements to leave out.

Typically the first two versions still need editing, while the third arrives close to finished.

Key takeaways

  • A bare request forces the model to fill gaps with generic defaults.
  • Context improves accuracy, but it does not define what "done well" means.
  • Role, objective, format and constraints turn a request into a specification.
  • Negative constraints are a cheap, effective way to remove clichés.
  • Invest in structure for prompts you reuse; keep ad hoc questions light.