Story Copilot / Local web application
Private suggestions for a tabletop-game facilitator
Story Copilot follows the conversation and suggests what the facilitator could say next. It can consult the scenario, character sheets, earlier exchanges and rules supplied for the game. The facilitator can use a reply, reject it or ask for another. Only the actual conversation updates the record.
FastHTML · SQLite · Local models · Optional audio intake
A scene with two requests and a private clue
Conversation and established facts
Established scene: At a harbor signal station, keeper Ada says the east ferry left at nine. The bell has been disconnected since yesterday. The brass tide dial is missing from its wall mount. Only Inez has seen a note saying Ada moved the dial to the workshop. She has not told Bram. Nobody knows why Ada moved it. Inez: I don’t mention the note. I ask Ada how the ferryman knew it was time to leave if the bell was disconnected. Bram: While they talk, I stay by the doorway and check whether I can see the workshop from here. I’m not going inside.
A possible facilitator reply
Ada rubs a thumb over the pale circle where the dial used to hang. “He didn’t need the bell. I was down at the pier.” She glances at the dark windows before adding, “He usually waits for me.” Bram, the workshop door is visible across the courtyard. A lamp burns behind its frosted glass, but from the doorway you cannot make out anyone inside. Ada has left your way clear. What do you ask her next?
This gives Inez an answer from Ada and Bram a view from the doorway. It leaves the note private and does not decide that Bram enters the workshop. Ada’s account of the departure can still be a lie.
Authored scene and suggested reply, not a recorded model result. It illustrates the behavior the application is intended to support; actual responses can fail these requirements.
How the application prepares a reply
Follow what was actually said
Typed contributions and optional audio transcripts feed the conversation record. A separate extractor proposes state updates. The prose writer sees relevant context; its drafts are not fed back as observed events.
Retrieve or ask before answering
A bounded agent loop can inspect a character, recover an exchange or search the campaign’s rule documents. When information is missing, it can ask a question. Rule calculations use explicit inputs and verified arithmetic.
Handle corrections and long sessions
Revising a contribution invalidates dependent observations and obsolete answers. The context builder preserves complete exchanges and relevant state within a measured token budget. Sessions can continue from existing history or branch into a separate version.
Review the suggestion
A separate editing pass checks a draft for continuity, knowledge and player-agency problems. The original and any revision remain in the trace. This adds latency and can over-restrict a reply; it needs evaluation too.
The local models
The main 27B base serves task-specific adapters. Two experimental player-personality adapters can take labelled turns using only the character’s permitted context. Their reference loss improved, but small blind writing comparisons were mixed.
A separate 4B learned policy handles supported resource and numerical-rule questions. The larger model handles broader decisions, writing and review, and takes over if the smaller policy fails or its context is too large.
The latest 1,250-example prose writer is available for private interactive testing. Its separate test preference tied the base model. A real UI request verified the new routing, but the reviewer flagged that first reply; integration success did not make it a good answer.
Workflow failures found in testing
The application tests cover source revisions, stale answers, private knowledge, rule isolation and session continuation. Live exercises also follow conversation through transcription, extraction, retrieval and suggestions.
Audio replay exposed a fragmented question and a review pass that restored an obsolete resource balance. Another review found invented retrospective commentary in private notes. Those failures matter even when the response has valid structure and correct-looking citations.
Synthetic speech supports repeatable integration tests. Retained natural speech supplies a different stress case. Without an independently corrected transcript and speaker reference, neither supports a word-error or diarization-accuracy claim.
Workflow evaluation and findings ↗