This prompt is a temporal gatekeeper for news aggregation and summarization pipelines. Its core job is to evaluate a set of already-retrieved news articles and determine if they are fresh enough to be used for a breaking-news or daily-briefing summary. The ideal user is a system builder who has already solved the retrieval problem—fetching articles from APIs, RSS feeds, or search indices—but now faces the challenge of temporal quality control. The prompt ingests articles with their publication dates and a target freshness window (e.g., 'last 4 hours'), and it outputs a structured assessment: a binary stale/fresh flag for each article, a confidence score, and a concise reason for any staleness determination. This allows downstream summary generation steps to operate only on temporally valid source material, preventing a breaking-news alert from being generated from yesterday's report.
Prompt
News Summarization Freshness Check Prompt

When to Use This Prompt
A practical guide for integrating the News Summarization Freshness Check Prompt into a production news aggregation pipeline, including its ideal use cases and critical limitations.
You should use this prompt when your pipeline aggregates from sources with inconsistent or unreliable publication timelines, such as a mix of fast-moving wires, slower editorial pieces, and social media embeds. It is particularly valuable when the cost of presenting stale information is high—for instance, in financial market briefings, crisis response summaries, or competitive intelligence digests. The prompt is designed to be a deterministic filter in a multi-step RAG architecture. A typical implementation involves a retrieval step, this freshness check step, and then a final grounded summarization step that only sees the articles that passed the check. This separation of concerns makes the system easier to debug and evaluate than a single monolithic prompt that tries to do everything at once.
Do not use this prompt as a general relevance scorer or a full RAG answer generator. It assumes that the articles are already topically relevant to the user's query or briefing topic; its only concern is temporal validity. It is also not a replacement for a robust publication date extraction pipeline. The prompt's accuracy is entirely dependent on the quality of the [PUBLICATION_DATE] field you provide for each article. If your upstream extraction logic fails to parse dates correctly or normalizes them to the wrong timezone, this prompt will confidently make the wrong decision. For high-stakes domains, always route articles flagged as 'stale' to a human review queue instead of silently dropping them, and log the prompt's [STALENESS_REASON] output to monitor for systemic extraction errors.
Use Case Fit
Where the News Summarization Freshness Check Prompt delivers value and where it introduces risk. Use these cards to decide if this prompt fits your pipeline before integrating it.
Good Fit: Time-Sensitive News Aggregation
Use when: Your system generates daily briefings, breaking-news summaries, or time-decaying content where stale articles directly harm user trust. Guardrail: Pair this prompt with a Publication Date Extraction Prompt to ensure every article has a machine-readable timestamp before freshness scoring.
Bad Fit: Archival or Historical Research
Avoid when: Users need comprehensive historical context or the full record of an event over years. A freshness check will incorrectly penalize older, authoritative sources. Guardrail: Route queries classified as 'historical' or 'time-agnostic' by a Time-Sensitive Query Classification Prompt to a standard RAG pipeline without recency filtering.
Required Inputs: Timestamped Corpus & Temporal Window
What to watch: The prompt fails silently if articles lack reliable published_date metadata or if the required freshness window (e.g., 'last 4 hours') is undefined. Guardrail: Implement a pre-processing validator that rejects any document missing an ISO 8601 timestamp and requires an explicit temporal_window parameter in the prompt template.
Operational Risk: False Negatives on Developing Stories
Risk: A strict freshness threshold can drop the first, most authoritative source of a breaking event if a few hours have passed, leaving only lower-quality follow-ups. Guardrail: Combine recency scoring with source authority weighting. Never discard articles solely on age; use a Recency-Boosted Reranking Prompt that blends freshness with trustworthiness.
Operational Risk: Temporal Hallucination in Summaries
Risk: The LLM may generate a summary implying an event is 'ongoing' or 'just happened' based on a fresh article, even if the article describes a past event. Guardrail: Add a Temporal Hallucination Detection Prompt as a post-generation guardrail to flag mismatches between the summary's implied recency and the source's actual event date.
Pipeline Integration: Pre-Retrieval vs. Post-Retrieval
What to watch: Applying freshness checks only after retrieval wastes compute on articles that will be discarded. Guardrail: Inject temporal constraints directly into the retrieval query using a Freshness-Aware Query Rewriting Prompt. Use this prompt post-retrieval only to audit and explain why specific articles were kept or dropped.
Copy-Ready Prompt Template
A production-ready prompt for evaluating the temporal freshness of news articles against a breaking-news or daily-briefing use case.
This template is designed to be pasted directly into your orchestration layer. It instructs the model to act as a strict temporal auditor, comparing the publication date and content of each provided article against the current target date and the query's time-sensitivity requirements. The prompt forces a structured output, making it suitable for automated pipelines where a downstream system needs to decide whether to use, flag, or discard a source based on its recency.
codeYou are a strict temporal relevance auditor for a news summarization system. Your task is to evaluate a set of retrieved news articles and determine if they are fresh enough for a [QUERY_TYPE] use case, such as 'breaking-news' or 'daily-briefing'. **Input Data:** - Target Date and Time: [TARGET_DATETIME] - Query Type: [QUERY_TYPE] - Maximum Acceptable Article Age: [MAX_AGE_HOURS] hours - Articles to Evaluate: [ARTICLES_JSON] (Each article object must contain 'id', 'title', 'publication_date' in ISO 8601 format, and 'content'.) **Evaluation Steps:** 1. For each article, calculate the time difference between [TARGET_DATETIME] and its 'publication_date'. 2. Compare this difference against the [MAX_AGE_HOURS] threshold. 3. Analyze the article's content for any time-sensitive statements (e.g., 'yesterday', 'last week', 'earlier today') that may indicate the information is older than the publication date suggests. 4. Classify each article into one of three categories: 'FRESH', 'STALE', or 'BORDERLINE'. - 'FRESH': Publication date is within the threshold, and content appears current. - 'STALE': Publication date exceeds the threshold, or content contains clearly outdated temporal references. - 'BORDERLINE': Publication date is within the threshold, but content contains ambiguous or potentially outdated temporal references. **Output Schema:** You must return a single JSON object with the following structure: { "query_type": "[QUERY_TYPE]", "target_datetime": "[TARGET_DATETIME]", "max_age_hours": [MAX_AGE_HOURS], "articles": [ { "id": "string", "freshness_status": "FRESH" | "STALE" | "BORDERLINE", "time_difference_hours": number, "rationale": "A concise, evidence-based explanation for the classification, citing specific temporal references from the article's content or the publication date." } ], "overall_freshness_summary": "A brief summary of the retrieval set's freshness, noting the proportion of fresh vs. stale articles and any critical risks for the [QUERY_TYPE] use case." } **Constraints:** - Do not summarize the articles. Only evaluate their temporal freshness. - If an article's 'publication_date' is missing or unparseable, classify it as 'STALE' and state the reason clearly in the rationale. - If the [QUERY_TYPE] is 'breaking-news', apply a stricter interpretation of 'BORDERLINE', leaning towards 'STALE' when in doubt.
To adapt this template, replace the square-bracket placeholders with live data from your system. The [ARTICLES_JSON] input should be a serialized JSON array of article objects from your retrieval step. The [MAX_AGE_HOURS] parameter should be configured per use case; for a breaking-news system, this might be 4 hours, while a daily briefing could use 24 hours. Before deploying, test the prompt with a golden dataset of articles with known publication dates and intentional staleness to ensure the model's classifications and rationales align with your operational definitions of 'FRESH' and 'STALE'.
For high-stakes applications where a stale article could cause reputational harm, do not rely solely on this prompt. Implement a post-processing validation step in your application code that independently calculates the time difference using the article's metadata and flags any output where the model's time_difference_hours field deviates from your own calculation by more than a small tolerance. This acts as a safety net against model arithmetic errors.
Prompt Variables
Inputs the News Summarization Freshness Check Prompt needs to work reliably. Validate these before each call to prevent stale or misdated summaries.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[ARTICLE_LIST] | Array of retrieved news articles with full text and metadata | [{"id": "a1", "title": "...", "body": "...", "published_date": "2025-03-15T10:30:00Z", "source": "Reuters"}] | Must be a non-empty JSON array. Each object requires id, body, and published_date fields. Reject if array is empty or missing required fields. |
[QUERY_TIMESTAMP] | Current time when the freshness check is executed | 2025-03-16T14:00:00Z | Must be ISO 8601 UTC timestamp. Reject if missing, malformed, or in the future. Compare against system clock with 5-minute tolerance. |
[FRESHNESS_WINDOW_HOURS] | Maximum age in hours for an article to be considered fresh | 24 | Must be a positive integer. Default to 24 for daily briefings, 6 for breaking news. Reject if negative, zero, or non-numeric. Validate against use case requirements. |
[DOMAIN] | Subject domain for adjusting freshness expectations | breaking-news | Must be one of: breaking-news, daily-briefing, financial-markets, technology, politics, sports. Reject unrecognized values. Controls decay curve steepness. |
[SOURCE_AUTHORITY_MAP] | Optional mapping of source names to authority scores for weighting | {"Reuters": 0.95, "Twitter": 0.3, "Unknown Blog": 0.1} | If provided, must be valid JSON object with string keys and float values between 0 and 1. Null allowed. Missing sources default to 0.5 authority. |
[OUTPUT_SCHEMA] | Expected JSON structure for freshness assessment output | {"fresh_articles": [], "stale_articles": [], "recency_summary": "", "confidence": 0.0} | Must be a valid JSON Schema or example structure. Validate that schema includes fresh_articles, stale_articles, recency_summary, and confidence fields. Reject if schema is malformed. |
[STALENESS_THRESHOLD] | Confidence score below which an article is flagged as potentially stale | 0.7 | Must be a float between 0.0 and 1.0. Default 0.7. Lower values increase false negatives, higher values increase false positives. Validate range before execution. |
Implementation Harness Notes
How to wire the News Summarization Freshness Check Prompt into a production news aggregation pipeline with validation, retries, and human review gates.
The News Summarization Freshness Check Prompt is designed to operate as a pre-generation gate in a news summarization pipeline. Before any summary is produced, retrieved articles pass through this freshness evaluation step. The prompt expects a batch of articles with their publication dates and a query specifying the temporal requirements (e.g., 'breaking news, last 4 hours' or 'daily briefing, last 24 hours'). The output is a structured freshness assessment that downstream components can act on: fresh articles proceed to summarization, stale articles are flagged for replacement or exclusion, and borderline cases can be routed for human review. This separation of freshness checking from summary generation prevents the summarizer from synthesizing outdated information into what appears to be a current briefing.
Integration pattern: Wire this prompt as a synchronous validation step between retrieval and summarization. The retrieval layer fetches candidate articles with their metadata (publication timestamps, source identifiers). Before passing articles to the summarization prompt, call the freshness check prompt with the full candidate set and the temporal requirements. Parse the structured output—which should include a freshness_status per article, an overall recency_score, and a stale_article_flags list—and use it to filter the article set. Only articles marked fresh or acceptable proceed to summarization. Validation layer: Implement a post-processing validator that checks: (1) every article in the input received a freshness classification, (2) no article with a publication date outside the required window was marked fresh, and (3) the overall recency score is above your configured threshold (e.g., 0.7). If validation fails, log the mismatch and either retry with adjusted temporal parameters or escalate to a human editor. For retry logic, if the model returns an unparseable freshness assessment, retry once with the same input plus an explicit instruction to return valid JSON matching the expected schema. If the second attempt fails, route the entire batch to a human review queue rather than proceeding with unvalidated articles.
Model choice and latency considerations: For breaking-news use cases where latency matters, use a fast model (e.g., GPT-4o-mini, Claude Haiku) for the freshness check and reserve a more capable model for the final summarization of verified-fresh articles. The freshness check is a classification and flagging task that does not require deep reasoning—smaller models perform well here when the schema is clear. Logging and observability: Log every freshness check invocation with: the query's temporal requirements, the number of articles evaluated, the count of articles flagged stale, the overall recency score, and whether the batch passed the freshness gate. This creates an audit trail for debugging stale-content incidents. When a stale article reaches users despite the gate, you can trace whether the freshness check misclassified it, whether the publication date was extracted incorrectly upstream, or whether the temporal requirements were too permissive. Human review integration: For high-stakes briefings (financial summaries, crisis updates), configure the harness to route any batch where more than 20% of articles are flagged stale or where the overall recency score falls below 0.8 to a human editor. The editor receives the flagged articles, the freshness justifications, and can override classifications or trigger re-retrieval before summarization proceeds.
Common Failure Modes
What breaks first when checking news freshness and how to guard against it in production.
Missing Publication Dates
What to watch: Retrieved articles lack parseable publication or last-updated timestamps, causing the freshness check to default to 'unknown' or incorrectly flag current content as stale. Guardrail: Implement a pre-check that requires at least one valid date field before passing an article to the freshness prompt. If extraction fails, route the article to a date-extraction repair prompt or flag it for human review.
Relative Date Misinterpretation
What to watch: The model misinterprets relative timestamps like 'yesterday,' 'last quarter,' or '2 hours ago' without anchoring them to the current date, producing incorrect freshness windows. Guardrail: Always inject the current ISO 8601 timestamp into the prompt context and instruct the model to resolve all relative dates against this anchor before scoring freshness.
Domain-Decay Mismatch
What to watch: The prompt applies a generic freshness window (e.g., 24 hours) to domains with different decay rates—financial data may be stale in minutes, while policy analysis may be valid for months. Guardrail: Parameterize the freshness threshold by domain. Pass a [FRESHNESS_WINDOW_HOURS] variable into the prompt based on the query classification, and validate that the model's output respects this boundary.
Stale-But-Recently-Republished Confusion
What to watch: An old article with a recent republish or syndication date passes the freshness check, but the underlying information is outdated. Guardrail: Instruct the model to distinguish between publication_date and last_updated_date when both are present. If only a single date exists, flag the article with a lower confidence score and note the risk of republished stale content.
Over-Flagging Breaking News
What to watch: During fast-moving events, the model flags articles older than a few hours as stale, even when they contain essential context that newer articles lack. Guardrail: Add a [QUERY_TEMPORAL_SENSITIVITY] parameter. For 'breaking' queries, use a short window but instruct the model to retain high-relevance articles just outside the window as 'context' rather than 'current facts.'
Confidence Inflation on Ambiguous Dates
What to watch: The model assigns high confidence to freshness assessments even when the source date is ambiguous, incomplete, or inferred from surrounding metadata. Guardrail: Require the model to output a date_confidence score alongside the freshness assessment. If date_confidence falls below a threshold (e.g., 0.8), suppress the freshness verdict and escalate for human review or re-extraction.
Evaluation Rubric
Run these checks against a golden dataset of articles with known publication dates and freshness ground truth. Each criterion validates a specific failure mode observed in production news summarization systems.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Stale Article Flagging Accuracy | 95% of articles older than [FRESHNESS_WINDOW_HOURS] are flagged as stale | Stale articles pass through unflagged; current articles incorrectly flagged | Compare flag output against golden dataset with known publication timestamps and window boundary ground truth |
Recency-Grounded Summary Compliance | 100% of generated summaries reference only articles within [FRESHNESS_WINDOW_HOURS] | Summary includes facts from articles outside the freshness window without temporal qualification | Parse summary for source article references; cross-check each referenced article's publication date against the window |
Temporal Qualification Language Presence | Summaries covering events older than [STALE_THRESHOLD_HOURS] include explicit temporal qualifiers such as 'As of [DATE]' or 'Reported on [DATE]' | Older information presented as if current without date anchoring | Regex scan for temporal qualifier patterns; verify qualifier presence when source article age exceeds threshold |
Publication Date Extraction Accuracy | ISO 8601 dates extracted with 98% accuracy across all golden dataset articles | Missing dates, incorrectly parsed formats, or relative timestamps left unresolved | Compare extracted [PUBLICATION_DATE] field against known ground-truth publication dates in golden dataset |
Freshness Assessment Confidence Calibration | Confidence scores below 0.7 correlate with actual extraction or boundary-edge cases in at least 90% of instances | High confidence assigned to clearly wrong freshness assessments; low confidence on straightforward current articles | Bin confidence scores; measure error rate per bin; expect error rate to decrease as confidence increases |
Boundary-Edge Article Handling | Articles published within 15 minutes of [FRESHNESS_WINDOW_HOURS] boundary receive explicit boundary-note in output | Boundary-edge articles silently included or excluded without indication of proximity to cutoff | Identify articles within 15-minute boundary zone in golden dataset; verify boundary-note presence in output |
Multi-Source Temporal Consistency | When multiple articles cover same event with different publication times, summary uses most recent article as primary source | Summary treats older article as primary when newer article on same event exists in retrieval set | Group golden dataset articles by event; verify primary source selection picks newest article per event group |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a single model call and minimal post-processing. Focus on getting the freshness classification and stale-article flags correct before adding schema enforcement. Start with a small, hand-labeled set of 20–30 articles with known publication dates to calibrate the prompt.
Simplify the output schema to a flat JSON object with freshness_assessment, stale_articles, and summary_guidance fields. Skip confidence scoring and temporal-window justification during early iteration.
Watch for
- The model ignoring the [CURRENT_DATE] placeholder and using its training cutoff instead
- Overly broad staleness thresholds that flag everything older than 24 hours as stale
- Missing or hallucinated publication dates when articles lack explicit timestamps
- The summary guidance becoming generic rather than recency-grounded

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us