MSc Artificial Intelligence for Science & Technology — Università di Milano-Bicocca, Milan. Reinforcement learning, deep learning, and LLM systems. Open to applied ML and ML engineering roles.
Three of the repositories below exist partly to document a mistake I found in my own work: a data leak that faked a perfect score, an evaluation protocol too noisy to support any conclusion I drew from it, and two benchmark instances that regressed against my earlier implementation. I report those because a result nobody has tried to break isn't a result yet.
| Repository | |
|---|---|
| ossp-aco | Ant Colony Optimization with iterated local search for Open-Shop Scheduling. A reimplementation of my bachelor's thesis, benchmarked over 19 Taillard instances: mean deviation from published upper bounds fell from 3.25% to 1.05%, and one instance came in below a bound that had stood since 1993. Schedules verified by an independent feasibility checker. Two instances regressed against v1; both are in the table. |
| industrial-defect-detection | CNN, ResNet and SE-ResNet built from scratch in PyTorch for biscuit defect classification. My first run reported 100% F1 — three architectures hitting a perfect score was the tell. The dataset's 4,900 images are 1,225 biscuits × 4 augmented variants, and my split had put copies of the same biscuit on both sides of the train/test boundary. Corrected to a group-aware split: 99.08% F1, one false alarm in 980 test images, with a regression test that fails if the leak ever returns. |
| fastapi-game-backend | Async FastAPI and PostgreSQL backend: passwordless phone/OTP authentication, JWT sessions, a premium tier, and an admin console. Admin rights are re-read from the database on every request rather than trusted from the token, so revocation is immediate. Deployed to a Linux VPS, serving a Unity mobile client. |
| orbit-wars-ppo | Hierarchical PPO for a Kaggle simulation competition, finishing ~1,300 of 4,730. Written up as a post-mortem: across 2M training steps, every decision I made — which checkpoint to keep, whether a run was improving, when to stop — used a metric with a standard error near 5.7, sampled eight episodes at a time. The reward function also had a defect, but that isn't why it plateaued. Nothing in the pipeline could tell a real improvement from noise. |
| neural-collaborative-filtering | NeuMF implemented from scratch — GMF and MLP branches trained jointly, plus a warm-start variant that pretrains each and fine-tunes the fusion. Evaluated with chronological leave-one-out and 1-vs-99 negative sampling, the protocol from the NCF literature rather than a random split. Beats SVD and user/item-CF on NDCG@10. (Team project; my role was the model architecture.) |
| synthgen | Synthetic tabular data from an LLM, where every row is validated against a Pydantic schema before it reaches the file. Concurrent batching to survive response limits, an avoid-list and rotating generation axes to fight mode collapse, and a report that tells you the duplicate rate and per-field cardinality instead of leaving you to find out later. CLI and library, 45 tests, no network needed. |
| booknow-assistant | LLM function calling with a decorator-based tool registry that generates its own JSON schemas, chained multi-round tool use, and fuzzy catalog lookup. The model client is injected, so all 26 tests run offline with no API key. |
Python · PyTorch · NumPy · pandas · scikit-learn · Stable-Baselines3 · Gymnasium · OpenAI API · Pydantic · FastAPI · SQLAlchemy · PostgreSQL · pytest · GitHub Actions · C++
Listed only where there's a public repository to back it up.
Based in Milan · Saeed.Sabzeh.80@gmail.com