// Data Scientist & ML Engineer · Budapest

I build things that think.

Recommender systems, a Slay-the-Spire AI, and the full-stack apps that ship them. I care about building models that are clear, measured, and honest about what they do.

649Msimilarity pairs processed
16minto do it — 36x faster than Python
37kanime in the catalogue
18xAPI speedup, 4,667 ms → 264 ms

§ 01

Selected work

Anime Recommendation Engine

Tell it a show you loved and it tells you what to watch next. A Rust engine precomputed 649 million pairwise similarities across 37,000 titles in 16 minutes; fine-tuned 768-dimension embeddings, FAISS and Redis serve the answer in 4 ms when it is cached.

GoembeddingsFastAPIRedisDockerReact
649Msimilarity pairs processed

Slay the Spire bot

A bot that plays Slay the Spire as the Ironclad, talking to the game through CommunicationMod. A learning pipeline trains it; a C++ simulator is the referee, because a bot that misunderstands the rules learns the wrong game.

PythonPyTorchC++CUDA
A0Ironclad, ascension zero

Dailiverse

Daily puzzles with one rule: the server decides. It owns the puzzle, the date and your streak, and a single finished game is enough to keep the streak alive. Next.js on Vercel, Postgres behind it.

Next.jsTypeScriptPostgresVercel
livewww.dailiverse.com

Anidle

Wordle for anime characters: guess the hidden one, and every guess shows how close its series, species, hair, class and age are. About 120 characters, vanilla JavaScript, no framework.

JavaScriptno framework
120characters

§ 02

Working rules

264ms down from 4,667 ms

Profile before you optimise

The slow request was not the model's fault. A factory built a new 140 MB embedding object on every call. Initialise it once and the same request takes 264 ms.

<500MB down from over 12 GB

Change the architecture, not the loop

Holding 649 million similarity pairs in memory was the problem, so the fix was to stop holding them: stream the JSON as it is produced.

1ref a C++ simulator

Give the model a referee

The Slay the Spire bot is checked against a simulator. When the bot's picture of the rules and the simulator's disagree, the bot is the one that is wrong.

§ 03

Path so far

2024 — 25

Erasmus at Humboldt University, Berlin

Third semester abroad, AI and machine learning coursework.

2023 — now

MSc Computer Science

AI specialization at Eötvös Loránd University.

2023

Best Employee Award

Risk Management Division, Fundamenta Housing Savings Bank - recognized for outstanding performance in risk modeling

2021 — 22

Morgan Stanley Experience

Risk Analyst developing internal knowledge systems and database optimization for enhanced data accessibility

The full story

§ 04

Tools I reach for

§ 05

Take a guess

Four guesses is a good day.

Anidle gives you attribute clues instead of letters. Green is a match, amber is close, and the arrows tell you which way the age lies. This round is a sample; the real one is a click away.

Open the arcade