This prompt is a guardrail for output validation pipelines. Its job is to inspect a generated text and its cited sources to detect fabricated dates, unsupported claims of recency, and misrepresentations of when a source was published or what time period it covers. The ideal user is an AI safety engineer or validation pipeline builder who needs structured hallucination flags, not free-text critiques. You should use this prompt after answer generation and before the response reaches the user. It assumes you already have a model output and the evidence passages that were used to generate it. It does not retrieve evidence or rewrite answers. It only detects temporal grounding failures.
Prompt
Temporal Hallucination Detection Prompt

When to Use This Prompt
A guardrail for detecting when a model fabricates dates, claims unsupported recency, or misrepresents the temporal scope of cited sources.
To use this prompt effectively, you must provide the full model-generated answer and the exact evidence passages that were cited or used during generation. The prompt will return a structured JSON object containing a list of detected temporal hallucinations, each with a specific claim identifier, the type of temporal failure (e.g., fabricated date, unsupported recency claim, temporal scope misrepresentation), the offending text span, and a severity score. Wire this into your validation pipeline as a post-generation check. If any hallucination flag has a severity score above your threshold, block the response from reaching the user and route it for human review or regeneration with corrected temporal constraints. For high-stakes domains like financial reporting or medical summarization, always require human review when temporal hallucinations are detected, even at low severity.
Do not use this prompt as a substitute for proper retrieval date filtering or evidence freshness scoring earlier in your pipeline. It is a detection tool, not a prevention tool. If your retrieval system is serving outdated documents, this prompt will flag the resulting hallucinations, but it will not fix the root cause. Use it alongside temporal relevance scoring and stale evidence detection prompts to build a complete temporal grounding system. The next section provides the copy-ready prompt template you can adapt for your own validation harness.
Use Case Fit
Where the Temporal Hallucination Detection Prompt works and where it introduces risk. Use this prompt as a post-generation validation step, not as a substitute for retrieval hygiene or source timestamping.
Good Fit: Post-Generation Validation Pipelines
Use when: you need a second-pass check on model outputs that contain dates, recency claims, or time-sensitive statements. The prompt excels at flagging fabricated dates and unsupported 'latest' claims before they reach users. Guardrail: Always run this after answer generation, not during. Pair with a structured output schema so flags are machine-readable.
Bad Fit: Real-Time Fact Verification
Avoid when: you need millisecond-latency verification of breaking news or live data. This prompt requires full context and reasoning time. Guardrail: For real-time use cases, pre-compute temporal metadata at ingestion time and use rule-based freshness checks. Reserve this prompt for async validation or batch auditing.
Required Inputs: Timestamped Source Evidence
Risk: Without publication dates or access timestamps on source passages, the prompt cannot verify temporal claims. It may hallucinate its own assumptions about recency. Guardrail: Require source_timestamp and retrieval_timestamp fields in every evidence passage. Fail closed if timestamps are missing—do not let the prompt guess.
Operational Risk: False Positives on Stale Benchmarks
Risk: The prompt may flag legitimate historical analysis as 'stale' because it misinterprets the query's temporal intent. A query about 'Q2 2023 earnings' should not flag Q2 2023 sources as outdated. Guardrail: Include query temporal classification before running detection. Pass the classification label as input so the prompt knows whether the query expects historical or current evidence.
Operational Risk: Over-Confidence in Flagged Claims
Risk: The prompt may produce hallucination flags with high confidence even when temporal ambiguity is genuine—such as when sources disagree on event dates. Guardrail: Require the prompt to output a confidence score and an ambiguity_flag for each detected issue. Route low-confidence or ambiguous flags to human review instead of auto-rejecting outputs.
Not a Replacement: Source Freshness at Retrieval Time
Risk: Teams may treat this detection prompt as a fix for poor retrieval hygiene, using it to catch stale evidence after the fact. This creates a whack-a-mole pattern where the same stale sources keep triggering flags. Guardrail: Use this prompt as a safety net, not a primary control. Implement recency filtering and staleness detection at retrieval time. Reserve this prompt for catching edge cases that slip through.
Copy-Ready Prompt Template
A reusable prompt template for detecting fabricated dates, unsupported recency claims, and temporal misrepresentations in model outputs.
This template is designed to be dropped into a hallucination detection pipeline immediately after answer generation. It forces the model to act as a strict temporal auditor, comparing every date, recency claim, and time-bound assertion in a candidate output against the provided source evidence. The prompt is structured to produce machine-readable flags rather than prose, making it suitable for automated guardrails, eval harnesses, and human-review queues. Adapt the placeholders to match your application's evidence schema, temporal sensitivity requirements, and output format.
textYou are a temporal hallucination auditor. Your job is to examine a candidate model output and flag every statement that fabricates a date, claims recency without evidence support, or misrepresents the temporal scope of cited sources. ## INPUT Candidate Output: [OUTPUT_TEXT] Source Evidence (with publication dates and content): [EVIDENCE_LIST] Query Temporal Sensitivity: [TEMPORAL_SENSITIVITY] ## INSTRUCTIONS 1. Extract every date, time range, recency claim (e.g., "recently," "last week," "current"), and temporal comparison (e.g., "before," "after," "since") from the candidate output. 2. For each temporal claim, check whether it is supported by the source evidence. A claim is supported only if: - The exact date or range appears in a source published at or before that date. - A recency claim is backed by a source whose publication date falls within the recency window implied by the claim. - A temporal comparison is consistent with the dates in the cited sources. 3. Flag any temporal claim that lacks evidence support. For each flag, provide: - The exact text of the claim. - The type of hallucination: FABRICATED_DATE, UNSUPPORTED_RECENCY, TEMPORAL_MISALIGNMENT, or STALE_EVIDENCE. - A brief explanation of why the claim fails. - The closest evidence passage, if any exists. 4. If the candidate output uses a source to support a claim about a time period that the source does not cover, flag it as TEMPORAL_MISALIGNMENT. 5. If the candidate output cites a source whose publication date makes it too old for the claim, flag it as STALE_EVIDENCE. 6. If no temporal claims are found, return an empty flags list. 7. If no source evidence is provided, flag ALL temporal claims as UNSUPPORTED_RECENCY. ## OUTPUT SCHEMA Return a JSON object with this exact structure: { "temporal_claims_found": <integer>, "flags": [ { "claim_text": "<exact text from output>", "flag_type": "FABRICATED_DATE | UNSUPPORTED_RECENCY | TEMPORAL_MISALIGNMENT | STALE_EVIDENCE", "explanation": "<why this claim is unsupported>", "closest_evidence": "<relevant passage or null>" } ], "overall_temporal_faithfulness": "FAITHFUL | PARTIALLY_FAITHFUL | UNFAITHFUL | INSUFFICIENT_EVIDENCE" } ## CONSTRAINTS - Do not flag claims that are explicitly hedged with uncertainty language (e.g., "may have occurred," "reportedly") unless the hedge itself is fabricated. - Do not flag relative dates that are mathematically derivable from provided evidence dates. - If the query temporal sensitivity is "historical" or "time-agnostic," apply looser recency standards. - If the query temporal sensitivity is "real-time" or "recent," apply strict recency standards. - Return ONLY the JSON object. No markdown fences, no commentary.
Adapting the template: Replace [OUTPUT_TEXT] with the candidate model response you are auditing. [EVIDENCE_LIST] should contain each retrieved passage with its publication date and full text, formatted consistently so the auditor can match claims to sources. [TEMPORAL_SENSITIVITY] should be one of real-time, recent, historical, or time-agnostic, ideally set by an upstream classification prompt. If your application uses structured evidence objects, adjust the evidence format instructions inside the prompt to match your schema. For high-risk domains such as financial reporting or clinical documentation, add a [RISK_LEVEL] placeholder and tighten the flagging thresholds for high risk.
What to do next: Wire this prompt into a post-generation validation step. If overall_temporal_faithfulness is UNFAITHFUL or PARTIALLY_FAITHFUL, route the output to a human review queue or trigger a regeneration with stricter temporal constraints. Log every flag for eval analysis—patterns in FABRICATED_DATE flags often indicate a need to improve retrieval freshness or adjust the answer-generation prompt. Avoid using this prompt as the sole defense in regulated workflows; pair it with citation verification and source date extraction prompts for a complete temporal grounding pipeline.
Prompt Variables
Required inputs for the Temporal Hallucination Detection Prompt. Each variable must be populated before the prompt is assembled and sent to the model. Validation notes describe how to programmatically verify the input before execution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[MODEL_OUTPUT] | The full text output from a prior model response that needs to be scanned for temporal hallucinations. | The company reported record revenue in Q3 2024, continuing a trend that began last month. | Type check: non-empty string. Must be the raw, unmodified output from the upstream model. Null or empty strings should abort the pipeline before this prompt runs. |
[CITED_SOURCES] | A list of source documents or passages that were provided to the model as grounding context, each with a publication or last-updated date. | [{"source_id": "doc-12", "text": "...", "pub_date": "2024-09-15"}, {"source_id": "doc-45", "text": "...", "pub_date": "2023-06-01"}] | Schema check: must be a JSON array of objects with source_id (string), text (string), and pub_date (ISO 8601 string or null). If pub_date is null, the source cannot be used for temporal verification and should be flagged upstream. |
[QUERY_TIMESTAMP] | The timestamp when the user query was made or when the model response was generated. Used as the reference point for recency claims. | 2024-11-18T14:30:00Z | Format check: must be a valid ISO 8601 datetime string. If missing, the prompt cannot evaluate relative recency claims like 'last month' or 'recently'. Pipeline should inject the current UTC timestamp if not provided. |
[TEMPORAL_CLAIM_TYPES] | A configurable list of temporal claim categories the detector should scan for, with definitions and severity weights. | ["explicit_date_fabrication", "relative_recency_misrepresentation", "stale_source_misuse", "temporal_scope_overreach"] | Schema check: must be a non-empty array of strings matching known claim type identifiers. Unknown types should be rejected before prompt assembly. Each type must have a corresponding definition in the system prompt. |
[DOMAIN_FRESHNESS_RULES] | Domain-specific rules defining how quickly information becomes stale, expressed as maximum age thresholds. | {"financial_earnings": "90 days", "breaking_news": "24 hours", "scientific_research": "1825 days", "regulatory_filings": "365 days"} | Schema check: must be a JSON object mapping domain labels to duration strings. Durations must be parseable (e.g., '90 days', '24 hours'). If a query's domain is not covered, the prompt should fall back to a default threshold defined in the system instructions. |
[OUTPUT_SCHEMA] | The exact JSON schema the model must use to return hallucination flags, including field types, required fields, and enum constraints. | {"type": "object", "properties": {"flags": {"type": "array", "items": {"type": "object", "properties": {"claim_text": {"type": "string"}, "claim_type": {"type": "string", "enum": ["explicit_date_fabrication", "relative_recency_misrepresentation", "stale_source_misuse", "temporal_scope_overreach"]}, "severity": {"type": "string", "enum": ["critical", "high", "medium", "low"]}, "evidence_gap": {"type": "string"}, "suggested_correction": {"type": "string"}}, "required": ["claim_text", "claim_type", "severity", "evidence_gap"]}}}, "required": ["flags"]} | Schema check: must be a valid JSON Schema object. The pipeline should validate the model's output against this schema after generation. Enum values must match the claim types and severity levels defined in the system prompt. Missing required fields trigger a retry. |
[FEW_SHOT_EXAMPLES] | A curated set of input-output pairs demonstrating correct temporal hallucination detection across claim types. | [{"input": "Output: 'The CEO announced the merger yesterday.' Sources: [pub_date: 2024-10-01] Query time: 2024-11-18", "output": {"flags": [{"claim_text": "announced the merger yesterday", "claim_type": "relative_recency_misrepresentation", "severity": "high", "evidence_gap": "Source is 48 days old; 'yesterday' claim cannot be supported.", "suggested_correction": "Replace 'yesterday' with 'in October 2024' or cite a source from 2024-11-17."}]}}] | Count check: must contain at least 3 examples covering different claim types. Each example must have a valid input string and a valid output matching [OUTPUT_SCHEMA]. Examples with malformed outputs should be caught by a pre-flight validation script before being injected into the prompt. |
Implementation Harness Notes
How to wire the Temporal Hallucination Detection Prompt into an application or validation pipeline.
This prompt is designed as a post-generation guardrail, not a real-time conversational filter. It should be wired into your output validation pipeline so that every model response is checked for fabricated dates, unsupported recency claims, and temporal misrepresentations before it reaches the user. The prompt expects a model-generated text and the evidence context that was used to produce it. If your system uses RAG, pass the retrieved passages as [EVIDENCE_CONTEXT]. If your system generates answers without retrieval, you must still provide the source material the model was conditioned on, or explicitly mark the context as empty and rely on the model's internal knowledge boundary detection.
Integration pattern: Place this prompt as a validation step after answer generation and before user delivery. In a typical pipeline: (1) user query → (2) retrieval → (3) answer generation → (4) temporal hallucination detection → (5) if flags are raised, either regenerate with corrected temporal constraints, append a temporal uncertainty disclaimer, or escalate for human review depending on your [RISK_LEVEL] configuration. For high-stakes domains like financial reporting or medical summarization, always require human review when temporal hallucination flags fire. Log every detection result with the original output, evidence context, flag type, and specific temporal claims identified for audit trails and prompt improvement cycles.
Validation and retries: Parse the JSON output from this prompt and check the hallucination_flags array. If flags.length > 0, decide your remediation path based on flag severity. For severity: critical (fabricated dates, claims of recency with no evidence), block the response and regenerate with explicit temporal grounding instructions. For severity: warning (vague temporal language, minor date mismatches), you may append a disclaimer or request user clarification. Implement a maximum of 2 retries before escalating to human review to avoid infinite regeneration loops. Model choice: This prompt benefits from models with strong instruction-following and structured output capabilities. GPT-4o, Claude 3.5 Sonnet, and Gemini 1.5 Pro are suitable. Avoid smaller models (<7B parameters) for this task unless fine-tuned on temporal verification data, as they struggle with the nuanced distinction between implied and explicit temporal claims.
Testing before deployment: Before wiring this into production, run the provided test harness against known temporal hallucination patterns: fabricated dates ('as of June 2025' when evidence is from 2023), unsupported recency claims ('recently announced' with no source date), temporal scope misrepresentation (citing a Q1 report for Q4 figures), and missing temporal qualifiers where the evidence is old but the output implies currency. Measure precision (did we flag real hallucinations?) and recall (did we miss any?). A healthy system should achieve >90% recall on critical fabrications, even if precision is lower initially. Tune the prompt's [CONSTRAINTS] section to adjust sensitivity based on your domain's tolerance for false positives versus missed hallucinations.
Expected Output Contract
Defines the structure, types, and validation rules for the temporal hallucination detection output. Use this contract to parse, validate, and route the model's response before it reaches downstream consumers or human reviewers.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
temporal_claims | Array of objects | Must be a non-null array. If no temporal claims are detected, return an empty array. Each element must conform to the claim object schema below. | |
temporal_claims[].claim_text | String | The exact verbatim text from the model output that contains a temporal assertion. Must be a non-empty string that can be located in the original output via substring match. | |
temporal_claims[].claim_type | Enum: [explicit_date, relative_date, recency_claim, temporal_comparison, implied_timeframe] | Must be one of the five enum values. recency_claim applies to phrases like 'recently', 'latest', 'current'. temporal_comparison applies to 'before X', 'after Y', 'since Z'. | |
temporal_claims[].extracted_date | ISO 8601 string or null | If a specific date, month, or year is extractable, normalize to ISO 8601 (YYYY-MM-DD, YYYY-MM, or YYYY). Set to null for relative claims without anchor dates. Must pass ISO 8601 parsing if non-null. | |
temporal_claims[].source_evidence | Array of strings | List of source IDs or citation keys from the provided context that should support this temporal claim. Must be a non-null array. Use an empty array if no source is cited. Each string must match a source_id in the input context. | |
temporal_claims[].hallucination_flag | Boolean | Set to true if the temporal claim is unsupported by cited sources, contradicts source dates, or fabricates a date not present in evidence. Set to false if the claim is grounded. Must be a strict boolean, not a string. | |
temporal_claims[].hallucination_reason | String | Concise explanation of why the claim is flagged or cleared. Must reference specific source evidence or lack thereof. If hallucination_flag is false, explain which source supports the date. If true, state what is missing or contradictory. | |
overall_hallucination_score | Number (0.0 to 1.0) | Proportion of temporal claims flagged as hallucinations. Calculated as flagged_claims / total_claims. Must be 0.0 if no temporal claims exist. Must be a float between 0.0 and 1.0 inclusive. |
Common Failure Modes
Temporal hallucination detection prompts fail in predictable ways. These cards cover the most common failure modes, why they happen, and how to guard against them before outputs reach users.
Model Confabulates Dates for Unsupported Claims
What to watch: The model assigns specific dates or recency claims (e.g., 'last week,' 'Q3 2024') to statements that have no temporal evidence in the provided context. This is the most common temporal hallucination pattern. Guardrail: Require the prompt to output a temporal_evidence_span field that quotes the exact source text justifying each date claim. If no span exists, the output must flag the claim as unsupported_temporal and set confidence to zero.
Recency Bias Overrides Evidence Staleness
What to watch: The model treats all retrieved passages as current, even when source publication dates are old or missing. This produces answers that sound fresh but rely on stale data. Guardrail: Include a pre-processing step that extracts and normalizes publication dates before the detection prompt runs. The prompt must receive explicit source_date and query_temporal_requirement fields, and must compare them before accepting any claim as current.
Temporal Scope Creep Across Sources
What to watch: The model merges evidence from different time periods without acknowledging the temporal gap. For example, combining Q1 financials with Q3 projections and presenting them as a single coherent picture. Guardrail: Structure the output schema to require per-source temporal attribution. Each claim must list its source ID and source date. Add a validation rule that flags outputs where claims from sources more than N days apart are presented without temporal qualification.
Relative Time Expressions Are Not Grounded
What to watch: The model uses phrases like 'recently,' 'currently,' or 'this year' without anchoring them to a specific date or source timestamp. These expressions become misleading as time passes. Guardrail: Add a constraint that bans relative time expressions unless accompanied by an absolute date in parentheses. The prompt must include a post-processing regex check that flags any unanchored relative temporal language and routes the output for repair.
Missing Dates Treated as Current
What to watch: When source documents lack explicit publication dates, the model defaults to assuming the information is current rather than flagging the ambiguity. Guardrail: Require the prompt to classify every source's temporal status as explicit_date, inferred_date, or unknown_date. Sources with unknown_date must be treated as temporally unreliable, and any claims derived from them must carry a temporal_confidence: low flag with an explanation.
Temporal Contradictions Silently Resolved
What to watch: When two sources report different values for the same time period (e.g., conflicting revenue figures for Q2), the model picks one or averages them without surfacing the conflict. Guardrail: Add a dedicated temporal contradiction detection pass. The prompt must compare claims that reference the same time period across sources and output a temporal_conflicts array when values diverge. Conflicts must be surfaced to the user, not silently resolved.
Evaluation Rubric
Criteria for testing the Temporal Hallucination Detection Prompt before production deployment. Each criterion targets a known failure mode in temporal claim generation.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Fabricated Date Detection | Prompt flags all dates not present in the provided [SOURCE_EVIDENCE] with a | Output contains a specific date (e.g., '2024-01-15') that is absent from the [SOURCE_EVIDENCE] but lacks a | Run prompt against a golden set of 50 outputs with known fabricated dates; assert recall >= 0.98 |
Unsupported Recency Claim Flagging | Prompt identifies claims of recency (e.g., 'recently', 'latest', 'current') and sets | Output describes a finding as 'recent' but the | Inject 20 outputs with unsupported recency claims; assert precision >= 0.95 and recall >= 0.95 |
Temporal Scope Misrepresentation | Prompt correctly sets | Output states a trend covers 'Q1-Q4 2023' but the cited source only provides data for Q1-Q2 2023, and | Use a set of 15 source/output pairs with deliberate scope mismatches; assert F1 score >= 0.90 |
Source Date Extraction Accuracy | The | The | Validate against 100 documents with known metadata dates; assert exact match rate >= 0.99 |
Null Evidence Handling | When [SOURCE_EVIDENCE] is an empty string or null, the prompt returns | Prompt returns a normal analysis with | Pass an empty [SOURCE_EVIDENCE] in 10 test runs; assert correct flag and reason in 10/10 cases |
Relative Date Ambiguity Flagging | Prompt sets | Output contains 'last quarter' without an anchor date, but | Test against 30 outputs with known relative date ambiguities; assert recall >= 0.90 |
Output Schema Compliance | The JSON output strictly conforms to the [OUTPUT_SCHEMA] with all required fields present and no extra fields | Output is missing the | Validate 100 prompt responses against the JSON Schema definition; assert structural validity rate of 1.0 |
Confidence Score Calibration | The | A false positive hallucination flag is returned with | Run against a balanced dataset of 100 known hallucinations and 100 clean outputs; assert Brier score < 0.15 |
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 manual review of flagged claims. Remove strict output schema requirements and accept natural-language hallucination reports. Focus on detecting obvious date fabrications and unsupported recency claims.
Prompt modification
- Replace [OUTPUT_SCHEMA] with:
Return a JSON object with "flags" array and "summary" string. - Set [CONFIDENCE_THRESHOLD] to
0.5to catch more candidates. - Remove [REQUIRED_EVIDENCE_SPANS] and accept claim-level citations.
Watch for
- Over-flagging: the model may mark any date without an inline citation as hallucinated, even when the date is common knowledge.
- Inconsistent flag structure across runs without schema enforcement.
- No retry logic, so malformed JSON breaks downstream consumers.

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