LearnApp
Raw PDFs in, structured courses out — hybrid semantic chunking, learning-objective induction and lesson generation, hardened by a synthetic benchmark with 3,435 automated eval runs.
I work end to end. On the systems side that means backend LLM pipelines in Python and FastAPI, structured data processing, retrieval, and the evaluation frameworks that turn a promising prototype into something reliable — then the React and TypeScript interfaces on top.
I don't just wire up an API and call it a product. I own the messy middle: the schema, the generation stages, the eval loop, and the screen a user finally touches.
The rarer half is the generative and creative side. I come from Visual Computing, so I build the parts most LLM engineers don't: brand-generation systems, image and video pipelines, computer-vision models.
That combination — rigorous LLM engineering plus a real visual eye — is what I bring to a team building generative-AI products people are meant to love, not just tolerate.
A full-stack generative-AI platform that turns a restaurant or small business into a complete brand identity — menus, visuals, and marketing assets — through structured, multi-stage generation workflows. Built the backend services, the generation pipelines, and the guided React interface from scratch.
A live commercial platform for managing, displaying, and selling artwork. Implemented AI-assisted publishing — automated image staging, caption generation, and synchronized website/social publishing — on a hybrid PHP + FastAPI backend with SEO-focused frontend work.
Raw PDFs in, structured courses out — hybrid semantic chunking, learning-objective induction and lesson generation, hardened by a synthetic benchmark with 3,435 automated eval runs.
Our LLM pipeline generates a recipe built to your body and taste — with an AI-made photo — benchmarked blind against a conventional recipe-database baseline.
Upload a serve, get an annotated video back — pose estimation, phase detection, biomechanical feedback.
A rigid-body engine from scratch — SAT collisions, mass-spring bridge, Voronoi fracture. This tile runs its little sibling.
Open to AI · LLM · GenAI · AI-automation engineering roles — startups with a working product, and big tech. Based in Austria, targeting Switzerland · Austria · London. EU citizen.
Educational PDFs are unstructured walls of text. Turning them into courses means finding where topics actually begin and end, deciding what a learner should take away, and writing the material — work that doesn't scale by hand.
A four-stage pipeline behind a React + FastAPI app: pre-processing (Docling with PyMuPDF fallback, pdfminer heuristics) turns PDF bytes into structured paragraphs; hybrid semantic chunking combines heuristic pre-chunking with GPT-4 boundary prediction and merge/split post-processing; LO induction groups chunks into learning objectives with a dual-provider design — LLM grouping vs. a seeded k-means baseline — so the approaches can be compared head-to-head; generation writes lessons and quizzes per objective, with free-text answers graded against reference content.
Instead of eyeballing outputs: a synthetic benchmark generates multi-topic PDFs with known gold boundaries, then measures precision, recall and F1 across six controlled experiments (document length, chunk count, section variability, topic similarity, formatting noise, post-processing) — 3,435 automated runs over 139K+ pages.
A working meal-recommendation web app: enter your body stats and taste, get a recipe built to fit. Under the hood it doubles as a study — every user is silently assigned either our LLM pipeline or a conventional recipe-database baseline, and rates what they get blind. That comparison became a paper at the IntRS'23 workshop (Plangger, Rainer, Felfernig).
Biometrics (age, weight, height, gender, activity) feed a real nutrition engine — BMR via the Harris-Benedict equations, scaled to TDEE by activity factor (×1.2 to ×1.9), then split into macros (45% carbs / 35% fat / 20% protein). Those numbers, plus liked/disliked ingredients and meal type, become a structured prompt.
To find out whether an LLM actually helps, the app runs two recommenders behind one interface and assigns each user a random one (50/50 on page load), so ratings can be compared blind.
A conventional recommender: query a fixed database of thousands of existing recipes and return the closest match to the user's calories and ingredients. Reliable, but bounded by what already exists — and its stock photos rarely match the exact dish.
Our own pipeline builds a structured prompt from the user's nutrition targets and taste, has GPT compose a brand-new recipe around exactly those constraints, returns it as strict JSON (the model was primed on valid examples so parsing stays reliable), then paints a matching dish with DALL·E 3 — because an invented meal has no photo to borrow.
Users rated the meals they were served 0–5 across four axes, not knowing which recommender produced them. Our pipeline won every category:
Biggest gap was ingredients (+18%) — the LLM's freedom to build around exactly what a user likes, rather than match the closest thing in a database, is the whole thesis in one bar.
DALL·E images were slow and stylistically inconsistent, and the ingredient picker needed a lot of scrolling on mobile. The paper lays out the roadmap it opened: weekly meal plans with shopping lists, cook-from-your-fridge photo input, and a conversational ordering mode.
Upload a serve video; the pipeline runs pose estimation, detects the five serve phases (start, loading, acceleration, contact, finish), checks biomechanical markers like elbow angle at contact, and renders an annotated video plus structured feedback. Built as backend services on PyTorch and Flask, deployed on AWS — a background in competitive tennis meant the checks weren't invented at a desk.
No physics library: custom rigid-body dynamics with separating-axis collision detection, a mass-spring bridge, Voronoi fracture, motion blur, and runtime debug controls. It's the non-AI counterweight in the portfolio — proof the math and the rendering loop hold up without a framework underneath. The tile on the main page runs a miniature of it live; the repo has the full engine.