Leon Bubova · Software developer · Cologne

Payments backends at scale.
Now products with AI in the loop.

Three years running tokenized-payment services inside the Klarna App (500+ merchants, 40M+ users, on-call included), then subscriptions at Ivy. Since 2025: a voice dictation app with its own German speech model, a Kubernetes break/fix wargame, bots, agents, and the bare-metal infra it all runs on.

DWG LB-2026 · REV C SCALE 1:1 MATERIAL: TS · PY · KT · SH TOL ±0.1 $ wg level 1 pods: CrashLoopBackOff $ kubectl set env … ✔ LEVEL SOLVED ~6 yrs shipping full stack ⌀ voice ⌀ 27M params (ASR) z 3×2 (ts · py · kotlin · shell · react · node)
Annotations are illustrative, not the developer's actual dimensions.
TypeScriptNodeReact / React NativeElectronKotlinPythonClaude APIVoxtral / MoonshineSupabaseDocker · k3dHetzner · TailscalePlaywrightESP32 · BLEPHP · Laravel · Symfony
01 · What I do

Product-shaped software, not tickets

Idea → prototype → users, usually alone, usually in a week. I keep the stack small so nothing blocks the next iteration.

  • Apps: Android, desktop (Electron), web
  • Bots & automation: Telegram, mail triage, scraping
  • AI: agent harnesses, fine-tuned ASR, LLM eval
02 · How I work

Tests, resets, and a written record

Every level in kaputt resets clean. Every deploy in soft-landing is blocked by Playwright. Every infra step is rehearsed in the cloud before touching metal.

  • “Done is better than perfect” — then verify it
  • Docs written while building, not after
  • Claude Code as a daily pair, harnesses of my own
03 · Grounded in

Production, then side projects

Weekly on-call for payment services at Klarna taught me what abstractions cost at 3 a.m. Subrosa is used daily by early-access testers, Hausbert found the flat I live in, Libertas runs a client's inbox.

  • Available for freelance work, day-rate or project
  • German / English, remote or Köln
Frontier chart

Stack over time

What I was actually shipping with, per year. Filled points are things still in production.

AI / ML Infra Mobile Web TS PHP 2020202120222023202420252026 paper-handsklimfab · os-cillation formate · two-pizzashausbert · salieri · kaputt react-nativeshush (kotlin) hetzner · tailscale · restic claude apimoonshine-de · harness
AI / MLInfraMobileWeb / TSPHP (retired)
Part gallery

Projects

Click a part for its spec sheet: what it is, how it works, the hard part, a live demo. Filter by material.

Revision history

Timeline

From working student to on-call owner to my own products.

Task breakdown

What you can hire me for

Four matched capabilities. Each has at least one shipped example above.

T1

MVP in a week

Web, Android or desktop. Auth, payments, a backend that doesn't fall over. You get a URL, not a deck.

→ Subrosa, soft-landing
T2

LLM features that hold up

Agents, structured extraction, transcription, evals. With rate limits, fallbacks and a bias check.

→ Hausbert, Libertas
T3

Automation & bots

Telegram, mail, scraping, n8n. Documented so your team can run it without me.

→ Libertas, Kummerkasten
T4

Small infra, done properly

A server that's locked down, backed up, and restorable. Rehearsed before it touches production.

→ infra, kaputt
Live

Recent activity

Pulled from the public GitHub events API on page load. If this is empty, I'm either on holiday or the rate limit hit.

Loading…
Backlog

Sections & gimmicks to add next

Things this page could do that a PDF can't. Marked by effort.

Dictation demo SA mic button using the Web Speech API. Visitor speaks, text appears. Then a line: “Subrosa does this in every app, offline.”
kaputt in the browser MA fake terminal: wg level 1 prints an incident, a few commands solve it. Teaches the product in 30 seconds.
/now page SWhat I'm building, reading, and available for this month. Dated. Linked from the header.
⌘K command palette SJump to projects, copy email, switch design version. Signals “I use tools like this” without saying it.
Commit heatmap SGitHub-style contribution grid rendered from the events API, or your own habit-tracker repo reused.
Build-in-public log MWeekly entries: numbers, what broke, what shipped. Feeds LinkedIn and the site from one Markdown folder.
Uses page SHardware, editor, dotfiles, the Hetzner box, the Claude Code setup. Link straight to the dotfiles repo.
Cologne footer SLocal time, weather, and “next Gradient meetup” pulled from a JSON file. Anchors you as the Köln AI person.
Model card for moonshine-de MWER per iteration as a chart, audio sample, and a “try German dictation in the browser” ONNX demo.
Konami / typed easter egg SType sudo anywhere and the page replies “Scared of pointers and doing the dishes.”
500+merchants served
44public repos
6+years shipping
27Mparams fine-tuned
3bots in production
6 sbackup restore RTO