Full-stack & AI engineer · Brno, CZ
I build robust software, and AI tooling is why it ships in days.
Typed, tested, reviewed code — built through an AI-assisted workflow that turns the iteration cycle software usually measures in weeks into hours or days.
- role
- Full-stack & AI engineer
- depth
- Data model to interface, shipped and running
- focus
- LLM features with typed, testable output
- stack
- TypeScript, Next.js, React, FastAPI, Postgres
- based
- Brno, CZ — CET
- status
- Open to new work
What each one actually is
All projects →Work Planner
A collaborative kanban board, JIRA-board style: multiple boards per user, keyboard-operable drag and drop, due dates, and OAuth-only sign-in.
Postgres Drizzle + Neon · 291 tests across the stack
Trader
A trading terminal with imaginary money: prices stream in twice a second, and an assistant that can read your portfolio and place the trades for you.
2/sec price ticks streamed · 846 tests across the stack · Lévy closed-form price clock
Personal Knowledge Base
A knowledge base you can ask questions of. Every answer points back at the document it came from, and if your own notes do not answer the question, the app says so instead of guessing.
170 tests, no test framework · 3 retrieval arms, fused by rank · 4 answering providers behind one seam
My Movies
A personal streaming catalogue pulling from TMDB, presented as a Netflix-style browsing UI with linkable search and a watchlist behind sign-in.
9 browse rows · Tag-based cache revalidation · Linkable search lives in the URL
Games DB
A personal PC games catalogue that indexes Steam's entire storefront into Postgres, so browsing, filtering, and search never touch Steam's own rate-limited API.
245,025 appids indexed · 14,621 hydrated with detail · pg_trgm trigram search
Legal Document Creator
Draft a legal agreement by chatting. Pick one of 11 Common Paper templates, answer in plain language, and watch the document fill in live.
11 Common Paper templates · 161 tests across the stack
Skills, with receipts
Every skill →Databases and data
Postgres schema, indexing, migrations | |
Drizzle ORM typed schema, generated migrations | |
Full-text search pg_trgm trigrams, and generated tsvector columns indexed twice — simple for identifiers, english for prose | |
Background work a monthly cron job, advisory-locked queues, backfill with retry and backoff, durable partial progress |
AI and retrieval
Retrieval-augmented generation three arms — vector, identifier and BM25 prose — combined by reciprocal rank fusion; nothing retrieved refuses the question instead of guessing at it | |
Vector search pgvector with an HNSW cosine index over 384-dimension embeddings computed in-process, so indexed text never leaves the container | |
LLM integration four answering providers behind one interface, with per-user and deployment-wide spend ceilings checked before a call can cost anything | |
Prompt injection defence retrieved text travels inside tags the application writes, tag-shaped spans are escaped rather than stripped, and citations are validated before the first word of prose streams | |
PII anonymisation names, e-mail addresses and phone numbers become placeholders before anything crosses a network boundary; the mapping back lives in the request and dies with it |
Backend and integrations
FastAPI typed routes, service layer | |
Third-party APIs Steam, TMDB, OpenRouter, with tag-based cache revalidation and an on-demand purge endpoint | |
Auth OAuth sign-in and sessions, and OIDC against a Keycloak realm with role claims read from the token |
Frontend
React and Next.js App Router, server components by default | |
Streaming UI server-sent events for live price ticks, NDJSON for token-by-token answers | |
Accessible interaction drag and drop that is keyboard-operable, with the ARIA roles the pattern actually calls for | |
Design systems Tailwind v4, semantic tokens, no dark: variants |
Delivery
Testing unit, integration and Playwright end-to-end — and 170 tests on the Node runner alone, with no test framework installed | |
Docker multi-stage builds, one origin, no CORS layer; a compose file that brings up the app, its database and an identity provider together | |
CI/CD typecheck, lint and both suites on every pull request |
Track record
Full history →- 10/2025 – 05/2026
Frontend Developer
Three Pillar Global
Senior backfill covering an extended leave. Built and maintained features in a React/TypeScript codebase with Redux and React Context, investigated production issues through AWS CloudWatch and dBeaver, and used agentic coding tools to speed up delivery, refactoring, and debugging inside an established codebase.
- 03/2023 – 09/2025
Team Leader / Frontend Developer
Notino
Led a frontend team with a dual mandate: people management and technical delivery. Worked closely with the product owner on on-time delivery, and drove frontend strategy across the cluster — clearing tech debt and putting the right people on the right tasks.
- 09/2020 – 02/2023
Frontend Developer
Kinalisoft
Sole frontend developer for the full FE of a machine monitoring platform built for Mycronic. Delivered MyCenterAnalysis, which won an award at the Productronica exhibition.
- 01/2019 – 03/2020
Frontend Developer
Axon Garside, Manchester UK
Worked alongside an in-house full-stack developer on polished frontend work, building single-page applications primarily with React, plus vanilla JavaScript, HTML5, and CSS3.





