[{"content":"Nell\u0026rsquo;ultimo anno e mezzo ho sviluppato da zero due componenti fondamentali, il motore di ricerca e una pipeline di testing e valutazione automatizzata per un chatbot distribuito a livello nazionale per la Pubblica Amministrazione italiana. Il sistema si chiama Camilla ed è uno strumento rivolto ai cittadini: chiunque può usarlo per cercare tra centinaia di bandi pubblici aperti, dalle offerte di lavoro dei singoli comuni e delle province agli enti nazionali, alle forze armate e a qualunque altro ramo della PA.\nElabora query reali di utenti reali, in un contesto regolamentato, traducendo domande in linguaggio naturale in risposte verificabili e riferite ai bandi che corrispondono alle richieste degli utenti. Quell\u0026rsquo;esperienza mi ha costretto a fare chiarezza su alcune domande interessanti, relative ai sistemi ibridi di AI. Come si valuta un sistema agentico in modo da cogliere davvero ciò che si rompe in produzione? Come si costruisce un retrieval ibrido su un corpus incoerente per natura? Come si rilascia un prodotto di AI per la PA italiana rispettando gli obblighi di trasparenza dell\u0026rsquo;AI Act europeo?\nHo scritto dell\u0026rsquo;architettura e delle decisioni di governance, quelle che si sono rivelate più importanti delle scelte di ML, in un articolo per Agenda Digitale.\nCamilla, l\u0026rsquo;assistente AI che sfida la burocrazia nella PA →\n","permalink":"https://pietroferragamo.com/it/blog/camilla-pa-chatbot/","summary":"Pubblicato su Agenda Digitale: le scelte di architettura e governance dietro un chatbot su scala nazionale per la Pubblica Amministrazione italiana.","title":"Camilla, l'assistente AI che sfida la burocrazia nella PA"},{"content":"Sono Senior GenAI Engineer in CSI Piemonte, una delle più grandi società in-house regionali per l\u0026rsquo;IT in Italia. Costruisco sistemi basati su LLM distribuiti su scala nazionale per la Pubblica Amministrazione italiana, un contesto in cui la sicurezza e la governance contano quanto il machine learning stesso.\nIl mio lavoro attuale ruota attorno a un chatbot di assistenza ai bandi chiamato Camilla. Ne ho progettato e ne curo il motore di ricerca sottostante (oltre 100.000 query in sei mesi) tramite cui Camilla individua i bandi che corrispondono alle richieste degli utenti, il framework di valutazione comportamentale (167 scenari di test avversariali, con metodologia LLM-as-a-judge) e il server MCP interno che compone i suoi strumenti agentici. Oltre a Camilla, progetto assistenti agentici per altri clienti, interni ed esterni all\u0026rsquo;azienda, curando l\u0026rsquo;intero stack: specifiche, definizione della Knowledge Base e testing del prodotto finito. In particolare, cerco di sviluppare software cost-aware, scalabile in produzione, e assieme al mio team ci impegniamo a garantire la conformità all\u0026rsquo;AI Act europeo e al GDPR. Mi appassionano i sistemi ibridi (tradizionali+AI) per la capacità di combinare prestazioni e spiegabilità di framework deterministici con la flessibilità, espressività e autonomia dei modelli di linguaggio di frontiera.\nIn parallelo sto completando un MSc in Computer Science (specializzazione in ML) alla Georgia Tech, mantenendo una media di 4.0/4.0 in corsi che spaziano su argomenti di Machine Learning, AI tradizionale, NLP e robotica.\nIn precedenza ho passato diversi anni come business analyst su sistemi per i fondi europei (dal FEASR a NextGenerationEU): PL/SQL e SQL avanzato, report e dashboard per funzionari e autorità di regolamentazione UE, dove un numero sbagliato aveva conseguenze concrete. Non era AI, ma è la radice della metà deterministica del mio lavoro di oggi, ed è il motivo per cui credo nei sistemi ibridi: so cosa sanno fare bene le logiche deterministiche prima di affidare il resto a un LLM. Lavorare a contatto con le istituzioni europee, con audit annuali, mi ha insegnato quanto conti la spiegabilità in ogni sistema le cui decisioni hanno un impatto reale.\nSul fronte personale: ho un diploma in chitarra classica del Conservatorio G. Verdi di Torino, dove ho studiato per otto anni. Sono appassionato di musica, matematica e intelligenza artificiale.\n","permalink":"https://pietroferragamo.com/it/about/","summary":"Chi sono","title":"Chi sono"},{"content":"Senior GenAI Engineer — sistemi LLM, architetture agentiche, valutazione e governance\nTorino, Italia · pietro.ferragamo.121@gmail.com · linkedin.com/in/pietro-ferragamo · github.com/pietro121orteip\nIngegnere di AI applicata con background in matematica, costruisco sistemi basati su LLM distribuiti su scala nazionale per la Pubblica Amministrazione italiana. Unico autore del motore di ricerca ibrido/semantico (oltre 100.000 query in produzione), del framework di valutazione comportamentale e del server MCP interno alla base di un chatbot di assistenza ai bandi per il settore pubblico. Attualmente sto completando un MSc in Computer Science (specializzazione in ML) alla Georgia Tech, in parallelo a un ruolo IC senior in CSI Piemonte, con un forte interesse per la valutazione, la governance e la sicurezza dei sistemi di AI agentica in produzione.\nCompetenze tecniche Stack LLM e agentico — LangChain, LangGraph, Model Context Protocol (MCP), Azure OpenAI, prompt engineering, progettazione dell\u0026rsquo;uso dei tool, LLM-as-a-judge, architetture RAG, orchestrazione agentica, valutazione comportamentale e red-teaming\nValutazione e governance — giudici LLM multi-rubrica, suite di regressione, verifiche comportamentali (prompt injection, equità, integrità temporale, verifica dell\u0026rsquo;uso dei tool), trade-off latenza/costo/qualità, considerazioni su AI Act europeo e GDPR nell\u0026rsquo;AI in produzione, osservabilità dei servizi di AI\nRetrieval e dati — retrieval ibrido (denso + sparso + trigram), Weaviate, Redis, pgvector (cenni), estrazione di entità, retrieval guidato dai metadati, analisi della qualità delle collezioni di embedding, paradigma RAG agentico e non.\nLinguaggi e infrastruttura — Python, SQL (PostgreSQL avanzato, certificazione Oracle OCP), FastAPI, Docker, Bash, Git; PyTorch (regressione/classificazione, NLP); CI/CD (Jenkins, GitHub Actions); osservabilità (Grafana, Prometheus, Loki, Promtail)\nCloud e deployment — Azure (Azure OpenAI, deployment in container); authoring di Helm chart in corso\nFondamenti matematici — processi stocastici, probabilità, ottimizzazione, filtraggio bayesiano (Kalman, particle filter, SLAM)\nEsperienza CSI-Piemonte — AI Engineer, R\u0026amp;D — Torino, Italia set 2024 – presente\nR\u0026amp;S su sistemi basati su LLM per uno dei più grandi provider IT in-house regionali d\u0026rsquo;Italia. Unico ingegnere sulle componenti di motore di ricerca, valutazione e composizione dei tool di un chatbot di assistenza ai bandi su scala nazionale distribuito per la Pubblica Amministrazione italiana. Stack: Python, Azure OpenAI, LangChain/LangGraph, Weaviate, PostgreSQL, FastAPI, Docker.\nMotore di ricerca ibrido per l\u0026rsquo;assistenza ai bandi su scala nazionale — 101.000 query in produzione in 6 mesi, latenza end-to-end media di 2,3 s\nProgettato e costruito da zero come tool di retrieval centrale di un chatbot distribuito a livello nazionale sui bandi pubblici italiani. Estrazione di entità basata su LLM con fallback deterministico, espansione relazionale su dizionari curati a mano (gerarchia geografica ISTAT, equivalenze dei titoli di studio, tassonomie istituzionali) dichiarati come regole di business in PostgreSQL. Il filtraggio ibrido combina match esatto, similarità trigram e retrieval denso; esposto come servizio FastAPI e registrato come tool dell\u0026rsquo;agente. Tasso di difetti nell\u0026rsquo;ordine di una segnalazione cliente ogni diverse settimane di traffico reale; suite di regressione interna di diverse centinaia di query annotate con tasso di superamento del 97%. Il motore di ricerca permette di scalare ad un numero elevato di bandi (attualmente circa 1000 tra aperti e non) senza alcuna degradazione di latenza, grazie al disaccoppiamento tra layer semantico di entity extraction (capire cosa vuole l\u0026rsquo;utente non diventa più difficile al crescere del numero di bandi) e query trigram+indici tradizionali sul layer dati Postgres.\nFramework di valutazione comportamentale e governance per sistemi LLM agentici\nValutatore task-oriented costruito end-to-end (PostgreSQL, Python, worker FastAPI, Docker, CLI shell). Scheduler basato su DAG con regole di dipendenza dichiarate in PostgreSQL; i worker interrogano una funzione di coda che risolve il DAG implicito al momento del dispatch, permettendo di regolare lo scaling (più o meno task in contemporanea) rispettando le interdipendenze e gli ordinamenti tra task collegati. LLM-as-a-judge con valutazione multi-rubrica specifica per task su tipi eterogenei: verifica con pseudo-ground-truth, conversazioni multi-turno con cambio di scope dinamico, controlli sul comportamento del motore di ricerca, test di qualità delle collezioni di embedding. Le probe di verifica dell\u0026rsquo;uso dei tool impongono un contratto di tool desiderato per ogni turno e segnalano le risposte che vengono prodotte senza invocare il corrispondente tool di retrieval.\nSuite di probe comportamentali: 167 scenari avversariali multi-turno che coprono resistenza a prompt injection e jailbreak, protezione dei confini informativi, equità e non discriminazione, integrità temporale, applicazione della policy linguistica, resilienza agli abusi e recupero della baseline dopo l\u0026rsquo;attacco. Tassonomia auto-progettata, derivata dalle interazioni in produzione.\nServer MCP unificato per la composizione dei tool dell\u0026rsquo;agente\nHo consolidato tool frammentati per singolo caso d\u0026rsquo;uso in un unico server MCP interno (STDIO), esponendo i tool dell\u0026rsquo;agente come composizioni di un insieme di primitive riutilizzabili (operazioni di memoria; operazioni di retrieval: ricerca semantica, filtro esatto sui metadati, scoperta dei metadati). Tool dichiarati in configurazione YAML, non in codice: nuovi tool dell\u0026rsquo;agente vengono rilasciati senza toccare la codebase.\nCSI-Piemonte — Senior Business Analyst — Cuneo, Italia set 2022 – set 2024\nAnalista sulle componenti geospaziali di sistemi IT regionali che amministrano oltre 1 miliardo di € di fondi UE/nazionali/regionali. Ho portato la regione sopra le soglie UE di geolocalizzazione, evitando il disimpegno parziale dei fondi. Analisi funzionale e tecnica, testing e reportistica quantitativa per il Sistema Integrato di Gestione e Controllo (SIGC) e i relativi requisiti di statistica finanziaria UE.\naizoOn Technology Consulting — Business Data Analyst — Cuneo, Italia nov 2016 – set 2022\nAnalisi funzionale e sviluppo PL/SQL (Oracle 11, incluso Oracle Spatial) per clienti del settore pubblico. Progettazione di casi d\u0026rsquo;uso, sviluppo e tuning di stored procedure, testing del software e reportistica basata su SQL per funzionari statali e autorità di regolamentazione UE.\nProgetti personali Assistente vocale AI — Python, FastAPI, OpenAI, Silero VAD, Twilio, React Native; VPS Hetzner — GitHub\nProgetto come unico sviluppatore end-to-end di un agente telefonico in lingua italiana che risponde alle chiamate al posto dell\u0026rsquo;utente, dialoga con il chiamante in linguaggio naturale e modula il proprio comportamento congedandosi in modo educato ma asciutto dai chiamanti con pattern da spam (la valutazione se \u0026ldquo;spam\u0026rdquo; deriva dal proprio giudizio e dai temi segnalati dall\u0026rsquo;utente). Notifiche in tempo reale sul contenuto della conversazione in corso vengono trasmesse a un\u0026rsquo;app mobile abbinata, dove l\u0026rsquo;utente può lasciar proseguire l\u0026rsquo;agente, prenderne il posto o riattaccare; dopo la chiamata partono trascrizione, classificazione ed estrazione di entità, e azioni strutturate come eventi del calendario che vengono proposti per l\u0026rsquo;approvazione dell\u0026rsquo;utente. Prevede due motori di conversazione in streaming intercambiabili (OpenAI Realtime più naturale e costoso vs. pipeline STT+LLM+TTS personalizzata circa 4x meno costosa) dietro un\u0026rsquo;interfaccia unificata. Trasparenza richiesta dall\u0026rsquo;AI Act europeo applicata nel saluto e al gate audio; conservazione dell\u0026rsquo;audio per 7 giorni conforme al GDPR. Uso di immagine Docker irrobustita (container non-root, filesystem in sola lettura), rate limiting Redis multilivello, CI/CD orientata alla sicurezza (Bandit, Semgrep, Safety, Trufflehog, Trivy).\nPubblicazioni e scritti Camilla, l\u0026rsquo;assistente AI che sfida la burocrazia nella PA — agendadigitale.eu, aprile 2026 — Scelte di architettura e governance dietro il chatbot nazionale per la PA: retrieval ibrido, pipeline di valutazione automatizzate, metodologia LLM-as-a-judge. [In uscita] Estensibilità architetturale degli assistenti AI tramite server MCP interni — agendadigitale.eu [In stesura] Red-teaming e valutazione comportamentale di sistemi di AI agentica in contesti regolamentati — agendadigitale.eu Optimal Control of an Ecogenetic Model — International Journal of Applied and Computational Mathematics, 2017 — Articolo peer-reviewed co-firmato. Formazione Georgia Institute of Technology — MSc Computer Science, specializzazione in ML — ago 2024 – apr 2027 (in corso) Media 4.0 su 6/10 corsi completati. Completati: Machine Learning, Artificial Intelligence, Knowledge-Based AI, AI for Robotics, Ethics in AI, Human-Computer Interaction. In corso: Natural Language Processing. Pianificati: Deep Learning, Reinforcement Learning, Graduate Algorithms.\nUniversità degli Studi di Torino — MSc in Matematica — 2014–2016 Voto finale: 110L/110 e menzione. Tesi: Levy Processes in Finance.\nUniversità degli Studi di Torino — BSc in Matematica — 2010–2014\nConservatorio \u0026ldquo;G. Verdi\u0026rdquo; di Torino — Diploma in Chitarra Classica — 2001–2008\nLingue: italiano (madrelingua), inglese (C2 — IELTS Academic Band 8.5, gennaio 2024).\n","permalink":"https://pietroferragamo.com/it/cv/","summary":"Curriculum Vitae","title":"CV"},{"content":"Assistente vocale AI GitHub →\nIn questo progetto ho sviluppato, end-to-end, un agente telefonico in lingua italiana che risponde alle chiamate al posto dell\u0026rsquo;utente, dialoga con il chiamante in linguaggio naturale e modula il proprio comportamento congedandosi in modo educato ma asciutto dai chiamanti con pattern da spam (la valutazione se \u0026ldquo;spam\u0026rdquo; deriva dal proprio giudizio e dai temi segnalati dall\u0026rsquo;utente). Notifiche in tempo reale sul contenuto della conversazione in corso vengono trasmesse a un\u0026rsquo;app mobile abbinata, dove l\u0026rsquo;utente può lasciar proseguire l\u0026rsquo;agente, prenderne il posto o riattaccare; dopo la chiamata partono trascrizione, classificazione ed estrazione di entità; all\u0026rsquo;utente vengono inoltre proposte azioni strutturate, come eventi del calendario, da approvare.\nStack: Python, FastAPI, OpenAI Realtime API, Silero VAD (PyTorch), Twilio, React Native, Redis, Loki, Grafana, dietro una configurazione Docker irrobustita e un reverse proxy Caddy.\nCosa lo ha reso interessante:\nDue motori di conversazione intercambiabili dietro un\u0026rsquo;interfaccia unificata: OpenAI Realtime (audio to audio, naturale e in grado di comprendere e rispondere contestualmente all\u0026rsquo;intonazione della voce umana) e una pipeline STT+LLM+TTS personalizzata (4 volte più economica, più complessa e potenzialmente fragile, a causa del bisogno di gestire i turni di conversazione, l\u0026rsquo;eco, pause e speech detection, ma anche più personalizzabile). I due approcci sono selezionabili per deployment tramite variabile d\u0026rsquo;ambiente e con interruttore per utente. Entrambi condividono lo stesso orchestratore di chiamata, la pipeline post-chiamata e il registro dei costi per singola chiamata.\nIl comportamento audio ha richiesto una messa a punto seria: gestione dei turni, soppressione dell\u0026rsquo;eco, rilevamento del barge-in, soglie del VAD. Tutto diagnosticato con test end-to-end su chiamate telefoniche reali, non su benchmark sintetici. Il DSP sottostante (Silero VAD tramite PyTorch, soppressione dell\u0026rsquo;eco basata su FFT, finestre di barge-in a doppia soglia) è reale.\nHo puntato molto sull\u0026rsquo;astrarre i tre costrutti principali:\nProvider di AI, per evitare lock-in ad un solo vendor, specialmente in uno scenario dinamico ed in evoluzione come quello audio-audio Provider di telefonia, per lo stesso motivo, evitare lock-in e offrire un\u0026rsquo;interfaccia più astratta e naturale al resto del codice Gestione della conversazione, per consentire la convivenza delle due modalità di gestione della conversazione (realtime vs stt/llm/tts) Ho prestato molta attenzione all\u0026rsquo;hardening e alla sicurezza ad un livello pronto per un rilascio in produzione, nonostante sia un repo sviluppato solo da me: filesystem Docker in sola lettura, capabilities ridotte, container non-root, rate limiting Redis multilivello (IP/chiamata/telefono/utente/dispositivo/globale) con finestre scorrevoli e circuit breaker. CI/CD orientata alla sicurezza: Bandit, Semgrep, Safety, pip-audit, Trufflehog, Trivy, Codecov.\nTrasparenza richiesta dall\u0026rsquo;AI Act europeo applicata nel saluto iniziale e al gate audio. Conservazione dell\u0026rsquo;audio per 7 giorni, conforme al GDPR.\n","permalink":"https://pietroferragamo.com/it/projects/","summary":"Cose che ho costruito","title":"Progetti"}]