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 period

The period tag is what pins the question to a quarter, and it has to be: everything was uploaded on one afternoon and none of it happened then, but an uploaded file does not carry event time today — the occurred_after / occurred_before filters match nothing extracted from a file. They work on memories you record with a timestamp; for documents, the tag you set on upload is the date. any_strict matters: the plain any mode also matches untagged memories, which would let undated material back into a pinned question.

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 pinned to one quarter’s tag and confirm the other drops out — if it does not, check the tag actually went on at upload.
  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.
  • Uploads carry no event time. Every fact from a file is undated, so the occurred_* filters and point-in-time reads cannot tell one filing’s quarter from another’s. Tag the period on upload, as above, and filter on the tag.

Built from

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