Eight years in finance. Product Owner in banking. Self-taught full-stack developer.
Most developers bring one of the three — I work from the overlap.
Vienna, AT · yannick-oetelshoven.at · LinkedIn · Email
8 yrs business & finance · 10+ products built · Lighthouse 4×100 · 4 Django APIs, 913 tests
type Developer = {
readonly focus: string;
readonly stack: Record<"frontend" | "backend" | "ai", readonly string[]>;
readonly craft: readonly string[];
readonly principles: readonly string[];
readonly openTo: string;
};
const yannick = {
focus: "products, not just features",
stack: {
frontend: ["Angular", "TypeScript", "SCSS"],
backend: ["Python", "Django", "DRF", "PostgreSQL", "Redis", "Docker", "Firebase"],
ai: ["LLM integration", "workflow automation"],
},
craft: ["clean architecture", "accessibility", "performance budgets", "game dev"],
principles: [
"start with the user, not the code",
"AI is leverage, not autopilot",
"discipline beats talent",
],
openTo: "freelance product work",
} as const satisfies Developer;The longer story
I learned business before I learned to build. Eight years in finance — today as a Product Owner in banking — taught me how real companies operate, how regulated industries actually work, and, thanks to a long-running interest in psychology, how the people on both ends of a product think. The engineering I taught myself: frontend, backend, and the AI workflows that connect them — because I wanted to own products end to end instead of handing them off.
Products
| Project | What it is | Built with |
|---|---|---|
| Vibo · live | My biggest build — real-time team chat in the Slack/Discord family: channels, DMs, live sync, architected to extend to mobile and desktop without a rewrite | Angular · TypeScript · Firebase |
| Solvara · live | Echoes of the Wilds — a 2D platformer, hand-built: vanilla JavaScript, HTML5 Canvas, custom levels and art. The build I'm proudest of | JavaScript · Canvas |
| Portfolio · live | My site, engineered like a product — prerendered Angular, bilingual EN/DE, Lighthouse 4×100 on the live domain | Angular · TypeScript · SCSS |
| Pokedex · live | Early API work that still holds up — a Pokédex on the PokéAPI, vanilla JavaScript | JavaScript · REST |
Django services
| Project | What it is | Built with |
|---|---|---|
| Coderr | A freelancer marketplace: 23 endpoints for offers, orders, reviews and profiles, role-based permissions, image uploads. Built to the letter of a written contract — including where the contract contradicts itself | Django · DRF · Token auth |
| Videoflix | Video streaming: uploads convert to HLS in three resolutions on a background worker, JWT lives only in HttpOnly cookies and never in a header. 428 tests at 100% coverage | Django · DRF · Redis · FFmpeg · Docker |
| Quizly | A YouTube URL in, a ten-question quiz out — yt-dlp, Whisper and Gemini chained inside a single request, on a time budget I measured before I designed for it | Django · DRF · Whisper · Gemini |
| KanMind | A Kanban board API: boards with members, tasks with assignee and reviewer, comments. N+1-free aggregate counts and a 401/403/404 split the frontend can rely on | Django · DRF · Token auth |
Eight picks from 10+ builds. The four Django services were each built against a fixed frontend and a written API doc — the constraint that makes backend work feel like the real thing.
AI-driven products, built lean. I'm betting that a small, sharp team with AI as leverage beats a big one — and I'm building accordingly. The backend half is no longer the thin one: four Django services shipped this year, the newest of them containerised end to end. Next up: putting one of them on a live domain.
I take on freelance product work: web apps, AI-driven workflows, and full-stack builds that are meant to last. If you're building something and want a developer who treats it like a product, not a ticket — my inbox is open.
oetelshoven.dev@gmail.com · yannick-oetelshoven.at · LinkedIn
chore(mindset): a little better today than yesterday