Reggio Emilia ·

Riccardo Bedogni

AI Engineer · Data & ML

Costruisco sistemi che trovano ciò che si somiglia, e misuro se hanno ragione.

Traiettoria

Informatica di formazione, AI applicata di mestiere. Il filo conduttore sono dati da abbinare, recuperare o prevedere, e la domanda su come si fa a sapere che la risposta è giusta.

  1. Mag 2021

    Software Developer Intern

    Max Mara Fashion Group · Reggio Emilia

    Una web app in Flask per monitorare come si distribuisce il tempo tra i progetti aziendali: schema relazionale, logica di business e KPI di efficienza.

  2. Set 2022

    Laurea Triennale in Informatica

    Università di Modena e Reggio Emilia

    Scienze e Tecnologie Informatiche, conclusa a luglio 2025.

  3. Mar 2025

    AI Engineer Intern

    OT Consulting · Reggio Emilia

    Un sistema predittivo sul potenziale di successo di nuovi progetti di business: modello scikit-learn, uno strato LLM che scrive report leggibili, servito con FastAPI. Il tempo di analisi è passato da ore a minuti.

  4. Giu 2025 →

    Software Developer & AI Engineer

    OT Consulting · Reggio Emilia

    Servizi backend in Python e API REST per clienti enterprise, funzionalità full-stack in Vue.js, SQLAlchemy e MySQL, ML e AI integrati nei progetti, e la migrazione di un'applicazione legacy su Google Cloud.

  5. Dic 2026

    Laurea Magistrale in Ingegneria Informatica

    Università di Modena e Reggio Emilia

    Curriculum Data Engineering & Analytics, iniziata a settembre 2025. Laurea prevista a dicembre 2026.

Lavori

Sei progetti, ognuno con la sua valutazione e i suoi limiti messi per iscritto. I numeri vengono dai repository, non dalla memoria.

Confronto appaiato degli errori di protocollo sull'AUC-PR con intervalli di confidenza al 95%. Un solo effetto è risolto (−8,2%) e nessuno raggiunge il +4,7% ottenuto cambiando modello.

Machine learning · Metodologia

Riammissione a 30 giorni nei pazienti diabetici

Una pipeline di ML clinico end-to-end e un esperimento per capire se il protocollo di validazione conta quanto il modello. Non è così, e il risultato negativo è la cosa più utile che il progetto ha prodotto.

AUC-PR sul test (prevalenza 0,114, lift 2,02×)
0,230
riammissioni intercettate nel 10% a rischio più alto
24,3%
  • Python
  • scikit-learn
  • pandas
  • SHAP

Heatmap di occupazione vista dall'alto attorno al cerchio di centrocampo, costruita da posizioni annotate a mano su tre frame di una clip aerea.

Computer vision

Tactical Football

Una pipeline di computer vision per il calcio, dalla detection al tracking, dall'assegnazione delle squadre alla calibrazione del campo fino alla vista dall'alto, con ogni fase misurata su una ground truth annotata a mano.

accuracy assegnazione squadra (32/35)
0,914
su Apple M4 (clip sorgente: 25 FPS)
~30 FPS
  • Python
  • YOLOv8
  • ByteTrack
  • supervision

Data integration · Progetto universitario

Schema matching tassonomico su OMOP-CDM

Un progetto universitario di data integration. Quando i codici clinici sono "quasi giusti", il confronto esatto perde colonne che stanno chiaramente insieme. Una similarità costruita sulla gerarchia SNOMED le ritrova.

  • Python
  • pandas
  • Valentine
  • OMOP-CDM

IoT · Computer vision · Progetto universitario

Smart Parking Premium

Il digital twin di un parcheggio. Una webcam sopra un plastico di carta aggiorna in tempo reale lo stato di ogni posto, e sopra ci sono un bot Telegram, una sbarra comandata dal GPS e una federazione B2B.

Machine learning · Explainability

HR analytics sul turnover

Perché i dipendenti se ne vanno? Feature engineering sui log dei badge, sei classificatori a confronto e SHAP per trasformare il modello in azioni per l'HR.

In arrivo Visualizzazione · RAG

RAG Pipeline Visualizer

Una visualizzazione animata di una pipeline RAG, dalla query ai chunk, dai punteggi al reranking fino alla risposta, con backend live e una modalità replay per ripercorrere un'esecuzione passo per passo.

Link alla demo in arrivo

Ricerca

Progetto universitario · Schema matching e data integration

Due ospedali, un paziente, codici leggermente diversi.

Gli ospedali registrano le stesse informazioni in database diversi, con nomi di colonna diversi. Per unirli bisogna prima capire quale colonna dell'uno corrisponde a quale dell'altro: è lo schema matching. Un modo comune per farlo è guardare i valori: se due colonne contengono le stesse cose, probabilmente significano la stessa cosa.

Con i dati clinici è più difficile. Le diagnosi sono codici presi da enormi vocabolari medici, e gli errori di codifica reali raramente sono casuali. Qualcuno registra "insufficienza renale cronica, stadio 5" quando era stadio 4: un concetto vicino, non un refuso. Per un confronto esatto quei due codici sono diversi quanto "malattia renale" e "frattura del braccio".

Il progetto tratta il vocabolario per quello che è, una gerarchia: due codici sono simili se sono vicini nell'albero. Ho costruito un modo per generare errori realistici "di prossimità" su dati OMOP-CDM e un matcher che confronta i valori per significato e non per grafia, e ho misurato entrambi contro il confronto esatto sul framework di benchmark Valentine.

Il codice dietro →

Metodo

Come affronto un problema di dati o di ML. Non sono regole lette da qualche parte: ognuna viene da un errore che ho fatto o scovato nei miei progetti.

  1. Decidere prima cosa significa "giusto"

    Scelgo la metrica in base alla decisione che deve supportare, prima di toccare un modello. Con l'11% di positivi l'accuracy premia il non fare nulla: nel progetto sulle riammissioni la metrica è l'AUC-PR e la soglia viene dal costo atteso.

  2. Cercare gli errori silenziosi nei dati

    I bug costosi non fanno crashare niente. Un "None" che vuol dire "esame non richiesto", pazienti che non possono essere riammessi, un parser che restituisce in silenzio 114 unità invece di 586. Li cerco prima di addestrare qualsiasi cosa.

  3. Costruire la baseline debole

    Una baseline semplice dice quanto vale la parte furba. Nel progetto RAG ha mostrato che retrieval e accuratezza finale non vanno di pari passo, cosa che altrimenti mi sarebbe sfuggita.

  4. Misurare l'affermazione, non l'impressione

    Confronti appaiati, intervalli di confidenza, soglie calibrate su dati separati. Se un disegno non può rispondere alla domanda, si cambia il disegno. È così che "il protocollo conta" è diventata un'ipotesi rifiutata.

  5. Scrivere i limiti accanto ai risultati

    Ogni progetto finisce con ciò che non sa fare. Chi legge un MOTA negativo merita la spiegazione nello stesso punto del numero.

Come uso l'AI nel lavoro

Uso Claude Code ogni giorno come compagno di programmazione: per leggere codice che non conosco, impostare le parti noiose, scrivere test e mettere alla prova il mio ragionamento. Le decisioni restano mie: cosa costruire, cosa misurare, quando qualcosa non torna.

In pratica vuol dire modifiche piccole e rilette invece di grandi blocchi generati, chiedere esplicitamente i casi in cui le cose si rompono e verificare i numeri sulla fonte invece di fidarmi di un riassunto. Anche questo sito è nato così, con ogni cifra controllata sui repository.

  • L'AI accelera la scrittura, non il giudizio.
  • Se non so spiegare una riga, non va in produzione.
  • Le funzioni basate su LLM si valutano come qualsiasi altro modello.

Strumenti

Quello che uso nei miei progetti e al lavoro.

Linguaggi
  • Python
  • JavaScript
  • SQL
  • Java
  • C++
  • HTML e CSS
ML e dati
  • scikit-learn
  • pandas
  • NumPy
  • XGBoost
  • SHAP
  • PyTorch
  • Ultralytics YOLO
  • OpenCV
  • ByteTrack
Retrieval e LLM
  • RAG
  • Sentence Transformers
  • ChromaDB
  • BM25
  • Reranking con cross-encoder
  • LangChain
  • Claude API
  • OpenAI API
  • Gemini
Backend e database
  • FastAPI
  • Flask
  • API REST
  • SQLAlchemy
  • Pydantic
  • MySQL
  • SQLite
  • BigQuery
Frontend
  • Vue.js
  • Streamlit
  • Node.js
  • Astro
Cloud e strumenti
  • Google Cloud (Cloud Run
  • Cloud SQL)
  • Git
  • Linux e Bash
  • pytest
  • Jupyter
  • LaTeX
  • Claude Code
  • Agile / Scrum

Contatti

Parliamo di dati che devono avere senso.

Disponibile per parlare di ruoli in AI engineering e data/ML, collaborazioni di ricerca o un progetto su cui ti serve un secondo parere.