Personal project / In development
Dungeon Pilot
Adventure preparation
and live-session workspace.
Dungeon Pilot is my independent personal project for preparing adventures and running in-person sessions in one workspace.
- My role
- I set the product vision and technical direction, defined the features, and reviewed the implementation.
- Tech stack
- Next.js 16
- React 19
- TypeScript
- PostgreSQL
- Prisma
- Python
- PyMuPDF
- Tailwind CSS 4
01 / Import Review
A suggestion,
with its source
In Import Review, I can check a suggested scene beside its source page, edit it, and confirm or reject it. Confirming a scene doesn’t automatically confirm its relationships.

This demo uses original fictional content and deterministic mock extraction. Assessment scores are preset, not measured AI accuracy.
02 / The starting point
Why I built it
Dungeon Pilot started with an idea I wanted to explore: could I turn a D&D adventure PDF into a workspace that helps a DM run the game? I wanted scenes, characters, monsters and notes in one place, instead of constantly switching between a PDF and different tools.
Early on, I considered letting AI run parts of the adventure on its own. I decided to focus first on something more practical: helping the human DM prepare and manage a session while staying in control. That choice shaped the review step: imported content can be checked and edited against its source before confirmation.
The experiment grew into a larger full-stack project: document processing, structured data, background jobs and a live-session interface.
Keep the page in reach.
Check the original page as you edit, using the suggestion’s page and quote references.
The source page holds the scene text and a separate DM note.

03 / Run
Confirmed context,
at the table
Run brings the confirmed scene into the session, with player-facing text and a separate DM-only note. Navigation and manual session notes stay alongside it.
The Run passage was edited manually in the app. The assistant was idle.

04 / Engineering
Decisions
& trade-offs
01
Confirmation is a separate step
I kept suggestions separate from confirmed session content. Run uses confirmed entities and confirmed relationships independently.
Trade-off This adds manual review before material is used at the table.
02
Editing stays linked to the source
The original document stays separate from the editable content. Page and quote references keep the two connected during review.
Trade-off References and editable copies need maintaining. A source link does not guarantee a correct interpretation.
03
Import work runs in the background
Parsing and extraction run as database-backed jobs in a separate TypeScript worker. A Python parser extracts text and renders page previews.
Trade-off There is another process to run, with job progress and failures to manage.
05 / In development
Where it stands
Dungeon Pilot is private and still in development. The app and its source are not publicly available.
Original fictional demonstration content.