Campaign overview

A long-running 5e 2024 campaign DMed by Nick in the homebrew world of Eldurae. Strict-RAW table, optimiser roster, deadly encounters. Sessions are roughly fortnightly. This dashboard aggregates every spoken line and every combat event surfaced from the 15 recorded session transcripts.

Words spoken per session

Combat events per session

Talkativeness over time (% of words spoken)

Cumulative damage dealt per PC

Deaths

Most-referenced callbacks & quotes

Players

Aggregate across the whole campaign. Combat numbers come from the LLM-extracted per-session event log (~700 events) and are necessarily a floor — many attacks resolve narratively without an explicit damage number in the transcript. Dialogue numbers are deterministic and complete.

Damage dealt vs taken (whole campaign)

Downs per character per session

Spell casts and consumables per player

Sessions

Click a session for the encounter list and any flagged extraction caveats. Session 1 was never recorded.

Bestiary

Every named enemy that appears in any encounter, with first/last appearance and how often the party put them down. Some entries are recurring NPCs (Maelis Dern, The Titan) who appear in combat — the wiki page itself lives in the People section.

Enemy Encounters First seen Last seen Damage taken from party Times killed by PC

Wiki graph — 3D force-directed

188 entities, 2 411 directed wikilinks. Nodes sized by either backlink count (how often the rest of the wiki references them) or content length. Coloured by section. Click and drag to orbit, scroll to zoom, hover any node for details. Use the search to highlight one node and its neighbours.

How to read:
Force-directed: edges pull connected nodes together, all nodes mutually repel. Layout converges over a few seconds. Drag = orbit, scroll = zoom.

About this dashboard

Prototype built from the existing Nickipedia data layer. Two data streams: dialogue stats (deterministic, walked over the 15 normalised transcripts using a Python script) and combat events (LLM-extracted per session, with citations to transcript line numbers; same trust shape as the wiki citation pipeline).

Data sources

FileWhat it isHow it was built
_dashboard/data/dialogue_stats.jsonLines / words / talkativeness per speaker per session, plus callback & entity-mention counts.extract_dialogue_stats.py — deterministic regex over 01_transcripts/normalised/.
_dashboard/data/combat_stats.jsonEncounters, damage, downs, deaths, kills, consumables, criticals, fumbles, spell casts. Per-session and aggregated.15 parallel LLM agents, one per session pair, each reading the transcript and emitting combat_session_N.json; merged by aggregate_combat.py.
_dashboard/data/wiki_graph.jsonNode/edge list for the 3D graph. 188 entities, 2 411 directed wikilinks, backlink & outlink counts.build_wiki_graph.py — re-derived from rendered _wiki/content/ by scanning emitted <a href> anchors.

Known limitations

Refreshing the dashboard

# from the D&D folder
python3 _dashboard/scripts/extract_dialogue_stats.py
python3 _dashboard/scripts/build_wiki_graph.py
# combat takes longer — re-spawn the per-session agents
python3 _dashboard/scripts/aggregate_combat.py
python3 _dashboard/scripts/build_dashboard.py
# open _dashboard/index.html in a browser

Where this goes next

This is a prototype destined for integration into the Nickipedia site. The companion _dashboard/INTEGRATION_SPEC.md file is the handoff doc for Claude Code — it covers Hugo section layout, build-pipeline changes (new step in the 8-step per-session pipeline), JSON schema contracts, and performance considerations for the 188-node graph.