← Projects

Sellsword

live

AI-powered TTRPG NPC companion

for
Game Masters and the players at their table
started
20 June 2026
in
A player's line, typed or spoken
out
The NPC's reply, in character and in its own voice
rule
The code decides what an NPC knows and how it feels. The model just acts it out.

Sellsword gives tabletop RPGs a voice: talk to a non-player character out loud and it answers in character, in its own voice. It’s a multi-tenant SaaS wiring Groq Whisper for speech-in, Claude Haiku for the character, and Inworld for speech-out.

Stack

Python
Plain code works out how an NPC feels and what it knows before the model sees a word, then checks whether it lied.
Postgres
Holds the world. Every NPC's grudges, goals and secrets are rows in a database. No vector search.
Claude Haiku
The actor. It gets a short brief and the player's line, and hands back one reply in a strict format.
Inworld TTS
Speaks the NPC's reply in that character's voice.
Whisper
Turns what a player says into the mic into text.
React
The Game Master's cockpit and the screen the players watch.

Build log

  1. A screen for the TV. The Game Master opens a table on the laptop and a second screen shows the scene to the room. It's on the live site, but not yet tried on a real TV.

  2. A cinematic view. The NPC stands in a painted room lit by a flickering lamp.  Read →

  3. NPCs now remember what they've told you, and what they lied about.

  4. Renamed from Tavern to Sellsword, sign-in added, and live at sellsword.app.

  5. Voices. NPCs speak through Inworld's text-to-speech, and players can tap a mic and just talk.

  6. An NPC's face now changes with how it feels about you. The numbers pick the face, not the model.

  7. The test harness gets a judge. A model marks each reply against what the NPC was meant to be feeling.

  8. First commit. By the end of the day it had the database, what each NPC knows, lie detection, the test harness and the Game Master's cockpit.

Writing