1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Planopticon Integration
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## What is Planopticon
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Planopticon is a video and meeting knowledge extraction tool. It ingests recordings, transcripts, and meeting notes and produces structured knowledge graphs: entities (people, concepts, decisions), relationships, action items, and diagrams extracted from the meeting content.
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Navegador treats Planopticon output as a first-class knowledge source. Where `navegador add concept` requires manual entry, Planopticon extracts concepts, rules, and decisions from meeting recordings automatically and navegador stores them alongside your code graph.
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## How they connect
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Video / transcript
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
↓
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Planopticon
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
↓ produces
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
knowledge_graph.json / interchange.json / manifest.json
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
↓
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
↓ creates
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Concept / Rule / Decision / Person / WikiPage nodes
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
in the same FalkorDB graph as your code
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The result: "the team decided to use Redis for session storage in the March architecture review" becomes a `Decision` node linked to the `Infrastructure` domain and, via `GOVERNS`, to the `SessionManager` class in your code.
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Input formats
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Planopticon produces several output formats. Navegador accepts all of them and auto-detects by default.
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### manifest.json
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Top-level manifest for a multi-file Planopticon output package. Points to the knowledge graph, interchange, and supporting files.
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"version": "1.0",
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"source": "zoom-meeting-2026-03-15",
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"knowledge_graph": "knowledge_graph.json",
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"interchange": "interchange.json",
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"diagrams": ["arch-diagram.png"]
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### knowledge_graph.json
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Planopticon's native graph format. Contains typed entities and relationships:
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"entities": [
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{ "id": "e1", "type": "Decision", "name": "UseRedisForSessions", "description": "...", "rationale": "..." },
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{ "id": "e2", "type": "Person", "name": "Alice Chen", "role": "Lead Engineer" },
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{ "id": "e3", "type": "Concept", "name": "SessionAffinity", "description": "..." }
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
],
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"relationships": [
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{ "from": "e2", "to": "e1", "type": "DECIDED_BY" },
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{ "from": "e1", "to": "e3", "type": "RELATED_TO" }
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
]
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### interchange.json
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
A normalized interchange format, flatter than the native graph. Used when exporting from Planopticon for consumption by downstream tools.
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"concepts": [...],
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"rules": [...],
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"decisions": [...],
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"people": [...],
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"action_items": [...],
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"diagrams": [...]
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Batch manifest
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
A JSON file listing multiple Planopticon output directories or archive paths for bulk ingestion:
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"batch": [
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{ "path": "./meetings/2026-03-15/", "source": "arch-review" },
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{ "path": "./meetings/2026-02-20/", "source": "sprint-planning" }
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
]
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## What maps to what
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Planopticon entity | Navegador node | Notes |
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Concept` | `Concept` | Direct mapping; domain preserved if present |
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Rule` | `Rule` | Severity set to `info` if not specified |
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Decision` | `Decision` | `rationale`, `alternatives`, `date`, `status` preserved |
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Person` | `Person` | `name`, `email`, `role`, `team` preserved |
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Action item | `Rule` + `ASSIGNED_TO` | Creates a `Rule` with severity `info`; creates `ASSIGNED_TO` edge to the `Person` |
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Diagram / image | `WikiPage` | Title from filename; content set to alt-text or caption |
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Relationship: DECIDED_BY` | `DECIDED_BY` edge | Person → Decision |
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Relationship: RELATED_TO` | `RELATED_TO` edge | Between any two knowledge nodes |
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Entity domain field | `BELONGS_TO` edge | Links node to named `Domain` (created if not exists) |
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## CLI examples
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Auto-detect format (recommended)
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest ./meeting-output/ --type auto
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Explicit format
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest ./meeting-output/knowledge_graph.json --type kg
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest ./meeting-output/interchange.json --type interchange
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest ./manifest.json --type manifest
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest ./batch.json --type batch
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Label the source
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use `--source` to tag all nodes from this ingestion with a source label (useful for auditing where knowledge came from):
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest ./meeting-output/ \
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--type auto \
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--source "arch-review-2026-03-15"
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### JSON output
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador planopticon ingest ./meeting-output/ --json
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Returns a summary of nodes and edges created.
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Python API
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from navegador.ingest import PlanopticonIngester
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from navegador.graph import GraphStore
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
store = GraphStore.sqlite(".navegador/navegador.db")
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ingester = PlanopticonIngester(store)
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# auto-detect format
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
result = ingester.ingest("./meeting-output/", input_type="auto", source="arch-review")
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
print(f"Created {result.nodes_created} nodes, {result.edges_created} edges")
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# ingest a specific interchange file
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
result = ingester.ingest_interchange("./interchange.json", source="sprint-planning")
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### PlanopticonIngester methods
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Method | Description |
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ingest(path, input_type, source)` | Auto or explicit ingest from path |
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ingest_manifest(path, source)` | Ingest a manifest.json package |
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ingest_kg(path, source)` | Ingest a knowledge_graph.json file |
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ingest_interchange(path, source)` | Ingest an interchange.json file |
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ingest_batch(path, source)` | Ingest a batch manifest |
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!