Article / 4 min read
Why your prompts give random results, and the 4 lines that fix it
Yousef Ali · 2 Oct 2026
When people send me a prompt that "doesn't work", it's almost always missing one of four things: who the model should be, what exactly it should do, the rules, and what the answer should look like.
The structure
Start with ROLE, then TASK, then the rules as a short list, then OUTPUT. Keep the parts that change in curly braces so you can reuse the prompt next week.
arabic.version
From the reel: A landing page in one prompt
1## 0. Arabic version (applies to everything below)
2
3The site and the dashboard are both bilingual: Arabic and English.
4
5Language and routing:
6- Use next-intl with routes /ar and /en. Arabic is the default language (my audience follows me in Egyptian Arabic). Add a language switch in the top bar of the site and the dashboard.
7- Arabic copy is written in Egyptian Arabic, friendly and simple, not formal.
8- Add hreflang tags and a separate share image per language.
9
10Font:
11- Arabic uses Thmanyah Bold for headings and display text. Use the regular weight of the same family for body text if it's available.
12- I will put the font files in /public/fonts/thmanyah. Load them with next/font/local. Fallback: IBM Plex Sans Arabic, then system-ui.
13- Keep JetBrains Mono for prompts and code in both languages.
14- Handwritten notes and sticky notes in Arabic use Thmanyah Bold with the same small rotation, since Caveat has no Arabic letters.
15
16RTL:
17- Arabic pages use dir="rtl". Build every layout with logical properties (ms, me, ps, pe, start, end) so it mirrors automatically.
mainWorks with ClaudeMarkdown
Change only the parts in braces. Everything else stays the same, and that's what makes the results consistent.
Why the output line matters most
If you don't say what the answer should look like, the model guesses. Sometimes you get code, sometimes an essay about code. One line saying "one HTML file, no explanations" removes the guessing.