Write the shape of a summarizer system prompt that compresses 20 turns to 500 tokens without dropping user stated facts. What instructions are essential? What is the failure mode you are designing against?
Use a sectioned summary with a protected user-facts block, per-section token caps, and a verbatim-quote rule for stated facts. The failure mode is fluent prose that quietly drops the one fact the user most cared about.
Picture a hotel concierge who takes notes about a guest. A bad concierge writes one paragraph: "the guest seems easy-going and likes Italian food." A good concierge fills out a card with labeled boxes: name, room number, allergies, preferences, open requests. The labeled boxes mean nothing critical gets forgotten just because the concierge ran out of room. A summarizer prompt works the same way. If you ask for free-form prose, the summary will read smoothly but the allergy might silently disappear. If you ask for labeled sections with a protected facts box, the allergy survives every refresh because there is a named place for it to live.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
A summarizer prompt is one of the highest-leverage pieces of text in any production chat or agent system. The prompt decides which user statements survive a refresh, which fade, and which silently disappear. A poorly designed prompt can pass every aggregate eval (semantic similarity, ROUGE, BLEU) while quietly destroying the application's ability to remember the one fact each user most cares about.
This deep dive walks through the design of a summarizer prompt that compresses 20 turns to 500 tokens without dropping user-stated facts. The shape generalizes to other compression ratios and other domains; the principles do not change.
The framing: structured extraction, not paraphrase
The first design move is to stop thinking of the summarizer as a paraphraser and start thinking of it as a structured-extraction step that also produces narrative. A paraphraser is asked "say the same thing in fewer words." An extractor is asked "pull these specific kinds of content into these specific slots, and then write a brief narrative for the rest."
The difference is not stylistic. A paraphraser has full latitude to drop whatever it thinks is least important to the overall meaning. User-stated facts (a budget figure, an allergy, an identifier) typically contribute little to the overall meaning of a conversation but are exactly the things the application cannot afford to lose. A paraphraser, doing its job well, drops them.
An extractor cannot drop them, because the prompt explicitly names a slot for them and forbids the slot from being empty or paraphrased. The same model with the same input produces a fundamentally different output when the framing changes from "summarize" to "extract into these labeled slots, then narrate the rest."
This framing also makes the output evaluable. A free-form summary is evaluated with fuzzy metrics that average across all the content. A sectioned summary can be evaluated section by section: the facts section gets exact-match recall, the narrative section gets semantic similarity. Different sections, different metrics, different defenses.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
Real products, models, and research that use this idea.
- Mem0 implements the durable-facts idea as a separate extracted-fact store, sidestepping prose summarization for those specifics.
- Anthropic's Claude projects expose a custom-instructions block that effectively carries verbatim user-stated facts across sessions.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow do you measure whether your summarizer prompt is actually preserving user-stated facts?
Build a small offline eval that injects synthetic user-stated facts into a 20-turn synthetic conversation, runs the summarizer, and checks whether each fact appears verbatim in the output. Score is per-fact recall, not overall similarity. Run the eval on every prompt change before shipping.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Asking the summarizer for free-form prose with a total token budget. Without per-section caps and a protected facts block, the model trades user facts for narrative polish.
60 second bullets to scan on the way to the call.
List the four sections of a durable summarizer prompt
Explain why sectioning beats free-form prose under aggressive compression
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.