
Every company forgets why it built what it built.
The result is kept forever: the code, the contract, the price list, the policy. The reason lives in a thread, a meeting, a ticket, and leaves with the person who knew it. Same problem across every company, every department.
Sales
crm/acme-corp
customer record
- Plan
- Annual, renews Dec 2026
- Discount
- 20% through Q4 2026
- Applied
- 5 Sep 2026, billing (automatic)
- Reason
- not recorded
A rate, a date, a system user. Not one word of reasoning.
sales sync transcript
recording expires dec 2026
“Let’s give Acme a 20% discount through Q4 if they sign the annual plan.”
“Fine. An amendment to the existing agreement, I will not redraft the whole thing.”
The entire reason. Gone when the recording hits its 90-day retention.
Engineering
payments/cache_workaround.ts
git blame
a41f9e3 maya 2023-03-14 if (tz === FIXED_OFFSET) {
a41f9e3 maya 2023-03-14 return cachedWindow(ts); // workaround
9c02b1d tomas 2023-03-14 }
7e55d20 priya 2022-11-02 const window = schedule(ts);
A diff, a name, a date. Not one word of reasoning.
#incident-payments
archived aug 2023
“The proper fix touches three services. We don’t have 48 hours.”
“Ship the cache workaround. We’ll document it after launch.”
The entire rationale. Gone when the channel was archived.
Six months later, someone in finance “corrects” the discount and Acme's renewal blows up. Someone new “cleans up” the workaround and reintroduces the exact incident it was protecting against. The knowledge wasn't lost in the work. It was lost in a recording nobody kept, a channel nobody reads, a ticket nobody linked.
The result outlives the reason.Every time.
Why it holds up
Not just a graph.
A complete ontology.
A graph connects things. An ontology knows what each thing is, who may see it, and why it exists. That difference is what lets an AI answer safely instead of guessing, for a sales call as much as for a line of code. The decision the agent in our demo explains looks like this inside Mithrandir.
- Typed
- It can tell a decision from a contract, and a contract from a line of code. No guessing about what it is looking at.
- Governed
- Who may see a thing lives on the thing itself, so every tool inherits the same rule.
- Explained
- Each object keeps its why: the sentence, the ticket or the review that caused it.
one decision, typed
Decision
20% off for Acme, through Q4
sees: sales, finance
Customer
Acme Corp
sees: account team
Person
Ayşe K., Head of Sales
sees: everyone, name only
Agreement
Acme MSA, amendment 2
sees: legal, sales lead
Code
billing/discount_code.py
sees: engineering
Every object has a type and the reason it exists. A decision is not a document; a contract is not a ticket.
- 118 object types
- 63 kinds of relationship
- one set of rules, the same for every tool
Decisions change. The memory keeps up, and keeps the history.
Terms get amended, reasons get corrected, people revisit a call. Mithrandir answers with what holds today and still knows what held before, so an old answer never comes back dressed as a new one.
- Mar 2024
Agreement
Net-30, in Acme MSA clause 7.2
held Mar 2024 → Aug 2026
status: replaced, still on record
- Aug 2026
Decision
Net-45 for Acme, annual plan prepaid
why: Acme pays every vendor on a 45-day cycle
status: current
- Aug 2026
Agreement
Net-45, in MSA amendment 1
supersedes: Acme MSA 2024, clause 7.2
status: current
- Sep 2026
Code
billing/terms.py
why: corrected by Finance from “a one-off favour” to the prepay condition
status: earlier reason retired
- What holds today comes first
- Asked now, an agent gets the answer that is in force now, with the date it took effect.
- Nothing is rewritten
- Replaced terms and retired reasons stay on record with their dates, so “what did we agree in 2024?” still has an answer.
- People settle what is wrong
- Anyone can flag a reason as wrong. The correction becomes the current answer; the old one is kept, and never served as current again.

Rememberwhy.
Securing the why is the key to the gold buried under the mountain.
Thirty minutes with the founders.