A spatial layer over your AI conversations. Threads become graphs, graphs become decisions, and any node can fork into a new branch — on any model.
Capture
Import a thread from Claude, ChatGPT, Gemini or Mistral.
Distill
Rules engine extracts questions, decisions, ideas, branches.
Map
Nodes are positioned and linked into a living graph.
Replay
Fork any node into a fresh branch, preserving the original.
Persist
Your graph travels with you, model-agnostic and exportable.
when message.contains("should we" | "what if" | "?") → emit Question
when assistant.confirms_choice() → emit Decision
when topic.shifts(distance > 0.4) → emit Branch
when message.tagged("todo" | "follow up") → emit Followup
when novelty(message) > threshold → emit Idea
graph.connect(node, parent = last_relevant_node)
map.status = idle_for(14d) ? "revisit" : map.status
replay(node) → fork(branch_from = node, preserve = true)Overview
All conversations across platforms, color-coded by status.
Thread view
Major nodes, branches, and replay history for one thread.
Node view
Local context, lineage, and the option to continue from here.
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ AI Source │───▶│ Importer │───▶│ Rules Engine │
│ (any LLM) │ │ (parsers) │ │ (heuristics) │
└─────────────┘ └──────────────┘ └──────┬───────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Node Builder │ │ Graph Layout │ │ Status FSM │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
└────────────┬────────┴────────────────────┘
▼
┌──────────────────┐
│ Chat Map Store │ ◀── Replay Engine
└──────────────────┘Data ownership
Maps live outside any single model provider. Export, switch tools, keep your thinking.