Skip to selected work
Ljubljana, SI Open to senior engineering roles

Models,
streams,
systems

I'm Mark Žakelj, a machine learning and software engineer in Ljubljana. I train the model, build the service it lives in, and stay around for the part where it has to keep working.

Selected work

Three roles, in short
01 Feb 2025 → now

Real-time customer risk scoring

Sportradar · Machine Learning Engineer

Classification models that profile sportsbook customers. Latency abuse is scored on the live event stream; bot detection and sharp-customer detection run as daily batch jobs. Flagged accounts are limited automatically and the risk team is alerted. The batch models replaced earlier ones and cut false positives substantially.

Stack
Java · Apache Flink · Kafka · XGBoost · LightGBM · MLflow · DVC · AWS
Scale
Around 4 million customers profiled per day, per model
Labels
Positive-unlabeled training, semi-supervised pseudo-labeling, and Bayesian shrinkage to weight each label by certainty
Scope
Owned end to end: data, features, training, deployment, monitoring
FLAGGED · AUTO-LIMITED EVENTS ARRIVING
02 2023 → now

Digital signage fleet platform

Monitor · Freelance

Screens in retail stores across Europe, each one a Raspberry Pi with no engineer on site. A multi-tenant server manages the fleet, and the devices always initiate contact.

Server
FastAPI on PostgreSQL, Redis and S3, with a React operator console
Contract
Devices poll for commands and acknowledge results, and hold an SSE channel open for immediate pushes
Failure
410 decommissions and wipes local state, 401 stops but keeps it, 429 honours Retry-After
Ship
GitHub Actions, Docker, Ansible golden images, around 1,500 backend tests
03 2023 → 2024

Consistent multi-character generation

KatalistAI · ML Engineer

The generation algorithm behind the product: face detection, image embeddings and Stable Diffusion with IP-Adapters, chained so several characters stay consistent from one image to the next.

Stack
PyTorch · Stable Diffusion · IP-Adapters · Kubernetes
Serving
Custom autoscaling, load balancing and caching. Latency down 10% at flat GPU spend
Also
Owned the CI/CD pipelines and container builds

Earlier: data scientist at Lek-Sandoz from 2020 to 2021, building predictive models for pharmaceutical pill design and a web app for exploring them.

Projects

Code is linked on each

openpose-extrapolation

Self-supervised ML

When a pose detector drops joints, the rest of the skeleton constrains where they should be, so the training signal is already present in the data. No annotation required.

github.com/MarkZakelj/openpose-extrapolation →

ConsistentFacesSD

Generative imaging

Multiple characters in one image, with faces consistent across images. Face detection, an attribute matching procedure, and Stable Diffusion with IP-Adapters.

github.com/MarkZakelj/ConsistentFacesSD →

dine.si

Freelance · web app

A private chef booking platform: chat between clients and chefs, Stripe payments, and an admin panel for running the business.

dine.si →

fiddle-gateway.eu

Freelance · performance

A web platform for musicians. Rewriting the problematic SQL queries gave a tenfold speedup on data fetches.

fiddle-gateway.eu →

Inks on hand

Languages
Python · Java · TypeScript · SQL
Models
PyTorch · XGBoost · LightGBM · scikit-learn
Streams
Apache Flink · Kafka · MLflow · DVC
Backend
FastAPI · Django · PostgreSQL · Redis · S3
Frontend
React · Next.js · Tailwind
Ship it
Docker · Kubernetes · Ansible · GitHub Actions · AWS

Say hello

If you are building something that has to run in production and keep running, I would like to hear about it.

markzakelj@gmail.com →

MSc in Data Science and a BSc in mathematics and computer science, both University of Ljubljana. First prize at the 2022 Data Science Project Competition, for customer segmentation built with Triglav.

Set in Archivo Black and Courier Prime.
Printed in two inks that never quite line up.
Built with Astro. No trackers, no cookie banner.