The Summarization TRAP: Why You Should Never Summarize Everything A new article warns that summarizing long conversations in AI chatbots can lead to critical data loss, citing an example where a customer support chatbot rounded a $249.50 refund to 'around $250' after the conversation was summarized. The article argues that summarization removes precise details, which can cause audit issues in financial, healthcare, and legal applications, and introduces 'Case Facts Blocks' as a solution to preserve exact information. Imagine you’re building a customer support chatbot for an e-commerce company. A customer starts a conversation and says: Customer ID: cus abc123Order ID: ord xyz789Refund Amount: $249.50Coupon Code: SUMMER2026 The chatbot verifies the customer, checks the order details, looks up the refund policy, and even calls a few internal APIs. The conversation keeps going because the customer has more questions. They ask about the shipping address, the expected refund date, whether the coupon affected the refund amount, and a few other things. Before you realize it, the conversation has already crossed 25 or 30 turns. Now the customer asks one final question: “Can you remind me how much I’m getting refunded?” The chatbot confidently replies, “You’re getting around $250.” Wait… The customer wasn’t getting around $250 . The customer was getting exactly $249.50 . Nobody changed the refund amount. Nobody edited the conversation. The information was clearly mentioned at the beginning of the chat. So why did the model suddenly stop being precise? Where did those 50 cents go? At first glance, this might look like a small rounding error. But in a production financial system, healthcare application, or legal workflow, this isn’t just a rounding mistake, it can become an audit issue. More importantly, it reveals a much bigger architectural problem. Most engineers immediately think,“Maybe the model forgot.” Others think,“Let’s just use a model with a larger context window.” Both sound reasonable, but neither is the real solution. Before we understand how production AI systems solve this problem using techniques like Case Facts Blocks we will see later what exactly it is , we first need to understand something much more fundamental. What exactly is summarization? The problem starts much earlier, with the way we summarize conversations. let’s understand what most engineers naturally do to solve it. The conversation is becoming longer. The context window is slowly filling up. So the obvious question becomes: “Why don’t we just summarize the old conversation?” Honestly, that’s not a bad idea. In fact, summarization is one of the most commonly used techniques in long-running AI systems. Whether you’re building a customer support chatbot, a research assistant, or a document analysis agent, sooner or later you’ll have to deal with conversations that become too large to fit comfortably inside the model’s context window. So instead of sending all 30 or 40 conversation turns back to the model, we compress the older part of the conversation into a much shorter summary and keep only the recent messages in full detail. For example, imagine the original conversation looked something like this: Turn 1:Customer: My Customer ID is cus abc123. My Order ID is ord xyz789, and I paid exactly $249.50. Turn 2:Agent verifies the customer. Turn 3:Order lookup completed. Turn 4:Refund policy checked. Turn 5:Customer asks whether the coupon affects the refund. Turn 6:Agent explains the refund policy. ... Turn 25:Customer asks another follow-up question. Instead of sending all twenty-five turns again, we might replace the first twenty turns with something like this: Conversation Summary• Customer requested a refund.• Agent verified the customer.• Order lookup completed.• Refund eligibility confirmed.• Customer had questions about the refund policy. Now the model only receives: Much smaller. Much cheaper. Much faster. At first glance, this seems like the perfect solution. We reduced the number of tokens, the model still understands what happened earlier, and we can continue the conversation without exceeding the context window. You maybe thinking, that’s what I do every time, what’s wrong in this ?? The problem isn’t summarization itself. The problem is what summarization removes. Step 2: Where Does Summarization Go Wrong? The summary captures the overall conversation accurately. But let’s compare it with the original conversation for a second. Original Conversation SummaryCustomer ID: cus abc123 MissingOrder ID: ord xyz789 MissingRefund Amount: $249.50 MissingRefund Deadline: 2026-04-30 MissingCustomer requested refund PresentAgent verified eligibility PresentRefund eligibility confirmed. Present Notice something interesting. The summary preserved the story . But it lost the facts . And that’s exactly what summaries are designed to do. When we ask an LLM to summarize a conversation, we’re essentially asking it: “Keep the important ideas, but remove unnecessary details.” The problem is… The model has no way of knowing that $249.50 isn’t just another detail. For a human reading the conversation, “$249.50” might look like a small piece of information. For your refund API, it’s the entire transaction . The same is true for customer IDs, invoice numbers, dates, policy numbers, medical record IDs, contract clauses, or tracking numbers. To us, they look like tiny details. To the application, they’re the source of truth. So the issue isn’t that the summary is wrong. The issue is that summaries are optimized for understanding, not for preserving exact data. And once those exact values disappear, getting them back becomes almost impossible. Unfortunately… This problem becomes even worse when the conversation keeps getting longer. Because now you’re no longer summarizing the original conversation. You’re summarizing a summary . And that’s where the real trouble begins. Step 3: The Progressive Summarization Trap Imagine your customer support agent has now handled 40 conversation turns. You already summarized the first 20 turns to save context . After another 20 turns, the conversation becomes large again. So what do you do? The most natural solution is to summarize everything once more. This time, however, you’re no longer summarizing the original conversation. You’re summarizing an existing summary . A few more turns later, you summarize it again. Original Conversation │ ▼ Summary 1 │ ▼ Summary 2 │ ▼ Summary 3 At every stage, the model tries to keep the main idea while removing information it considers less important. The story survived. The exact facts didn’t. Every new summary removes a little more detail than the previous one. Individually, those changes seem harmless. But after multiple rounds of summarization, the information loss starts to compound. This phenomenon is known as Progressive Summarization. The model isn’t making a mistake. It’s doing exactly what we asked it to do. We asked it to compress information. And once those values disappear, the model has no reliable way to reconstruct them later. So the question becomes: Can we summarize the conversation without summarizing the information that must never change? That’s exactly the problem production AI systems solve. Step 4: Not All Information Is Equal At this point, we know that summarization removes details. But here’s the interesting question. Should every piece of information be treated the same? The answer is no . In a long conversation, there are generally two types of information. The first type isnarrative information. This is the information that helps us understand what happened during the conversation. For example: These statements describe the overall flow of the conversation. Even if we compress them into a shorter summary, we usually don’t lose anything important. Now let’s look at the second type. This is transactional information. Unlike narrative information, these values aren’t describing the conversation, they’re the actual data your application depends on. For example: Customer ID: cus abc123Order ID: ord xyz789Refund Amount: $249.50Refund Deadline: 2026-04-30Tracking Number: TRK-982173Policy Tier: Gold Notice something. These aren’t sentences. They’re facts. Your refund API doesn’t care that the customer asked for a refund. It cares about the exact value of: refund amount = 249.50 Similarly, your database doesn’t care that the order was discussed. It needs the exact: order id = ord xyz789 This is where many engineers accidentally make a design mistake. They summarize both types of information together. The narrative gets shorter. But the transactional facts slowly disappear. Instead, production AI systems treat these two categories completely differently. Narrative information is meant to be summarized. Transactional information is meant to be preserved. That’s the mental model I want you to remember throughout this blog. Summarize the story. Preserve the facts. Once you separate information into these two categories, the architecture almost designs itself. The next question becomes: Where should those facts live if they should never be summarized? Step 5: The Case Facts Block Now we know something important. Not every piece of information should be summarized. Narrative information can safely become shorter. Transactional information cannot. So the obvious question becomes: If we shouldn’t summarize transactional information, where should we keep it? This is exactly the problem the Case Facts Block solves. A Case Facts Block is nothing more than a structured collection of facts that should remain exactly the same throughout the entire conversation. Instead of mixing these values with the conversation history, we separate them into their own dedicated block. For example, instead of relying on the model to “remember” that the customer paid $249.50 , we explicitly provide those values every single time we make a request.