live
abominationvaults
A searchable campaign-memory engine for a long-running tabletop game.
A campaign-memory engine for a long-running Pathfinder campaign: it ingests session logs and exposes them as a force-directed relationship graph, a "catch-up" recap generator, a filterable timeline, a stats dashboard, an open-loop thread board, and full-text search.
Deployments: DungeonNotes
A personal, non-commercial fan tool for a published Pathfinder adventure (an independent Paizo product). The public showcase features only the tool's own interface and data; the adventure's copyrighted art and maps are kept off it. The in-app campaign Q&A stays password-gated.
Read case study brief · what i owned · key decisions · what was delivered · evidence · result · implementation
The problem
After dozens of sessions, returning players need more than chronological notes: they need to recover relationships, unresolved threads, recent context, and the source behind an answer without exposing the private capture corpus.
What I owned
- Product design and tooling for the public campaign-memory interface, with DungeonNotes retained as its private capture artifact.
Key decisions
- Model people, places, factions, sessions, and open threads as connected memory instead of a single recap document.
- Keep citations and searchable session context close to generated recaps so the tool can show where an answer came from.
- Separate the public interface and redacted data from private transcripts, table audio, player-only context, and licensed adventure art.
What was delivered
- Force-directed relationship graph of ~170 PCs, NPCs, factions, and locations.
- Personalised "catch-up" recaps, a per-session timeline, and an open-loop board for unresolved threads.
- A "campaign wrapped" stats dashboard with cited, searchable session memory.
Evidence
- The live public surface exposes the relationship graph, catch-up workflow, timeline, wrapped statistics, open-loop board, and search without requiring access to private capture material.
- Four approved interface captures document the graph, timeline, wrapped, and unresolved-thread workflows.
Result
- Turns a 60-plus-session campaign into a browsable memory surface while keeping the underlying capture and sensitive table context private.
Implementation
- Python
- Campaign Memory
- Search
- Data Viz
- Python
- Campaign Memory
- Search
- Data Viz