Building an Idea Graph
NeuralRepo is not just a list of ideas — it is a graph. By connecting ideas with typed relations, you build a navigable network that reveals how your thinking fits together.
Relation Types
Section titled “Relation Types”You can create five relation types. Every one is directional in storage; only related is
symmetric in meaning.
| Relation | Direction | When to Use |
|---|---|---|
related | Symmetric | Two ideas share a theme or domain but neither depends on the other. |
parent | Source is a child of target | Break a large idea into sub-ideas. Link each child to the umbrella idea. |
blocks | Source blocks target | Target cannot proceed until source is resolved. Use for dependencies. |
inspires | Source inspired the target | One idea led to another. Use for variants, evolutions, or spin-offs. |
supersedes | Source replaces target | The source idea is a newer, better version. The target can be shelved. |
A sixth value, duplicate, exists in the database’s type constraint and is rejected everywhere you
could type it (Invalid type "duplicate"). Nothing creates it either: when duplicate detection
fires it writes a row to duplicate_detections and, separately, a system-created related
relation. Treat duplicate as a dead value rather than a relation you might encounter.
Creating Relations
Section titled “Creating Relations”From the CLI
Section titled “From the CLI”# Link two ideas as relatednrepo link 134 138 --type related --note "Both involve browser APIs"
# Make 155 a child of 134 — the source is the childnrepo link 155 134 --type parent
# Mark a dependency: 160 blocks 134nrepo link 160 134 --type blocks --note "Need auth system before building extension"Every argument is the database id, not the #number a listing prints. See
Idea identifiers.
From Claude via MCP
Section titled “From Claude via MCP”You: Link the browser extension idea to the code snippets one as related. Also make the content-script idea a child of the extension.
Claude: (calls
link_ideastwice) Done — linked them as related, and set the content-script idea as a child of the extension idea.
link_ideas also takes a links array for up to 50 relations in one call, returning a per-link
result so one bad pair does not abort the batch.
From the API
Section titled “From the API”curl -X POST https://neuralrepo.com/api/v1/map/relations \ -H "X-API-Key: nrp_your_key_here" \ -H "Content-Type: application/json" \ -d '{ "source_idea_id": 134, "target_idea_id": 138, "relation_type": "related", "note": "Both involve browser APIs" }'What the System Creates for You
Section titled “What the System Creates for You”Two kinds of relation appear without you asking:
related, whenever a newly embedded idea scores above your related threshold (default 0.5) against an existing one.parent, when you branch an idea or save one with aparent_id— created by the background queue a few seconds after the idea itself.
Both are stored with created_by: 'system', and the uniqueness constraint covers
(source, target, created_by) — so a manual relation and a system one can coexist between the same
pair, and a second manual link between them fails with Relation already exists.
Viewing the Graph
Section titled “Viewing the Graph”Terminal: nrepo graph
Section titled “Terminal: nrepo graph”The nrepo graph command renders an idea’s neighborhood as an ASCII tree, following relations in
both directions and labelling each branch with the relation type that produced it:
nrepo graph 134 --depth 2#42 Browser extension for idea capture [building]├── parent → #55 Content script for text selection [exploring]├── parent → #56 Popup UI for saving highlighted text [captured]├── related → #38 Chrome plugin for code snippets [exploring]└── blocks → #60 Authentication system [building] └── parent → #61 OAuth flow implementation [building]The default depth is 1. Raise it with --depth, up to 5 — but the text tree only ever draws
three levels, so hops beyond the second exist solely in --json. Narrow a wide graph with
--type blocks or --type parent,supersedes.
Web App: Mind Map
Section titled “Web App: Mind Map”The web dashboard includes an interactive mind map visualization at Organize > Mind Map. It renders your entire idea graph as a force-directed layout where you can:
- Click any node to view the idea
- Drag nodes to rearrange the layout (Pro)
- Filter by tag, status, or relation type
- Zoom and pan to explore large graphs
Free-tier users get view-only access — everything above except editing interactions like dragging and link creation.
Building Connected Networks
Section titled “Building Connected Networks”Pattern 1: Project Breakdown
Section titled “Pattern 1: Project Breakdown”Start with a high-level idea and decompose it into children:
#42 Browser extension├── #55 Content script├── #56 Popup UI├── #57 Service worker└── #58 Options pageEach child can be worked on independently and tracked with its own status.
Pattern 2: Inspiration Chain
Section titled “Pattern 2: Inspiration Chain”Track how ideas evolve over time:
#10 "Simple bookmarking tool" └── [inspires] #25 "Smart bookmarks with AI tags" └── [inspires] #42 "Browser extension for idea capture"Pattern 3: Dependency Graph
Section titled “Pattern 3: Dependency Graph”Map out what blocks what:
#60 Auth system ──[blocks]──► #42 Browser extension#62 API rate limiter ──[blocks]──► #42 Browser extensionThis tells you that #42 cannot ship until #60 and #62 are complete.
Pattern 4: Supersession
Section titled “Pattern 4: Supersession”When an idea evolves so much that it replaces an older one:
nrepo link 134 110 --type supersedes --note "Extension approach replaces the simple bookmarking idea"nrepo move 110 shelvedsupersedes is the one type whose cycles are only soft-blocked: nrepo link --force will push
a supersedes cycle through. blocks and parent cycles are refused outright, and no flag bypasses
them — a refused cycle comes back as a 400, not a 409.
Practical Example: Building an Ecosystem
Section titled “Practical Example: Building an Ecosystem”Imagine you are building a suite of developer tools. Here is how the graph might look:
#1 Developer Tools Suite (exploring)├── [parent] #10 CLI Framework (building)│ ├── [parent] #11 Plugin system│ └── [parent] #12 Config file parser├── [parent] #20 VS Code Extension (captured)│ └── [related] #10 CLI Framework├── [parent] #30 GitHub Bot (exploring)│ ├── [blocks] #10 CLI Framework│ └── [related] #35 Webhook handler library└── [inspires] #40 SaaS Dashboard (captured)This graph tells you:
- The CLI Framework (#10) is the foundation — it blocks the GitHub Bot and relates to the VS Code Extension.
- The SaaS Dashboard was inspired by the suite idea but is a separate effort.
- You should focus on #10 first since other ideas depend on it.
The tree shows the shape you end up with, not the order of arguments that built it: each parent
edge above was created from the child, as nrepo link <child-id> <parent-id> --type parent.
Removing Relations
Section titled “Removing Relations”# List all relations for an ideanrepo links 134
# Remove a relation by specifying both idea IDsnrepo unlink <source-id> <target-id>nrepo unlink finds the relation between the pair in either direction, so the argument order
does not have to match how you created it. Via MCP, ask Claude to unlink the two ideas — the
unlink_ideas tool takes a relation_id, which get_idea with include_context: true returns.