Eleven friends, eight clubs, one football league.
At some point I started turning it into software.
fantacarriera.app is open to anyone. Click Esplora la Lega and you're in, no signup.
Hi 👋, I'm Matteo. I studied Computer Engineering at the University of Miami and I build things from Italy.
Almost everything here started the same way: I wanted something to exist, nobody was selling it, so I made it. Sometimes that's a small page that answers one question well. Sometimes it gets out of hand and becomes a whole game with a legal system.
Fantacarriera is fantasy football where your club doesn't get wiped every August. It carries multi year contracts, a wage bill, a stadium, a youth squad and a trophy cabinet that remembers. Sell a striker in October and you'll still be feeling it two seasons later.
Eleven of us run eight clubs in there. The rules are a document we vote on, and the app is what makes them real. That's honestly my favourite part of the whole thing: taking something eleven people argue about and turning it into something they can't argue with.
It runs on Next.js, FastAPI and Firestore, up on Cloud Run, and it has been played on since the 2025-26 season. Built in the evenings, over 1,500 commits so far. Here's the longer story. The source stays private, since a real league lives in there.
🎥 automated soccer vision
Point it at TV footage of a match and it works out who's who, which team they're on, who has the ball and how fast everyone is actually running in real metres. My Master's capstone: I fine-tuned the YOLO11x detector (0.86 mAP50 on held-out frames) and built the rest on top of an open-source tutorial pipeline, with tracking, kit-colour clustering and a homography to flatten the pitch.
📄 arXiv paper classifier
Reads a paper's title and abstract and guesses its field, across all 2.4 million papers on arXiv. TF-IDF and a linear SVM get 82% on eight balanced fields; on the raw data the class imbalance is the real problem, and the README shows why accuracy hides it.
🛣️ traffic network centrality
Asks whether the roads that matter mathematically in Florida are the ones people actually drive on. (Sometimes yes.)
🔀 Randomizer
I sort music more than any reasonable person should. There's no "rap" in my library: there's Italian rap and English rap, and then rap from the 2010s and rap from the 2020s. The electronic side splits into house, deep, techno, chill, and a few more I'd struggle to defend. The trouble is that my mood rarely fits inside one of them, and Spotify only shuffles one playlist at a time. So Randomizer takes several, lets me decide how they mix (an equal say each, 70/30, or taking turns), and plays them as one queue, while every playlist stays exactly the way I sorted it. It also keeps the same artist from playing twice in a row, and clears its temporary playlist away when I'm done. Runs entirely in the browser, no backend. Spotify only lets five accounts in, so there's a demo with sample playlists for everyone else.
🧾 gross to net salary calculator
Italian payslips are a black box. This one opens it: every line of the tax waterfall, each with a plain explanation and the actual law it comes from. It covers all 7.896 municipalities, because your comune quietly changes the answer. No build step, no dependencies, it's just a page that opens.
🕹️ digital wallet and 🐍 Snake on a DE1-SoC
From back when the fun was making hardware blink. A wallet protocol written straight onto TCP sockets, and Snake in C drawing straight into the board's VGA buffer through memory-mapped I/O.
and around them NumPy, pandas, Matplotlib and Jupyter · YOLO and Supervision for video
NLTK and spaCy for text · NetworkX and GeoPandas for graphs and maps
⚽ most of my projects turn out to be football in disguise. Fantasy leagues, match footage, tactics. I've stopped fighting it.
🗒️ I write the decision down before I write the code. There are eighty of those notes sitting behind Fantacarriera, and they're the reason I can still find my way around it.
🌍 Italian, English and Spanish, in roughly that order of confidence.
📫 teodea99@gmail.com if you want to talk about any of this.



