Inspiration

We wrote everything down. Every meeting, every decision, every reason, all in Notion.

And we still kept having the same conversations. Settled questions got reopened. Decisions got reversed by people who forgot they had been made. Notes preserve words, not memory.

When we ran our extractor over 20 of our own real meetings, one memory came back titled: "Product direction keeps changing without new evidence." Point taken.

A team shouldn't pay for the same decision twice. So we built Elements-Mentat, named after the Mentats of Dune: humans trained to remember what everyone else cannot.

What it does

It turns raw meeting notes into time-aware episodic memory. 20 Notion exports became 164 self-contained memories (decisions, actions, issues, proposals, and more), each keeping its age. Small talk is discarded.

Ask "what's our current direction?" and the agent weighs recency, never confuses a proposal with a decision, and lets new conclusions beat stale ones.

A separate history mode answers "what did we originally decide, and why did it change?"

How we built it

  • Mastra runs the agent. Recall is a tool the agent chooses to call, and you can watch it decide in Studio traces.
  • Elasticsearch is the memory:
    • semantic_text embeds server-side
    • ES|QL FORK runs keyword and semantic search in parallel
    • FUSE merges them
    • DECAY makes last week's decision outrank last year's plan

Challenges we ran into

Storing was easy. Deciding what counts as memory was hard. A suggestion must not harden into a decision. Five repetitions must collapse into one memory. And sometimes the old rationale is exactly what you're asking for.

Why it matters

A team can document every meeting and still forget who it is.

Elements-Mentat remembers what was decided, what changed, and why, so the next meeting moves forward instead of starting over.

From now on, when we reverse a decision, it will be on purpose.

Built With

Share this project:

Updates

Submission history