Writing: brief, draft, check
A 40-minute routine for a piece you must stand behind: write the brief yourself, let a model draft from it, edit for meaning, check the draft against the brief in a fresh chat, and match every number and name before it goes out.
- What this is
- A routine for writing an email, memo or short article with AI help, where you set out the points and facts before any draft.
- Why it matters
- You avoid sending something under your name that carries a number, name or example nobody gave the AI.
- The short version
- Write the brief yourself with audience, purpose, key points and a source for every fact, then let the model draft from it.
- Edit for meaning, then check the draft against the brief in a fresh chat and cut any claim the brief does not hold.
- Match every number, name and date in the final text to the brief, and read it aloud before it goes out.
On this page
Use it when you are writing an email, memo or short article with facts in it and you will put your name on it.
Not when the piece is private or throwaway. Write it yourself, or skip the checks.
You need an assistant, a text file for the brief, Python 3.9 or later (a free programming language) for the fact gate (a short script, meaning a small program, in step 5; you can do it by hand instead) and about 40 minutes. The steps and times are our suggestion. Leave out private details that do not belong in a chat: What not to paste. Check whether your workplace, journal or course has a rule about saying AI was used.
Steps
| # | Step | Who | Time | Check |
|---|---|---|---|---|
| 1 | Write the brief yourself: audience, purpose in one sentence, what the reader must do and by when, 3 to 7 key points, and every fact with its source. | Person | 10 min | The purpose fits in one sentence and every fact has a source. If it fails: you do not yet know what you want to say. |
| 2 | Ask for a draft from the brief only, with a sample of your own writing for voice. | AI | 2 min | The draft is within 20% of the target length. |
| 3 | Edit for meaning. | Person | 15 min | Every key point from the brief is there and means what you meant. |
| 4 | Check the draft against the brief in a fresh chat. | AI | 3 min | No claim outside the brief is left unresolved. If it fails: cut it or add it to the brief with a source. |
| 5 | Run the fact gate: match every number, name and date in the final text to the brief. | Script and person | 5 min | Nothing is left unmatched. If it fails: cut it, or add it to the brief with a source and run again. |
| 6 | Read it aloud, as the reader. | Person | 5 min | You would sign every sentence. Cut the ones you cannot defend. |
Audience: <AUDIENCE>
Purpose in one sentence: <PURPOSE>
The reader must: <ACTION> by <ACTION_DATE>
Key points (three to seven): <POINTS>
Facts, each with its source: <FACTS>
Target length: <WORDS> words
Replace the following:
<AUDIENCE>: who will read it, such asmy team.<PURPOSE>: why you are writing, in one sentence.<ACTION>and<ACTION_DATE>: what you want the reader to do, and by when.<POINTS>: your own key points, one line each.<FACTS>: each number, name or date, with where it comes from.<WORDS>: the length you want.
The prompts
For step 2:
Write <TYPE> for <AUDIENCE>. Purpose: <PURPOSE>. The reader must <ACTION> by <ACTION_DATE>.
Use only these points and facts. Do not add facts, examples or numbers that are not here:
<POINTS_AND_FACTS>
Match the tone of this sample of my writing:
<SAMPLE>
Target length: <WORDS> words. Put the ask in the first two sentences.
Replace the following:
<TYPE>: such asan emailora one-page memo.<AUDIENCE>,<PURPOSE>,<ACTION>,<ACTION_DATE>and<WORDS>: from your brief.<POINTS_AND_FACTS>: the key points and the facts from your brief.<SAMPLE>: a few paragraphs of your own writing.
For step 4, open a fresh chat so the checker starts without the draft's own reasoning in view.
You are checking a draft against its brief. Do not rewrite it. List, quoting the exact sentence:
1. Any claim, number, name or example in the draft that is not in the brief.
2. Any point from the brief that is missing or whose meaning has changed.
3. Sentences that are vague or could be read two ways.
4. Tone problems for this audience: <AUDIENCE>.
5. Whether the action is clear, with a date. Answer yes or no.
If a category is empty, write "none".
BRIEF:
<BRIEF>
DRAFT:
<DRAFT>
Replace the following:
<AUDIENCE>: from your brief.<BRIEF>and<DRAFT>: the brief and your edited draft.
The fact gate
Save your brief as brief.md and the final text as final.md, save this as fact_gate.py in the same folder, and run python3 fact_gate.py brief.md final.md in a terminal (the window where you type commands). It lists numbers and capitalised words in the final text that are not in the brief:
# fact_gate.py: lists numbers and names in the final text that are not in the brief.
# Needs Python 3.9 or later and nothing else (standard library only).
# Usage: python3 fact_gate.py brief.md final.md
# It cannot see a new name at the start of a sentence, so it helps your check and does not replace it.
import re
import sys
def tokens(text, skip_first_word):
found = set()
for number in re.findall(r"\d[\d,.]*%?", text):
found.add(number.rstrip(".,"))
for sentence in re.split(r"(?<=[.!?])\s+|\n+", text):
sentence = re.sub(r"^[\s\-*#>\d.)]+", "", sentence)
words = sentence.split()
rest = " ".join(words[1:]) if skip_first_word else sentence
for name in re.findall(r"[^\W\d_]+", rest):
if name[0].isupper() and name[1:2].islower():
found.add(name)
return found
def main():
with open(sys.argv[1], encoding="utf-8") as handle:
brief = handle.read()
with open(sys.argv[2], encoding="utf-8") as handle:
final = handle.read()
extra = sorted(tokens(final, True) - tokens(brief, False))
if extra:
print("In the final text but not in the brief:")
for item in extra:
print(" " + item)
sys.exit(1)
print("Every number and name in the final text is in the brief.")
main()
It misses a number written in words, a changed unit and a wrong date that is already in your brief, so step 6 still matters. By hand, underline every number, name and date in the final text and tick it off against the brief.
A worked example (illustrative)
Tom writes a short update to his team. His brief has three points: the launch moves to 14 March, the budget stays at 12,000, and questions go to Priya Nair at Acme. The model's draft adds "3 vendors will confirm by Friday", which no one gave it. The check pass quotes that sentence under "not in the brief". The fact gate prints 3 and Friday. Tom cuts the sentence, runs the gate again and reads: "Every number and name in the final text is in the brief." The names and numbers are invented.
How to tell it worked
- The gate reports a match, and the check pass has no open item.
- You can say each key point without looking at the draft.
- It has failed if you skipped the brief and edited the model's first guess at what you meant. Go back to step 1.
Variations
- Text you already wrote. Write the brief as notes on what you meant, skip steps 2 and 3, and run steps 4 to 6 on your own draft.
- A piece with research in it. Gather the facts first with Research a topic with citation checking and paste the checked claims into the brief.
Limits
In a 2023 Science experiment with 453 professionals, ChatGPT cut time on short writing tasks by 40% and raised rated quality by 18% (Noy & Zhang, randomised experiment). Those were short, self-contained tasks, so the result may not carry over to a long piece.
Sources
- Noy & Zhang, 2023. Randomised experiment with 453 professionals on short writing tasks. Science. Link.
Changes
- v1.010 Oct 2026first version
- Time to do it
- 40 minutes (our estimate)
- Sources
- 1
- Updated
- 10 Oct 2026
- Last checked
- 4 Oct 2026