Lesson 8 of 25
The Discipline of Precise Limitation
Constraints are the limits you set on the answer before you get it - how long, what format, what tone, and crucially what to leave out. They work because an unconstrained model fills space with the most average version of a thing, and every limit you add removes a swathe of that averageness. Negative constraints, saying what not to include, often sharpen an answer more than positive ones.
Give each constraint its own tag inside a <constraints> block, and put the exclusions in a separate <exclusions> block - splitting them that way makes the negative constraints impossible to skim past. Add a <when_constraints_conflict> block saying what to do when two cannot both hold, and ask for a constraint audit in the output: Claude will genuinely report that it came in at 162 words rather than asserting it met the limit.
- One tag per constraint; exclusions in their own block.
- Add a <when_constraints_conflict> rule before the task.
- Ask for a constraint audit, not a reassurance.
- Ask which constraint hurt the answer most.
- Ask it to flag its own violations of your exclusions.
Instead of
Explain what an API is.
Perplexity version
<task> Explain what an API is to a non-technical project manager. </task> <constraints> <length>150 words maximum, with the count in brackets at the end.</length> <analogy>The waiter in a restaurant: customer's order is the request, the kitchen is the system, the food coming back is the response. Hold this analogy throughout - do not switch to a second one.</analogy> <structure>Analogy first, then exactly one sentence of plain technical definition. Nothing follows that sentence.</structure> <audience>Assumes no programming knowledge at all.</audience> <banned_words>endpoint, protocol, interface, integration, payload</banned_words> <format>Prose. No bullet lists.</format> </constraints> <when_constraints_conflict> If two constraints genuinely cannot both be satisfied, do not quietly break one. Say which one you sacrificed and why, in a line after the explanation. The word limit against the structure requirement is the likely pinch point. </when_constraints_conflict> <output> First, under <explanation>, the explanation itself. Then, under <constraint_audit>, go through the six constraints above one by one and state whether each was met. I want this as a checklist, not a reassurance - if the word count is 162, say 162. Then, under <weakest_link>, name the constraint that most damaged the explanation. If the banned-words list forced a clumsier sentence than necessary, tell me which word you want back. </output>
Instead of
Write an email telling my team we hit our sales target.
Perplexity version
<task> Write an internal email to the sales team announcing that we have exceeded our quarterly sales target by 15%. </task> <constraints> <tone>Exuberant, celebratory, motivational. Two or three exclamation marks, not ten.</tone> <style>Direct and personal. "We" and "our team" throughout.</style> <must_include>Explicit thanks for the team's hard work; the figure "15% over target"; a team celebration dinner next Friday.</must_include> <must_exclude>Individual names singled out. Next quarter's targets. Anything about what comes next - this email does one job only.</must_exclude> <banned_phrases>leverage, synergy, circle back, going forward, touch base, reach out, at the end of the day</banned_phrases> <length>Under 200 words including the subject line.</length> </constraints> <format> Subject line, then body. No commentary inside or around the email. </format> <output> Under <email>, the draft. Under <tension>, name the constraint pair that pulled hardest against each other and say how you resolved it. Celebratory tone against a jargon ban usually costs something; I want to know what it cost. Under <would_improve>, one line: the single constraint you would drop to make this a better email, and why. Say it even if you think I will disagree. </output> <note> Put this constraint set into a Project as standing house style if I am going to send announcements like this regularly - then I only state what is new each time. </note>
Instead of
Give me a workout plan.
Perplexity version
<task> Create a 3-day-per-week beginner workout plan for building strength. </task> <constraints> <goal>Functional strength for daily life. Not bodybuilding, not weight loss.</goal> <equipment>Bodyweight and dumbbells only.</equipment> <format>One table: Day, Exercise, Sets, Reps, Why this exercise.</format> </constraints> <exclusions> <no_barbell>No barbell work and no gym machines of any kind.</no_barbell> <no_impact>No jumping, running or plyometrics. The user has sensitive knees.</no_impact> <no_fixtures>No bench, no pull-up bar, no rack.</no_fixtures> <no_scope_creep>No supplements, no diet advice, no body-composition discussion.</no_scope_creep> </exclusions> <output> Under <plan>, the table. Under <substitutions>, one line per exclusion: the exercise you would normally have included, and what you used instead. The swap teaches more than the table does. Under <still_loads_knees>, flag any exercise in your own table that meaningfully loads the knees despite the constraint. Deep lunges and step-ups slip into sensitive-knee plans routinely - I would rather you catch yours than I discover it. Under <what_this_plan_cannot_do>, be straight with me about what the equipment and impact limits cost. If a genuinely good beginner strength plan needs something on the excluded list, say so rather than producing a thinner plan and calling it complete. </output> <note> This is general information, not medical advice. Say so in one line, and if the knee constraint points to something a physiotherapist should set rather than a prompt, say that too. </note>