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_textembeds server-side- ES|QL
FORKruns keyword and semantic search in parallel FUSEmerges themDECAYmakes 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
- elastic-cloud-serverless
- elasticsearch
- esql
- mastra
- node.js
- notion
- openrouter
- typescript
Log in or sign up for Devpost to join the conversation.