Four projects I built, deployed, and still run myself. Everything else lives on GitHub.
A tea brewing companion. Pick a tea to get a timer and brewing guide, or describe one you don't recognise and it's identified from a library of 84. I built the RAG retrieval directly on Qdrant and local embeddings instead of using LangChain, because I wanted full control over chunking and scoring without a framework in the way. It's a PWA, so it works offline at the tea table.
A translator that rewrites everyday Finnish into Easy Finnish (selkokieli), the simplified register used by roughly 750,000 people in Finland with language processing difficulties. It runs as a web app and as a Chrome extension. I built the backend with FastAPI to keep it a thin, predictable wrapper around the LLM call, and I host it on my own VPS so I'm responsible for latency, cost, and uptime.
The server that runs my automations and background jobs. It's the plumbing behind the other projects. Self-hosted n8n on a Hetzner VPS, orchestrated by Coolify with Traefik routing and Cloudflare in front. I went self-hosted instead of a managed platform so I could own the secrets, the workflow history, and the cost ceiling. Ops is part of the job, not something I outsource.
A black-and-white photography portfolio that lays itself out. You drop in photos and the page composes them for you. Under the hood is a TypeScript layout engine that reads each image's aspect ratio and places it into one of a few composition blocks (hero, pair, asymmetric, chapter break). I chose a typed engine over a CMS grid so the editorial rhythm is deterministic.