NewJobs: scheduled actions created from chat, personal or shared.Learn more
Product

Memory

How Memtro learns, personal versus shared knowledge, and importing from ChatGPT and Claude.

Open Memtro

Memtro's memory is a knowledge graph plus a vector index in Postgres. It is filled from three directions: what people tell it in chat, what the model learns while using tools, and what connector syncs pull in on a schedule.

What gets remembered

After each reply, the latest exchange and the tool results it used go through an extractor that keeps only durable knowledge:

  • Facts about people, teams, customers, projects, systems, deals, tickets and documents.
  • Decisions and their rationale, events that happened, procedures ("how we do X"), and preferences.

Each memory is typed, carries a confidence and an importance, optional validity dates, a subject entity, and provenance: the tool, system, record id and URL it came from. A new fact that corrects an older one marks it superseded instead of leaving two truths.

Extraction only runs when the exchange plausibly contains something durable (names, dates, money, decisions, tool results; always in agent mode), and never twice for the same exchange.

Entities and the graph

Named things (people, companies, tickets, deals, repositories…) become nodes with aliases and external ids. Connector results are anchored deterministically, without a model call: a HubSpot contact becomes a person keyed by its HubSpot id and email, linked to its company; a Help Scout conversation becomes a ticket linked to the customer and the assigned agent; GitHub issues link to repositories and authors. Matching goes external id → exact name or alias → fuzzy name confirmed by embedding, so new spellings become aliases rather than duplicates.

Personal versus shared

Every write has a scope. The request's memory setting (or the Chat page's Memory dropdown) is a ceiling:

  • In a shared request, the extractor classifies each fact. Company, customer, system and colleague knowledge stays shared. Your own preferences, working style, private life and reminders are stored as personal. An entity mentioned only by personal facts stays out of the shared graph.
  • In a personal request nothing is ever promoted to shared.
  • A personal statement never supersedes a shared fact, and vice versa.

The memtro_remember tool takes the same scope choice, so "remember this just for me" does what it says.

Retrieval

Each request gets relevant context injected: vector similarity fused with full-text rank, weighted by recency and importance, plus facts attached to the entities the question mentions and a one-hop neighbourhood of the graph. Agent mode gets a larger context. Retrieved memories gain an access count that feeds future ranking.

Keeping it tidy

  • Connector sync runs hourly: recent HubSpot deals, companies and contacts, Help Scout conversations, GitHub issues and pull requests, Jira and Linear issues, and the next two weeks of Google Calendar, so Memtro knows the company before anyone asks. "Sync now" is on the Connections page.
  • Consolidation runs nightly: clusters of near-duplicate memories are merged into one statement (provenance kept) and duplicate entities become one node with aliases. "Consolidate now" is on the Memory page.
  • The Memory page (Dashboard → Memory) shows what Memtro knows, with scope and source badges, and lets you delete anything.

Importing from ChatGPT and Claude

Neither product exposes its memory through an API, so Dashboard → Import works from what they do offer: paste the memory summary each product shows in its settings, or upload the official data export and Memtro processes the conversations through the same extraction pipeline in resumable batches. See the import guide.