Mostly Mortals
A D&D campaign knowledgebase that turns session audio into illustrated, narrated web content through a multi-service AI pipeline.
The problem with D&D campaigns
Every tabletop group has the same problem. You play an incredible session, someone does something legendary, and two weeks later nobody remembers the NPC’s name. Session notes are either nonexistent or written by the one player who always volunteers and eventually burns out.
I wanted to fix that for my own group. Mostly Mortals is a campaign companion that automates the parts of D&D that feel like homework: session recaps, NPC tracking, scene illustrations, and narrated “Previously on…” recaps. The players show up, play, and the rest happens through a pipeline I built with Claude Code.
The session pipeline
After each session, a multi-step pipeline transforms raw audio into polished campaign content:
- Record with a Zoom H2essential (32-bit float WAV, 360-degree mic)
- Prepare multi-segment recordings with
prepare-audio.sh - Transcribe via OpenAI Whisper cloud API (~2 min, ~$0.90 per session) with an auto-generated vocabulary prompt built from the knowledgebase
- Extract structured content using
/process-session, which produces player summaries, DM notes, best moments, quest updates, and image prompts - Illustrate with
generate-images.jssupporting GPT Image 1.5, Nano Banana 2, and Pro models (with a--compareflag to evaluate side-by-side) - Narrate with
/narrate, which generates a dramatic “Previously on…” script and runs it through ElevenLabs v3 with a custom “Old Adventurer” voice - Deploy manually with
vercel --prod
Dom reviews and corrects extracted facts at step 4 before anything publishes. The AI assists, but editorial control stays human.
The campaign site
The frontend is Astro with Content Collections, deployed to Vercel at mostly-mortals.bydom.io. It features a “Grimoire” theme with dark/light toggle, a quest log with status tracking, session galleries with AI-generated art, and hidden recap pages where players can listen to the narrated intro before each session.
What it represents
This project sits at the intersection of AI tooling and creative storytelling. It chains multiple AI services (Whisper, Claude, GPT Image 1.5, Nano Banana 2, ElevenLabs) into a production pipeline where each service can fail independently without breaking the whole chain. Our group of 7 players and a DM has 18+ months of campaign history at Level 10, fully illustrated and narrated, without anyone writing a single note by hand.