The model cannot see what you can see
You have a tab open. You know who the piece is for, why it is being written, what was tried last quarter and failed, and which competitor you are not allowed to name.
None of that is in the prompt. All of it is load-bearing.
Write a 500-word article about database indexing in markdown. Include an example of a slow query. Avoid jargon.
This is not a lazy prompt. It has a verb, a length, a format, an example, and a constraint. By most measures it is a good prompt — which is exactly what makes it a useful example.
Instant checks
States a concrete task
PassedAvoids vague language
PassedSpecifies an output format
PassedGives context or audience
ConsiderNo audience, purpose, or background is given.
Recommendation — Say who the output is for and what it will be used for. The same request answered for a beginner and for a specialist are different answers.Avoids dangling references
PassedIncludes an example
PassedSeparates data from instructions
PassedAvoids over-aggressive phrasing
PassedDefines what a good answer looks like
Passed
Why this one is expensive
The same question, answered for two different audiences, is two different articles.
Written for a beginner, "database indexing" needs to explain what a table scan is before it can explain why avoiding one matters. Written for a backend engineer, that explanation is condescending filler, and the interesting content is the part about when an index makes writes slower.
The model has to pick. With no signal, it picks the middle — an article aimed at nobody in particular, which is why so much generated content reads as vaguely competent and completely unmemorable. The blandness is not the model's voice. It is the sound of an unstated audience.
What context actually means
Not "background information" in general. Three specific things:
Who reads this. Their expertise, and what they already believe. This is the highest-leverage sentence in most prompts.
What it is for. An answer written to persuade differs from one written to inform, which differs from one written to be skimmed and forgotten.
What the model could not know. Your product does not exist in its training data. Neither does your codebase, your last three failed attempts, or the fact that the CEO hates the word "leverage".
Write a launch post announcing Acme Sync. ### Audience Frontend developers at small startups who have lost work to version mismatches. ### Context Acme Sync keeps Figma files and production code in step. Nobody in the audience has heard of it. ### Requirements - Length: About 600 words. - Output format: Markdown, with a heading per section. - Avoid: marketing superlatives. ### Example of the wanted output ## Title Opening line naming the specific pain.
Instant checks
States a concrete task
PassedAvoids vague language
PassedSpecifies an output format
PassedGives context or audience
PassedAvoids dangling references
PassedIncludes an example
PassedSeparates data from instructions
PassedAvoids over-aggressive phrasing
PassedDefines what a good answer looks like
Passed
Two clauses did all the work.
"Frontend developers at small startups who have lost work to version mismatches" — this is not just who, it is what they have experienced. That gives the model an opening line it could not otherwise have found.
"Nobody in the audience has heard of it" — one sentence, and it rules out an entire failure mode where the model writes as if the reader already knows what the product does.
The curse of knowledge
The reason this rule is so widely broken is not laziness. It is that you cannot see your own context. Everything you know feels like background, not information. The audience is obvious — to you. The purpose is obvious — to you.
A useful trick: imagine handing the prompt to a competent freelancer who has never met you, has no access to your company, and starts work in ten minutes without asking a single question. What would they get wrong?
Whatever you just thought of — that is the context. Put it in the prompt.
When you can skip it
Sometimes context genuinely does not apply. "Summarize the transcript below in three bullets" needs no audience: the task is mechanical and the answer is the same for everyone.
That is why our checker only applies this rule to writing and code tasks. A rule that fired on every prompt would be noise, and a checker that cries wolf gets ignored — which would be a worse outcome than not checking at all.
Every check in this article ran live in your browser. The same nine run on any prompt you paste in, for free.