JevSeptember 23, 2026
The Nine O’Clock Train gives AI a referee’s job
A detective game uses typed AI judgments to interpret a player's questions while keeping the mystery under the author's control. Here is what the live game shows, how the design works, and how to measure its cost.
The Nine O'Clock Train gives AI a referee's job inside a detective story. Players type their own questions. Jev interprets the move; the game decides what the player is allowed to learn. The server releases dialogue already written into the case file.
That constraint suits a mystery. The writer needs to know which facts are true, which characters know them, and what evidence makes an accusation hold up. A player can phrase a question in several ways without gaining permission to rewrite the case.
Forty-five minutes at Hotel Rajdoot
The live game is set above Bansipur Junction during the monsoon, on August 14, 1987. The hotel has three floors and 27 rooms; its public description promises seven suspects and forty-five minutes before the Bombay Mail departs. The premise gives the investigator a deadline and a practical obstacle: the inspector can stop a passenger if given a defensible case. The Nine O'Clock Train, checked September 23, 2026
The building gives that investigation a shape. A directory lets you move among the station level, guest floor and roof. There are public spaces, private rooms and places where someone might have noticed something. The instructions invite questions in your own words and require an accusation to account for motive, method and timing.
That leaves room for the player to be specific. A general question and a question about one inconsistency should lead somewhere different. The design problem is deciding whether those two sentences request the same authored response.
The case file reviewed for this article contains 36 notebook clues: fourteen pieces of physical evidence and twenty-two pieces of testimony. Characters' statements form part of the case too.
What the referee decides
Jev accepts state and typed questions. Its documented outputs include predefined choices, scores and yes/no probabilities. It does not generate the prose a character says. TypeSafe's Jev documentation
The live game's developer HUD exposes judgments including intent, target, clue_match and spoiler_fishing. It also shows whether returned labels were accepted against server state. The source implements the same division:
| Judgment | What the game needs to decide |
|---|---|
intent |
Is the player asking, examining, moving or accusing? |
target |
Which available character, object or destination does the move concern? |
clue_match |
Does the question correspond to a defined piece of evidence? |
spoiler_fishing |
Is the player asking for an answer outside the allowed investigation? |
The server builds the available labels from the current room, people present and topics whose evidence requirements have been met. The request also asks about movement, an accused person, insight and compound questions. An accusation can add checks for evidence the player has collected.
Consider an invented move, unrelated to this game's solution: “Ask the porter whether he saw the umbrella.” A referee can identify a question, a character and a topic. Ordinary code checks whether the porter is present, whether that topic is available, and which response the player has earned. The case file stays on the server; the browser receives public information and unlocked material.
The engine validates the returned labels before releasing dialogue. It also checks that evidence cited in an accusation is already in the player's notebook. A valid type can still contain a mistaken interpretation; TypeSafe makes that limitation explicit in its discussion of calibration. TypeSafe System One documentation
A deadline for the model, too
The source sets a default 300-millisecond deadline for the Jev request. A deployment can configure a different limit on the server. At the deadline, it destroys the outgoing request and uses a scripted keyword matcher over the same available candidates. Network errors, missing credentials and insufficient confidence also have fallback paths. The live HUD exposes latency and fallback information.
The timeout budget does not establish a measured response-time guarantee. The full interaction includes server work and the trip back to the browser.
Fallbacks also affect how the game feels. A response asking for a more specific question can preserve the investigation. Repeatedly failing to understand ordinary language can make players abandon it. A spoiler-free test set should therefore include short questions, pronouns, two requests in one sentence, unfamiliar phrasing and deliberate attempts to ask beyond the character's knowledge.
Measure what a player experiences: accepted moves, ambiguous moves, fallback frequency and time until the response appears. Keep model latency separate from the complete request path.
Count a whole investigation
The game includes a button to buy the writer a chai. The source offers ₹49, ₹99, ₹199 or a custom amount through UPI, with a separate card-support option. Comparing one contribution with the cost of serving a player requires a measured playthrough.
The reviewed code calls TypeSafe directly. Its HUD estimates cost by multiplying returned input tokens by a fixed rate. It is an estimate, not a settled charge or Vaaya receipt. The counter uses successful responses, so reconciliation also needs to account for any timeouts or retries that the provider bills.
To establish the cost of a playthrough, capture a fresh session from arrival to an ending. Reconcile every request with provider billing, including timeouts and retries. Sum each billed price once.
Session model cost = sum(actual billed price of every session request)
For identical-price calls only:
Session model cost = number of calls × actual price per call
Chai equivalents = session cost in INR ÷ verified chai price in INR
For the currency conversion, record the exchange-rate source and date. Report hosting or other operating costs separately if the claim concerns the whole game's cost. We do not yet have a measured, complete playthrough to put into that comparison.
Open the game, choose a room, and ask one specific question.
Questions
What is The Nine O’Clock Train?
It is a browser detective game set at Hotel Rajdoot above Bansipur Junction in 1987, with 27 rooms, seven suspects and a train due to leave in forty-five minutes.
Does Jev write the characters' dialogue?
The game's design gives Jev a referee role: classify the player's move so the game can select an allowed response. Jev itself returns typed decisions rather than generated prose.