Salvatore Contino
Founder & CEO at Animora · Cursor Ambassador · Microsoft Developer Insider · Startup Geeks mentor
Founder e CEO di Animora · Cursor Ambassador · Microsoft Developer Insider · Mentore Startup Geeks
Turin, Italy
Actions
I build Typewrite, a writing environment that treats a screenplay as structured data — a graph of scenes, characters and relations — instead of a text document. Most of my engineering time goes into the two hard parts: a page engine written from scratch on ProseMirror, and a context layer that decides what a model is allowed to see and where every token came from.
I didn't come from computer science. I came from design and film school, and I learned to code because the tool I needed didn't exist.
On stage I talk about what broke before it worked: the benchmarks, the costs, and the architectures I threw away.
Costruisco Typewrite, un ambiente di scrittura che tratta la sceneggiatura come dato strutturato — un grafo di scene, personaggi e relazioni — invece che come documento di testo. Il grosso del lavoro sta nelle due parti difficili: un page engine scritto da zero su ProseMirror e un livello di contesto che decide cosa il modello può vedere e da dove arriva ogni pezzo.
Non vengo dall'informatica. Vengo dal design e da una scuola di cinema, e ho imparato a programmare perché lo strumento che mi serviva non esisteva.
Sul palco racconto quello che si è rotto prima di funzionare: i benchmark, i costi e le architetture che ho buttato via.
Area of Expertise
Topics
Un copilot dentro un documento strutturato: perché il RAG ingenuo non basta it en
Una sceneggiatura non è un testo lineare, è un grafo di scene, personaggi e relazioni. Il primo copilot che ci ho messo dentro girava su un RAG standard: spezza il documento, calcola gli embedding, recupera i pezzi più simili. Le risposte erano credibili e sbagliate. Il modello non sapeva che la battuta a pagina 58 è dello stesso personaggio entrato a pagina 12, che quella scena era già stata riscritta tre volte, o che in quel momento l'utente stava guardando proprio lì.
Racconto l'architettura uscita da quel fallimento, mentre costruisco Typewrite, un ambiente di scrittura per sceneggiatori.
Il documento diventa un grafo invece che una stringa. Ogni nodo ha un id che sopravvive alle riscritture, e il contesto si naviga per relazione: chi parla, in che scena, dopo cosa.
Tra editor e modello passa una struttura tipizzata. Decide l'editor cosa entra nel contesto, perché è lui a sapere dove sta lavorando l'utente, e di ogni pezzo che arriva al modello si può ricostruire la provenienza.
Sopra c'è un gateway, e sotto il gateway ci sono gli evals. Ho confrontato più modelli di quattro provider sullo stesso task di estrazione strutturata da una sceneggiatura, con un gold set annotato a mano: porto i numeri di accuratezza, latenza e costo. Il dato che mi ha sorpreso è quanto cambia il vincitore a seconda del task, e quanto sono diversi tra loro i meccanismi nativi di structured output. È il motivo per cui il routing è finito nell'architettura invece che in un file di configurazione.
Una parte della sessione sta sugli approcci che ho buttato via e sui conti che mi sono esplosi in mano.
Sullo stato del progetto: l'editor è in TypeScript su ProseMirror e TipTap, con un page engine scritto da zero, funzionante e testato. Il livello AI è in implementazione. Qui racconto le decisioni di architettura e il benchmark che le ha guidate, non un sistema già in produzione.
Disponibile in italiano e in inglese. Funziona come talk da 25-30 minuti o in versione da 45 con la parte di benchmark estesa. Livello intermedio: presuppone familiarità con le API dei modelli e con il retrieval di base. Codice e dati del benchmark mostrati dal vivo. Prima erogazione: candidato a DevFest Alps 2026.
A copilot inside a structured document: why naive RAG isn't enough it en
A screenplay is not linear text. It's a graph of scenes, characters and relations. The first copilot I put inside one ran on standard RAG: chunk the document, compute embeddings, retrieve the most similar pieces. The answers were plausible and wrong. The model didn't know that the line on page 58 belongs to the character who walked in on page 12, that the scene had already been rewritten three times, or that the user was looking right at it.
I'll walk through the architecture that came out of that failure, built while working on Typewrite, a writing environment for screenwriters.
The document becomes a graph instead of a string. Every node carries an id that survives rewrites, and context is navigated by relation: who speaks, in which scene, after what.
Between the editor and the model there's a typed structure. The editor decides what enters the context, because the editor is the one that knows where the user is working, and every piece that reaches the model can be traced back to its origin.
Above that sits a gateway, and under the gateway sit the evals. I benchmarked several models from four providers on the same structured-extraction task over a screenplay, against a hand-annotated gold set: I bring the accuracy, latency and cost numbers. What surprised me is how much the winner changes with the task, and how different the native structured-output mechanisms are from each other. That's why routing ended up in the architecture instead of in a config file.
Part of the session is about the approaches I threw away and the bills that blew up in my hands.
On the state of the project: the editor is TypeScript on ProseMirror and TipTap, with a page engine written from scratch, working and tested. The AI layer is under implementation. This talk is about the architecture decisions and the benchmark that drove them, not about a system already in production.
Available in Italian and English. Works as a 25-30 min talk or a 45 min version with a longer benchmark section. Audience: intermediate — assumes familiarity with LLM APIs and basic retrieval. Code and benchmark data shown live. First delivery: submitted to DevFest Alps 2026.
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top