Projects

Selected work

Two projects I can talk about in more depth than a CV line.

Personal project

töökratt

I wanted an assistant that reads the current job market and shows which skills are actually in demand, so people can re-skill against real postings instead of generic career advice.

I built a RAG pipeline: ingest listings from The Hub API, embed them in Qdrant, and ask questions over the index (FastAPI, Gemini 2.5 Flash) with citations. The first production request OOMed because the embedding model loaded in-process on a 512MB box. I moved embeddings to Qdrant Cloud Inference, benchmarked two free models on the real 1,015-document corpus, rejected one because its scores couldn't support a hard cutoff, and reindexed without taking the assistant down.

The assistant is live. I also run evals (unit, retrieval, generation) and Grafana/Loki, including an alert on prompt-injection attempts.

PythonFastAPIQdrantGeminiRAGGrafana

DevOps

athme

athme is a sports community app. People find games, host events, and pay. I took over DevOps when deploys were still manual and the stack lived on DigitalOcean.

I set up CI/CD for the different services so nothing ships by hand. Also database migrations and backups, plus a pipeline that distributes content to LinkedIn. I've been moving the infrastructure from DigitalOcean to AWS.

Deploys run in the pipeline. Backups and migrations are routine. The AWS move is underway, and the app just kicked off in Valencia.

AWSCI/CDDigitalOcean