← All use cases
The scenario
Everyone on the team notices things about competitors. Someone spots a pricing
page change, someone else reads an earnings call, someone notices they are
hiring six infrastructure engineers.
All of it lands in Slack, scrolls away, and is gone. Three months later nobody
can answer “when did they start moving upmarket?” — even though four people
watched it happen.
Step 1 — Record signals with the date they happened
The timestamp is the point. A signal recorded without one is undated evidence,
and undated evidence cannot answer a question about change.
Step 2 — Ask what changed over a window
Step 3 — See who and what keeps coming up
Entities are extracted as memories are stored, so the graph is already there.
The interesting read is usually the rising one: a name that appeared twice
last quarter and eleven times this one.
Evals
- Record ten dated signals across six months, including two that contradict
each other.
- Ask what changed. A good answer notes the contradiction rather than picking
one silently.
- Re-ask with
occurred_after set to the midpoint. The answer should narrow.
- Check
get_graph surfaces the competitor names you actually recorded, and
not a long tail of noise — if it does, your memories are too chatty and want
tighter extraction settings.
Guardrails
Record public sources only. Competitor intelligence assembled from
confidential or improperly obtained material does not become acceptable by
being in a database. Keep metadata["source"] filled in so anyone can check
where a claim came from.
- Edges are co-occurrence, not typed relationships. The graph tells you two
entities appear together and how often; it does not say one acquired the
other. Do not present it as though it does.
- Contradictions are signal, not error. When a newer fact supersedes an
older one, correct it explicitly with a reason
rather than deleting the old one — the change is the intelligence.
- A source that stops reporting looks the same as nothing happening. Memory
cannot tell you about the press release nobody fed it.
Built from
Both are complete, runnable scripts:
time_travel.py,
knowledge_graph.py.