Lesson 17 of 25
The Language of Simplicity
A prompt is an instruction, not a conversation. Pleasantries, hedging and apologies for the length of your request all have to be read past before the actual task begins - and figures of speech like "knock it out of the park" or "give it 110%" carry a meaning for you that they do not reliably carry into the output. Say what you want in direct, literal language, and name the thing precisely: not "the important stuff" but "the net profit figure and the top three products".
Tags do the work that plain-language directness does elsewhere: a <task> tag and a <required_output> tag are unambiguous in a way no amount of careful prose is, because the boundary between instruction and material is structural rather than grammatical. This matters most with pasted documents - put the report inside <document> tags and the instruction after it, and there is no chance of a sentence in the report being read as part of your request.
- One request per tag - split paragraphs that contain several.
- Pasted documents go in <document> tags, instruction last.
- Tell it what to do when something is ambiguous.
- Replace idioms with the literal action before tagging.
- Ask it to say "not stated" rather than infer.
Instead of
Hey Gemini, so I've got this report here and it's pretty long, to be honest. I don't really have time to go through all of it, so I was wondering if you could help me out by just pulling out the important stuff. Something about the Q3 sales figures would be great. Thanks.
Perplexity version
<document> [Paste the full Q3 sales report here - all of it. Long is fine.] </document> <task> Analyse the Q3 sales report above. </task> <required_output> <net_profit> The final net profit figure, quoted exactly as written, with the line item or page it came from. </net_profit> <top_three_products> The three best-selling products as a bulleted list, each with its figure. If the report ranks by revenue and by units and those rankings differ, give both and say which you treated as primary. </top_three_products> <conclusion> The report's overall conclusion in one sentence. </conclusion> <discrepancies> Any place where two parts of the report give different figures for the same thing. Quote both. This is the most valuable thing you can find and it is the thing a summary normally buries. </discrepancies> </required_output> <rules> - Figures exactly as written, with currency and units - lakh, crore, million. Do not convert. - If something I asked for is not in the document, write "not stated in the report". Do not compute it, estimate it, or supply it from general knowledge about the sector. - No commentary or recommendations unless I ask. </rules> <if_unclear> If the report's structure makes any of this genuinely ambiguous - several profit lines, product names that look like categories - do not pick one and proceed silently. Name the ambiguity, give me your best reading, and say what you would need to resolve it. </if_unclear>
Instead of
I need to write an email to my team. We really need to hit the ground running this quarter and knock it out of the park. So, whip up something that tells them to give it 110%.
Perplexity version
<task> A motivational email to the sales team for the start of Q4. </task> <goal> Each person ends Q4 above target. </goal> <key_message> Acknowledge the work they put into Q3. Then state plainly that Q4 carries the year. </key_message> <call_to_action> Each team member books a 15-minute goal-setting meeting with their manager this week. </call_to_action> <tone> Professional, energetic, encouraging. Direct rather than effusive. </tone> <length> Under 200 words, plus a subject line. </length> <banned_language> No sports idioms and no business clichés. Specifically: hit the ground running, knock it out of the park, give it 110%, move the needle, take it to the next level, all hands on deck, circle back, let's crush it. This is the core instruction, not a style note. These are the phrases I would have reached for myself, and they are exactly why the email would be read past - everyone on the team has seen a hundred of them. Where you would use one, write the literal thing it was standing in for: "hit the ground running" means start on day one rather than in week three. "Give it 110%" means nothing I can actually ask of anyone. </banned_language> <placeholders> [TEAM NAME], [MANAGER]. Do not invent Q3 figures - mark where I should insert a specific achievement if one would help. </placeholders> <after_the_draft> <cliche_check> Quote any phrase in your own draft that is doing a cliché's job even if it is not on my list. </cliche_check> <the_difficult_line> "Q4 is the most important quarter of the year" can read as pressure rather than encouragement. Tell me how your version of that sentence lands, and offer one alternative if you think it tips wrong. </the_difficult_line> <honest_assessment> If you think the call to action undercuts the motivation - that a message about exceeding targets ending in "book a meeting with your manager" reads as surveillance rather than support - say so. I would rather hear that now. </honest_assessment> </after_the_draft>
Instead of
Can you give me some Python code that gets stuff from a website? I need it to grab the headlines from a news site.
Perplexity version
<task> A Python script that scrapes news headlines. </task> <specification> - Libraries: `requests` and `BeautifulSoup` (bs4). Not Selenium, not Scrapy. - Request: HTTP GET to `https://timesofindia.indiatimes.com/`. - Extract: the text of every `<h2>` element containing a headline. - Output: print each headline on its own line. </specification> <robustness> - Set a `User-Agent` header; a bare `requests` call is often refused. - Timeout on the request, status code checked before parsing. - Handle connection errors, non-200 responses, and the case where no `<h2>` elements are found. That last case is the most likely and the easiest to misread as the site being down. - Strip whitespace, skip empty strings. News-site `<h2>` tags are frequently empty or icon-only. </robustness> <the_honest_part> You do not know the current HTML of that site, and `<h2>` may not be where its headlines live. So: - Put the tag and class in one named constant at the top, commented as the thing to change. Not buried inside the parsing call. - Include a short diagnostic block that prints the match count and the first two raw matches, so a wrong selector is visible immediately rather than appearing as empty output. - Then explain, in plain English, how I find the correct selector myself with the browser's inspect tool. That explanation will outlive the script. </the_honest_part> <legality> One short section: what robots.txt and terms of use mean for scraping this site, and how I check them myself. Do not assert that it is permitted. </legality> <format> The script as one complete runnable file, then the explanation below it. Put the script in an Artifact - I will be editing the selector repeatedly and I want it in one place rather than scattered through the chat. </format>