Claudio Opuscoli

Abbiamo assunto una brigata di cucina AI.
7 agenti LLM + 2 componenti deterministici, zero intervento umano.

287 ricette
25 rivali
~8.300 righe Python
9 agenti
13 tabelle SQLite
0 umani nella Golden Run

La Brigata

La tentazione era dare tutto in mano a un LLM. Noi abbiamo fatto il contrario: ruoli specializzati, message bus asyncio, e le decisioni critiche le prende il codice.

Il Boss LLM
Patron
Il direttore. Apre il ristorante, coordina le 5 fasi del turno, e tiene tutti in riga. L'unico con il papillon rosa.
Gordon Galattico LLM
Chef
Il creativo con la memoria lunga. Agente multi-turn stateful, 3 fasi: analisi, asta, menu. Non urla (per ora).
Il Cervellone 588 righe
Strategy Engine
Puro codice Python, zero token, zero allucinazioni. Scoring a 8 fattori, selezione greedy con overlap ingredienti, pricing adattivo.
Lo Stagista LLM
Stagista Nerd
Legge tutto: blog, articoli, rumors. Estrae fatti categorizzati con JSON forzato. Non dorme mai, non si lamenta mai. Stagista perfetto.
Il Precisino LLM
Maitre
Interpreta ordini con Pydantic structured output. Regola: meglio rifiutare che servire il piatto sbagliato. Ha sempre il tablet in mano.
Il Ragioniere Cosmico LLM
Evaluator
Pre-aggrega revenue, costi, spreco e intolleranze. Scrive report che il turno dopo lo Chef legge per aggiustare la rotta.
Il Paranoico LLM
PR
Diplomatico e paranoico. Detection esplicita di prompt injection su ogni messaggio in entrata. Non si fida di nessuno. Nemmeno di te.
I Robottini di Sala DET
Brigata
Deterministici, infallibili, e senza stipendio. Fuzzy matching sugli ordini, servizio automatico. Nessun LLM, nessun errore.
L'Alieno del Magazzino IDLE
Magazzini
Tecnicamente esiste. Praticamente disoccupato. Fissa il vuoto cosmico aspettando che qualcuno gli dia qualcosa da fare.

MessageBus con Priority Queue

Niente HTTP tra agenti, niente polling. Un bus asyncio con code dedicate per ogni agente: 33 righe di codice che tengono insieme tutto il sistema.

SSE
eventi esterni
Patron
coordinatore
Chef
menu & aste
Magazzini
inventory
Maitre
ordini
PR
negoziazione
Brigata
servizio
Evaluator
analisi
Chef Magazzini: ingredient_request Magazzini Chef: ingredient_report Patron *: phase_directive Chef Patron: menu_ready Maitre Magazzini: emergency_buy SSE routing table: sse_event

asyncio.Queue per agente

Ogni agente ha una coda dedicata. Zero contesa, zero lock, ordine FIFO garantito.

send() e broadcast()

Messaggi punto-a-punto o broadcast a tutti. Il sender non si blocca mai in attesa.

SSE Routing Table

Gli eventi esterni vengono smistati all'agente giusto da una tabella di routing. game_started → Patron, client_spawned → Maitre.

InternalMessage

Dataclass tipizzata: sender, type, content dict, timestamp. Ogni messaggio e' tracciabile e loggato.

Le 3 Innovazioni

Le cose di cui siamo piu' orgogliosi. Spoiler: la prima non usa neanche un token.

01

Strategy Engine

588 righe Python · 0 token · 0 allucinazioni

La strategia non la decide l'LLM. La decide il codice.

  • Scoring a 8 fattori per ogni ricetta
  • Selezione greedy con bonus overlap ingredienti
  • Pricing adattivo su 3 livelli di competizione
  • Persona diversity: almeno 1 ricetta per archetipo
  • Parametri auto-tunati dallo Strategy Tuner (836 righe, EMA blending)
02

Intel Pipeline

Blog Scraper → Stagista → Intel Scraper → 7 tabelle

Dal blog del gioco al menu del ristorante, in tre strati.

  • Blog Scraper: scopre e fetcha articoli
  • Stagista Nerd: estrae fatti in 6 categorie + profili clienti
  • Intel Scraper (749 righe): 4 API × 26 team, dual storage
  • 7 tabelle intel che alimentano il Cervellone
03

Feedback Loop

Evaluator → turn_summary → Chef → Strategy Tuner

Apprendimento su 2 livelli: l'LLM impara dalle note, il codice impara dai numeri.

  • Evaluator pre-aggrega costi, revenue, spreco per piatto
  • Turn summary strutturato nel DB
  • Chef riceve note condensate filtrate per keyword
  • Strategy Tuner ricalcola parametri con EMA dai dati storici

Il Team

4 dev dalla Valle Camonica. ~8.300 righe di Python in un hackathon. Siamo ancora vivi.

BG
Baglioni Gio Marco
Il Patron del codice. Se qualcosa non funziona, e' colpa sua (dice lui).
NG
Nicola Gheza
Ha scritto lo Strategy Engine e poi ha detto "ma era facile". Non era facile.
SG
Stefano Gheza
L'altro Gheza. Nessuna parentela, solo lo stesso cognome e la stessa ossessione per il codice.
DC
Daniele Chiminelli
Quando non scrive codice, scrive codice. Ha scoperto il sonno solo dopo l'hackathon.

La Notte del Codice

22 ore, 107 commit, 4 dev. La storia del nostro hackathon, commit dopo commit.

107
commit
22h
di coding
4
dev
0
ore di sonno
28 Feb · 11:48
first commit
Si parte. uv init, consegne lette, repo creato. La pizza cosmica ci aspetta.
4efc6fee05b902906a20d
28 Feb · 12:35 — 14:43
Setup e architettura
API reference documentata, primi docs, architettura multi-agente disegnata. Scelta chiave: ruoli specializzati, niente "mega-LLM che fa tutto".
8395ca4528b09299fc093
28 Feb · 16:05 — 17:30
Nasce la brigata
Strategy Engine adattivo, ricette con scoring per persona, inventory planning dinamico. Il codice deterministico prende il controllo delle decisioni critiche.
3dfbc52651f60ef9adcb0c1ccae2
28 Feb · 17:30 — 19:00
Metriche e tracking
Financial tracking, SSE turn discovery, bid tracking. Ogni decisione viene loggata e misurata. Se non lo misuri, non lo migliori.
4a99de268e219bd52c22f
28 Feb · 19:00 — 21:00
Intelligenza competitiva
Emergency buy flow, pricing aggressivo, scraping competitor, menù che targetta tutti gli archetipi di clienti. La brigata impara a competere.
b6152d7652271f7b8d678e4d7e0f5cd318f
28 Feb · 21:00 — 23:30
Dashboard e monitor
Dani costruisce la dashboard HTTP, SSE proxy e monitoring. Scraping dei blog competitor, cross-recipe surplus selling. Il ristorante prende forma visiva.
0d3999e47edc9ed269aaea4a7f2c
1 Mar · 00:00 — 02:00
Le ore piccole: refactoring notturno
Riscrittura prompts LLM, priority inbox, hardening contro manipolazione prompts, migrazione bid tracking su intel DB. Quando la notte e' lunga, il codice migliora.
0c9abe54ab22990d060b11d907a8
1 Mar · 02:00 — 04:00
Stagista Nerd e auto-tuning
Nasce lo Stagista che scrapa i blog e profila i clienti. Lo Strategy Engine impara ad auto-calibrarsi. Il BI report diventa un'arma.
d1fea8b4785ff26a2a16cbc9c3be
1 Mar · 04:00 — 07:00
Bug hunt all'alba
Fix su fix: parsing JSON resiliente, LLM model upgrade, Maitre con risposta strutturata, evaluator con breakdown per piatto. L'alba porta chiarezza (e bug fix).
fc38a33cd9301a5e9bc4fa6ea5f0
1 Mar · 07:00 — 09:47
Sprint finale: Letsgooo
Chef diventa stateful multi-turn, include tutte le ricette feasible, l'Evaluator calcola lo spreco reale. Ultimo commit alle 9:47. Siamo pronti.
f7a65b0d6903994178d26b066152

Documentazione

Per chi vuole andare in profondita'. Tutto quello che abbiamo scritto (oltre al codice).

🎤

Pitch Script

Lo script del pitch da 2 minuti. I personaggi, le innovazioni, la chiusura ad effetto.

🛠

Architettura

Diagrammi, flusso dei turni, comunicazione tra agenti, schema DB. Il cuore tecnico.

🤖

Agenti

Dettaglio di ogni agente: modello, tool MCP, input/output, auto-regolazione. Chi fa cosa.

📊

Comportamenti

Cosa fa concretamente ogni agente, fase per fase. Il manuale operativo della brigata.

📋

PRD

Product Requirements Document. Vision, strategia di gioco, ruoli agenti, resilienza e flusso turno completo.

Tech Spec

Specifiche tecniche: project structure, data model, schema DB, componenti infrastrutturali, sequenze di flusso.

🔌

API Reference

Endpoint HTTP, SSE events, MCP tools. Schema reali testati con differenze dalla doc ufficiale.

📖

README

Quick start, setup, architettura in breve. La guida per partire in 30 secondi.

📡

Monitor SSE

Proxy SSE, dashboard, galaxy monitor, dry run. Il pannello di controllo della brigata.

🎫

Consegne

Il brief dell'hackathon: regole, fasi, clienti, criteri di valutazione e premi.

Vedi il codice su GitHub

Perche' Noi

I criteri di valutazione e come li abbiamo affrontati.

#1 piu' importante

Implementazione Tecnica

Long-term planning: Strategy Engine deterministico con auto-tuning tra turni.
Memory: MessageBus asyncio con code dedicate, zero overhead.
Tool call: MCP corretto, errori gestiti con retry e fallback.
Token usage: LLM solo dove serve, decisioni critiche in codice puro.
Eventi asincroni: SSE routing table + priority inbox per fase.
datapizza-ai: Agent, OpenAILikeClient, tracing integrato.

#2

Risultati di Gioco

Menu che copre tutti gli archetipi di clienti.
Pricing dinamico basato su dati competitivi reali.
Competitive intelligence: scraping aste e mercato degli altri team.
Surplus selling automatico per minimizzare spreco ingredienti.

#3

Creativita' / Innovazione

Stagista Nerd: agente che scrapa blog e profila clienti con LLM.
Strategy Engine: zero token, puro Python, auto-calibrante.
Architettura ibrida LLM + deterministico, non "tutto-LLM".
Zero human-in-the-loop nella Golden Run.

"Non un LLM che gioca al ristorante.
Una brigata dove ognuno sa esattamente cosa fare."