Quotengine

Un preventivo stampato dalla riga di comando di Quotengine

Panoramica

Un motore di preventivi per studi dentistici. Il paziente descrive il trattamento di cui ha bisogno, se vuole con una radiografia panoramica, e riceve un preventivo indicativo.

Stack

TypeScript, Hono, Cloudflare Workers, D1, R2, Claude (visione e tool use), zod, Vitest

Cosa ho realizzato

  • Acquisizione multimodale protetta: Claude legge il messaggio del paziente e una panoramica facoltativa, e può rispondere solo tramite uno schema di tool forzato che sceglie voci dal listino dello studio.
  • Un motore di prezzi deterministico in TypeScript: listini per studio, regole, modificatori, tasse e ricarichi, tutti validati con zod prima di essere caricati.
  • Un'API Hono su Cloudflare Workers con i lead in D1 (migrazioni SQL versionate), le radiografie in uno storage R2 privato e un contratto OpenAPI.
  • Privacy dei dati sanitari: il consenso viene registrato con lo SHA-256 del testo esatto accettato, e una radiografia viene salvata solo con un consenso separato, altrimenti è elaborata in memoria.
  • 333 test in 44 file eseguiti in CI, più un harness di valutazione su radiografie open access.
  • Documentazione che un revisore può seguire: quattro architecture decision record, un threat model, una model card e una checklist privacy per il go-live.

Scelte chiave

  • Il modello non fa mai calcoli. Restituisce ID del listino tramite uno schema di tool forzato, e ogni prezzo lo calcola il codice.
  • Un input incerto fallisce in modo sicuro: una radiografia scadente o una lettura poco affidabile restituisce una richiesta di visita invece di un prezzo tirato a indovinare.
  • Nessuna dichiarazione di accuratezza senza prove: la model card dice cosa non è ancora stato misurato su un dataset etichettato da dentisti.
  • Ogni preventivo è indicativo e richiede una conferma clinica in presenza.