AI-Ready Data

The Exception Expired. The AI Summary Kept It Alive.

A support lead points to the missing piece of a policy summary, while the expiry date stays behind with the hourglass.

The following scene is an illustration, not a customer case. In early March, a support lead approves a temporary exception. A billing migration double-charged a group of accounts, so for those accounts only, refunds requested after the usual 30-day window can be approved until March 31. The lead records the decision in a ticket, with the list of affected accounts attached and the end date in the ticket’s expiry field.

That week, a scheduled job summarizes recent policy changes into the knowledge base the support assistant reads. The summary says: Refunds requested after 30 days can be approved for accounts affected by the billing migration. The sentence is accurate. In May, a customer whose account was never affected asks about a late refund. The assistant retrieves the summary, finds a rule that matches the question, and tells the customer the refund can be approved.

An AI summary can repeat a rule accurately and still lose the conditions that decide when the rule applies. Who it covers, how long it is valid, which rule it overrides, and who approved it all belong to the data. When those conditions do not survive summarization, chunking, or transformation, the AI applies a correct sentence to the wrong case.

Key takeaways

  • An AI summary can match its source word for word and still drop the scope, end date, precedence, and approver of a rule.
  • Freshness checks miss this failure: the document is current, but the rule inside it has ended.
  • Keep conditions as metadata fields on every chunk and summary, such as scope, end_date, overridden_rule_id, and source_record_id, and filter on them at retrieval.
  • Test the edges with fixed evaluation conditions: the day after expiry, an account outside the scope, and a question that retrieves both the exception and the rule it overrides.

Why an accurate AI summary can still give the wrong answer

An accurate AI summary can still give the wrong answer because summaries keep the main statement and drop the qualifiers, and the qualifiers are what limit a rule. In the source ticket, the conditions lived in three places:

  • An attached account list that defined who the exception covered
  • A structured date field that held the end date
  • An approver line that recorded who authorized it

None of them were in the sentence the summarizer read most closely. The summary kept the rule and dropped the account list, the end date, and the approver.

  1. 01Source ticket

    Rule, affected account list, end date of March 31, and approver

  2. 02AI summary

    Rule only: refunds after 30 days can be approved for affected accounts

  3. 03Retrieval in May

    The summary matches a late-refund question from an account that was never affected

  4. 04Answer

    Refund approved for a case the exception never covered

How a correct summary becomes a wrong answer: the conditions stay in the ticket, and only the rule moves on (illustration)

Splitting documents for retrieval causes the same loss at a smaller scale. In its write-up on Contextual Retrieval, Anthropic describes a chunk from a financial filing that reports revenue growth without saying which company or which quarter it refers to. Their approach adds a short explanation of that context to each chunk before indexing. The same thing happens to an exception: once the paragraph is separated from the ticket, nothing in it says the rule ended on March 31.

The failure is hard to spot in review. Anyone who checks the summary against the ticket will find that it matches. The error appears only when someone asks a question the exception was never meant to answer.

Why stale data checks miss an expired exception

Data freshness checks would not have caught this failure, because the summary was not stale data. It was the newest entry in the knowledge base about refunds. Nobody had edited the ticket since March, and nothing about the document was out of date. The rule inside it had ended.

Re-indexing more often would not help either. A nightly refresh would summarize the same ticket again and produce the same sentence. A freshness check asks whether a document is the latest version. The question the support assistant needed answered was different: does this statement still apply, and to whom?

Freshness check vs validity check in enterprise RAG
CheckWhat it asksWhat it catchesWhat it misses
Freshness checkIs this the latest version of the document?Outdated versions and updates that never reached the indexA current document whose rule has already ended
Validity checkDoes this statement still apply today, and to whom?Rules past their end date and cases outside their scopeChanges to the document itself, so it does not replace the freshness check

The two checks answer different questions, so one cannot stand in for the other. Keep the freshness check for document versions, and add a validity check for the rules inside them.

Conflicting information in enterprise RAG: which rule takes precedence?

When an enterprise RAG system retrieves both a general rule and an exception, the model needs to know which one takes precedence, and the text alone rarely says so. In the refund scene, a question about late refunds could retrieve the standard 30-day policy and the exception summary together. Without a link between them, the model has two plausible answers. It may pick one, or it may blend them into something neither document said, such as refunds are usually limited to 30 days but can often be approved later.

The two documents did not contradict each other. Both were correct, for different accounts and different dates. What the data lacked was the relationship: this exception overrides that rule, for this scope, until this date.

Five conditions an AI summary has to carry

Before a rule, policy, or decision enters a summary or a retrieval index, check that five conditions travel with it: scope, validity, precedence, authority, and source. Each one answers a question the AI will otherwise guess at.

Five conditions an AI summary has to carry: scope, validity, precedence, authority, and source
ConditionIn the source (illustration)What the summary keptHow to carry itHow to check it
Scopewho or what it coversAccounts double-charged in the migration, listed in an attachmentAccounts affected by the migration, with no listKeep the account list, or a linked rule_id, in a scope fieldAsk about an account outside the list; the answer should not apply the exception
Validitywhen it starts and endsUntil March 31, in the expiry fieldNothingStore start_date and end_date as filterable fields and use them at retrievalAsk after the end date; the answer should give the standard rule
Precedencewhich rule it overridesReplaces the 30-day window for those accounts onlyReads as an alternative to the general policyLink the exception to the rule it overrides with overridden_rule_idAsk a question that retrieves both; the answer should say which one applies
Authoritywho approved itThe support lead, named in the ticketNothingKeep approver and decision_id as fieldsThe answer should be able to point to the approved record
Sourcewhere it came fromTicket ID and policy versionA link to the knowledge base pageKeep source_record_id and the ingestion_version the summary was made fromWhen the source changes, regenerate the summary and rerun the boundary cases

The fourth column matters as much as the third. A condition that the pipeline records but never tests can disappear again at the next change, and nobody will notice until a customer asks the wrong question.

Keep conditions in document metadata, not only in the summary text

The most reliable way to keep conditions through a RAG pipeline is to store them as document metadata that travels with every chunk and summary, rather than trusting the summary text to repeat them. The next summarization step can rewrite a sentence, but it leaves an end-date field as it is.

  • Attach conditions as fields. Keep scope, start_date, end_date, overridden_rule_id, approver, and source_record_id with each chunk, with its embedding, and with any summary made from it.
  • Use the fields at retrieval. Filter out or score down items whose end_date has passed before they reach the model, and pass scope along so the model can check whether the case in front of it qualifies.
  • Write the context into each chunk header. A short header such as [Temporary exception | Valid: Mar 1 to Mar 31 | Scope: migration-affected accounts only] keeps the limits in front of the model even when a field is lost downstream.
  • Regenerate from the source, not from the last summary. When a summary is built from an earlier summary, each pass can drop another qualifier.

This is the same discipline that keeps semantic context attached to data for agents, and it overlaps with context engineering. Both depend on passing the model the limits it has to apply. The same fields help the person who approves the answer: when conditions arrive with the draft, a reviewer does not have to rebuild them by hand.

Test the conditions, not only the sentence

To know whether an AI applies an exception correctly, test the cases at its edges: the day after it ends, an account outside its scope, and a question that retrieves both the exception and the rule it overrides. A summary that passes a word-for-word comparison can still fail all three.

Run the boundary cases as a fixed routine:

  1. Fix the evaluation conditions. Use the same model or agent, the same prompt, and the same retrieval settings.
  2. Run the three boundary cases. The day after the exception ends, an account outside its scope, and a question that retrieves both the exception and the rule it overrides.
  3. Compare answers before and after the data change. With the setup fixed, the difference reflects the data, not a moving configuration.
  4. Treat thin evidence as inconclusive. If the cases are too few to tell, add cases before deciding.
  5. Rerun when the source changes. Every change to the source record triggers the boundary cases again.

The same habit applies after model performance drops.

Exception records are a practical place to start. A delivery team that records every exception with its scope, owner, and end date gives the next project something it can check. We covered that handoff in what a second AI deployment should inherit.

Where conditions fit in AI data preparation

Keeping conditions attached is part of preparing data for a specific use case, alongside field meanings, business terms, and relationships between records. In Syntitan, CUBIG’s AI-Ready Data Platform, teams prepare data for a defined use case, validate with the model or agent they selected, under fixed evaluation conditions, whether the data meets the criteria for that task, and review changes and revalidate when the underlying data changes. Whether data is AI-ready depends on the task it serves. An expired exception can make the same data unfit for that task without anyone editing a file.

Five questions to ask about your AI summaries

  • When a summary states a rule, can we tell whom it covers and until when?
  • If two retrieved documents disagree, does the data say which one takes precedence?
  • Do our chunks and summaries carry end_date and source_record_id as fields?
  • Have we tested the day after an exception ends, and an account outside its scope?
  • When the source record changes, do we know which answers to check again?

If you cannot answer the first question for most of your knowledge base, start there. Pick one rule with an end date, follow it from the source to the assistant’s answer, and see which conditions arrive.

If your team prepares enterprise data for AI tasks and wants to check that the conditions survive, explore Syntitan.

Explore Syntitan, CUBIG’s AI-Ready Data Platform

FAQ

Why do AI summaries drop conditions like expiry dates and scope?

Summaries extract the main statement of a rule and strip away the qualifiers that limit it. Conditions often sit outside the text being summarized, in attachments, date fields, or approver lines, so the summarizer never treats them as part of the rule.

What is stale data in a RAG system?

Stale data is content that no longer reflects the current state of the source, such as an outdated policy version. A related failure is harder to catch: a document can be the newest version and still contain a rule that has ended, so freshness checks pass while the answer is wrong.

Does data freshness prevent outdated answers in enterprise RAG?

Not on its own. Freshness checks confirm that a document is the latest version. They do not check whether a rule inside it still applies or to whom, which requires validity and scope stored as conditions the system can read.

How should enterprise RAG handle conflicting information?

Record how documents relate to each other. When an exception overrides a general rule for a specific scope and period, link the two so the model can tell which one applies instead of choosing one or blending them.

What document metadata should a RAG pipeline keep?

For rules, policies, and decisions, keep scope, start_date and end_date, overridden_rule_id, approver, source_record_id, and ingestion_version. Attach these fields to every chunk and to any summary made from it, and filter on them at retrieval.

How do you test whether an AI applies an exception correctly?

Test the boundaries with fixed evaluation conditions: the day after the exception ends, a case outside its scope, and a question that retrieves both the exception and the general rule. Rerun these cases whenever the source record changes.