A request can be incomplete without being impossible. If you ask an AI assistant to draft a short update but do not specify the tone, it can usually use clear, neutral language. If you ask it to summarize a source you have not supplied, guessing is not an acceptable substitute. The challenge is teaching the assistant which missing details require a question and which do not.
Some prompts tell an assistant to “ask questions whenever anything is unclear.” That sounds careful, but it can turn a simple task into an interview. The opposite instruction, “never ask questions,” can pressure the model to invent essential facts. A better pattern is a one-question gate: check for a genuine blocker, ask one targeted question if necessary, and otherwise produce the requested work while preserving uncertainty.
This article presents an original editorial workflow, not a vendor-standard policy. It includes a copyable prompt, a fictional release-note example, eight test fixtures, a locally executed Python check, failure patterns, and limitations. No live-model success rate is claimed.
1. Separate blocking facts from optional preferences
Before writing a prompt, classify missing information by its effect on the task.
- Required source: the task fundamentally depends on material that is absent. A request to summarize a note without the note cannot be fulfilled faithfully.
- Material conflict: two supplied statements contradict one another on a central assertion that the requested output must make. Choosing one silently would invent a resolution.
- Optional preference: audience, tone, or length may be absent even when the task itself is clear. Use an explicit conservative default or omit unnecessary detail.
- Unspecified fact: the source may not mention a date, owner, or benefit. If that detail is not essential to the requested output, do not ask just to fill every possible field. Omit it, or mark it unknown if the output contract calls for such a field.
The key distinction is between missing information and missing information that blocks a faithful answer. Do not infer that an unspecified date has been rejected, that a proposed feature has shipped, or that an unavailable source contains a particular conclusion.
OpenAI’s prompt engineering guidance emphasizes clear instructions and representative tests. Google’s prompt design strategies similarly discusses explicit task boundaries and iterative refinement. The particular decision gate in this article is our teaching design, not a feature guaranteed by either provider.
2. Establish a bounded fictional task
Imagine a small product team drafting a user-facing update. Its internal notes say:
APPROVED NOTES
- Version 5.2 fixes incorrect export filenames.
- Calendar sync is a proposal, not an approved feature.
- No release date has been approved.
The user requests: “Write a short update for customers using these notes.”
That is enough to draft a neutral update. The user did not specify the tone or exact word count, but neither is a factual blocker. A valid editorial reference answer could be:
Version 5.2 addresses incorrect export filenames.
Calendar sync remains a proposal and is not an
approved feature. A release date has not been approved.
This is human-authored reference text based on fictional notes. It is not an observed answer from any AI service. It does not say version 5.2 is already available or promise a delivery date.
Now remove all approved notes and give only the instruction to write an update. The source-dependent task is blocked. A suitable single question would be: “Could you provide the approved notes to use for the update?”
Finally, imagine the notes say both “Calendar sync has shipped” and “Calendar sync is only a proposal.” If the customer update must describe calendar sync, that conflict must be resolved, or the output must explicitly preserve the contradiction rather than claiming a status. For this tutorial’s customer-ready update requirement, we choose the more conservative question-first route.
3. Write the one-question gate
The gate follows three checks, in order:
- Is the required source missing? If yes, ask for that source and stop rather than inventing it.
- Does the supplied source contain an unresolved conflict that controls the central claim? If yes, ask one precise question identifying the conflicting alternatives.
- Otherwise, proceed. Use a neutral style if no style was requested. Do not manufacture unspecified facts; omit them or use an agreed missing-value marker.
This priority order matters. You cannot evaluate contradictions in notes that are not present. If multiple independent facts are essential and missing, ask for the most useful blocker first rather than bundling many loosely related preferences into a questionnaire. A real workflow might instead use a compact form, but that is outside this single-question tutorial.
The distinction should also guide the output contract. An assistant should either ask a question or produce a draft, not return a draft built on guesses followed by a list of unresolved questions.
4. Copy this ready-to-use prompt
For repeated release-note drafting, use a concrete instruction set with stable boundaries. Replace the source placeholder with approved content; an empty source is a real test case, not permission to fabricate notes.
TASK
Draft a short, neutral customer-facing update
using the supplied APPROVED NOTES only.
DECISION GATE
1. If APPROVED NOTES are absent or empty,
output one question asking for the notes.
2. If the notes contain two contradictory
statements about a central fact needed for
the update, output one question identifying
the exact conflict. Do not resolve it by guessing.
3. Otherwise write the update immediately.
Missing tone, audience detail, and exact length
are optional. Default to plain language and
approximately 80 words or fewer.
EVIDENCE RULES
- Do not invent release dates, approvals,
shipped features, prices, or commitments.
- A proposal is not a completed feature.
- If a date or owner is unspecified, do not
invent one to make the update sound complete.
- You are drafting text only; do not send,
publish, or claim to have contacted anyone.
OUTPUT CONTRACT
If blocked, return:
QUESTION: [one specific question]
If not blocked, return:
DRAFT:
[customer-facing update]
Return exactly one of these two formats.
Do not include a third section or checklist.
Do not add a follow-up question after a draft.
APPROVED NOTES:
[PASTE APPROVED NOTES HERE]
In a normal chat, this wording is an instruction, not an enforced validator. The model may still ignore the format or misinterpret a conflict. If software consumes the output, validate the chosen branch and inspect the drafted claims against the notes.
For another reusable-template approach, see How to Build Reusable Prompt Templates. The distinction here is the ask-versus-proceed decision, not template storage.
5. Eight cases to check before trusting the gate
The following cases are fictional and labeled by an editor. “Source present” means adequate notes were actually supplied, not merely that the user claimed a file existed. “Critical conflict” means contradictory statements about a fact essential to this draft.
| Case | What the request supplies | Reference route |
|---|---|---|
| C01 | Urgent tone requested, but no notes | ASK_SOURCE |
| C02 | Approved export-fix notes, but no tone | PROCEED |
| C03 | Notes say date is unapproved; no exact date | PROCEED |
| C04 | Same central feature said shipped and proposed | ASK_CONFLICT |
| C05 | Approved notes, no detailed audience persona | PROCEED |
| C06 | Exact length requested, but no source notes | ASK_SOURCE |
| C07 | Two incompatible approved release dates | ASK_CONFLICT |
| C08 | Adequate notes, no word-count preference | PROCEED |
For C03, the correct draft says the release date is not approved only because that information is explicitly in the fictional notes. If no date were mentioned at all, the safer wording would usually omit the date rather than assert an approval decision. For C04 and C07, one precise question should identify the central contradiction.
These cases teach a policy boundary. They do not show that a real AI model applied it successfully.
6. Run a small deterministic routing audit
A lightweight Python test can check whether the editorial fixture agrees with the two decision flags used in this tutorial. It cannot decide whether a real note is contradictory: a reviewer must set that flag from the source.
from collections import Counter
cases = [
("C01", False, False, "ASK_SOURCE"),
("C02", True, False, "PROCEED"),
("C03", True, False, "PROCEED"),
("C04", True, True, "ASK_CONFLICT"),
("C05", True, False, "PROCEED"),
("C06", False, False, "ASK_SOURCE"),
("C07", True, True, "ASK_CONFLICT"),
("C08", True, False, "PROCEED"),
]
def route(has_source, material_conflict):
if not has_source:
return "ASK_SOURCE"
if material_conflict:
return "ASK_CONFLICT"
return "PROCEED"
results = [
route(has_source, conflict)
for _, has_source, conflict, _ in cases
]
expected = [label for _, _, _, label in cases]
assert results == expected, list(zip(results, expected))
assert len({case_id for case_id, *_ in cases}) == 8
print("PASS: 8 of 8 editorial routing fixtures matched")
print(dict(sorted(Counter(results).items())))
try:
wrong = expected.copy()
wrong[2] = "ASK_SOURCE"
assert results == wrong
except AssertionError:
print("PASS: changed reference label was rejected")
else:
raise RuntimeError("negative test should fail")
Actual local result: The script printed “PASS: 8 of 8 editorial routing fixtures matched,” with two ASK_SOURCE, two ASK_CONFLICT, and four PROCEED cases. The deliberately incorrect label in the negative case was rejected. This verifies the branching code and curated reference labels, not AI judgment, factual accuracy, or conversational quality.
The code also cannot check that the assistant asks only one question, that the question targets the right conflict, or that a drafted update makes no unsupported promises. Those are separate checks.
7. Review the model’s real answers with four rules
When you try the prompt in your chosen AI product, submit cases one by one and save exact responses.
- Correct branch: For C01 or C06, did it ask for missing notes rather than fabricate source content?
- One actionable question: For C04 or C07, did it identify the specific conflict rather than ask “Can you clarify everything?”
- No needless pause: For C02, C03, C05, or C08, did it deliver the requested draft despite optional unknowns?
- Source fidelity: Did it avoid turning “proposed” into “shipped,” or inventing a date, price, or approval?
Keep separate scores for branch selection and factual support. A perfectly formatted DRAFT can still contain a false claim. A legitimate question can still be vague or needlessly broad.
If you compare revised prompts, hold the case inputs constant, note the model/product and date, and rerun cases that previously failed. A single successful response does not establish reliability across other requests.
8. Common failures and repairs
The assistant asks for tone before seeing the source. Put the source-availability check first and explicitly declare tone optional. The assistant can use a plain default once the factual input is available.
The assistant drafts without any notes. Make absence of the required source a hard branch condition. Do not let generic prior knowledge substitute for the material the user asked it to use.
The assistant asks about every missing date. Distinguish an absent fact from a necessary fact. If the draft can omit a date without misleading readers, proceed. Do not fill a missing field by guessing.
The assistant silently picks one of two incompatible claims. Surface the central contradiction and ask which assertion is approved. If the task permits a neutral uncertainty statement, change the task contract explicitly rather than silently applying a different rule.
The assistant provides a good draft and then asks several questions. State that DRAFT and QUESTION are mutually exclusive output branches. Validate that there is only one branch if downstream software depends on it.
The assistant claims it sent the update. Drafting and external delivery are different tasks. A text prompt cannot prove that delivery occurred, and permission to draft is not permission to send.
Acceptance checklist
- Required source material is actually present.
- Any blocking contradiction is clearly identified.
- Optional preferences have safe defaults.
- Unspecified facts are not invented.
- The assistant chooses QUESTION or DRAFT, not both.
- A QUESTION branch contains one useful, specific question.
- A DRAFT branch preserves all material status distinctions.
- An evaluator reviews branch choice separately from factual accuracy.
- Real model tests are recorded separately from editorial code fixtures.
A one-question gate is useful because it protects both accuracy and momentum: the assistant stops when the task truly lacks a foundation and continues when it has enough to produce a faithful result. The gate needs periodic evaluation against realistic inputs, not just a longer instruction paragraph.
Official references and limits
- OpenAI — Prompt engineering: precise instructions, boundaries, and representative tests.
- Google AI for Developers — Prompt design strategies: clear requests, structured context, and iterative refinement.
- Anthropic — Prompting best practices: explicit output requirements and examples.
What was and was not tested: We executed the deterministic Python fixture on eight original, fictional cases, including one intentionally wrong label. We did not run a live model, measure question frequency, verify real release information, or send customer communications. The decision categories, example notes, routing expectations, and sample draft are editorial constructions. A production system must also assess human review requirements and the consequences of wrong assumptions.
Official sources
Reference details and review dates appear in the guide. Product features can change; follow the linked source for current information.
See this guide for which examples were constructed, reproduced, or independently checked.