Online

Cantastories

Enigmi di lateral thinking con narratore e giudice AI.

Anno
2026
Area
Web, AI
Stack
.NET · React · PostgreSQL · Redis · LLM multi-provider · Docker

Il problema

Scrivere storie è la parte facile. Tenere il gioco onesto è il problema: un modello che improvvisa rompe il patto con chi gioca, e un modello che costa troppo a ogni partita rompe il conto.

Vincoli

  • Latenza percepibile: la risposta deve arrivare mentre la domanda è ancora in mente.
  • Costo per partita limitato: nessuna chiamata libera al modello.
  • Contenuti sempre adatti: filtro prima del modello, non dopo.
  • Nessuna storia ripetuta: la selezione deve ricordare cosa è già stato giocato.

Architettura

  • Backend .NET con PostgreSQL per storie, sessioni e consumi; Redis per lo stato in tempo reale.
  • Narratore e giudice sono due ruoli distinti, con prompt e parametri diversi.
  • Batch asincrono per le storie non urgenti, canale realtime per quelle in partita.
  • Deploy: GitHub Actions esegue i test e pubblica l'immagine su ghcr.io solo se sono verdi.

Decisioni che contano

La selezione delle storie è un punteggio, non un random

Mai usata, poco usata, mai usata da quel giocatore, decadimento nel tempo, categoria e difficoltà: la storia si sceglie sommando pesi. Il caso viene solo alla fine, come spareggio.

Le frasi bloccate chiudono la partita prima del modello

Un elenco di frasi chiude la sessione senza spendere token e senza rivelare la storia. Il filtro costa zero ed è deterministico.

Un anello LLM può morire in silenzio

Un modello dismesso dal provider non genera errori: semplicemente smette di rispondere bene. Il monitoraggio dei consumi è parte del prodotto, non un extra.

Dove è arrivato

Online su cantastories.it, con validazione a due stadi modificabile dall'amministrazione e scarti tracciati in una tabella dedicata.