Skip to main content
← All use cases

The scenario

The numbers are in a spreadsheet. The reasons are in eight earnings transcripts, a dozen board memos and a year of management commentary — and the question you actually have is “what did they say about margin in Q2, and does it still hold?” A search engine over those documents returns the paragraphs. It does not tell you what changed.

Step 1 — Load the documents, dated

Tags carry the period so a later question can be pinned to one, and uploads are asynchronous — poll get_job, or take the webhook route.

Step 2 — Bound the question by when things happened

occurred_after / occurred_before filter on when the thing happened, not when you uploaded it. That distinction is the whole feature: everything was ingested on one afternoon, and none of it happened then.

Step 3 — Ask the comparative question

Step 4 — Keep the receipt

Store the receipt id next to the answer. When somebody challenges the number six months from now, the receipt says exactly what the model saw.

Evals

  1. Load two consecutive quarters where you know a metric moved.
  2. Ask the comparative question. Check both periods are actually represented in the answer, not just the more recent one.
  3. Re-run with the window narrowed to one quarter and confirm the other drops out — if it does not, your documents are not carrying event time.
  4. Pull the receipt and confirm the cited memories come from both filings.

Guardrails

This is not investment advice, and it must not be presented as any. The system retrieves and summarises what was said. It does not know whether the guidance was met, and it will summarise a misleading statement as confidently as an accurate one.
  • Numbers in prose are the weakest part. An extracted memory is text, and a figure that matters should be checked against the filing rather than trusted from a summary. The receipt gives you the path back.
  • relevance_score can exceed 1.0 and is not a confidence. It is a ranking signal within one result set.
  • Undated uploads collapse into one day. If event time matters — and here it is the entire point — set it on write or carry it in the document.

Built from

Both are complete, runnable scripts: time_travel.py, memory_basics.py.