AI engineer & full-stack developer · Köln

I build LLM pipelines, agents and the evals that keep them honest, plus the products around them.

Four years of building production SaaS end to end: Python/Django backends, React/Next.js frontends and LLM pipelines. Right now I'm one of two engineers on an AI talent-matching platform at a Swiss startup, building LLM extraction and retrieval pipelines, the evaluation harness that tests them, MCP agents and GraphRAG search. Self-taught; author of an open-source Obsidian plugin with 40,000 downloads.

40K
downloads of my Obsidian plugin
213
hand-written eval fixtures for a production CV pipeline
~300K
impressions for a data analysis on r/dataisbeautiful
5
languages I speak, from native to low intermediate

Work

Aug 2024 – today Kriens, CH · remote

Scrambl AG Full-Stack Developer (AI/LLM)

AI-powered talent matching. One of two engineers, next to the CTO.

  • LLM pipelines (LangChain, OpenAI, vision and PDF input) that turn CVs and job postings into a Neo4j knowledge graph and map entries to an ontology through vector search and LLM re-ranking. The matching algorithm itself runs as programmatically generated Cypher.
  • An evaluation harness that tests the CV pipeline stage by stage (extraction, normalization, retrieval recall, re-ranking, storage) on 213 hand-written fixtures in German, French and Italian, with repeated runs, baseline diffs and drift checks. It found three silent bugs on its first day. Extraction is now near 100% on the fixture set.
  • An MCP server (fastmcp) behind a LibreChat agent for searching candidates and jobs in natural language, and GraphRAG search (ApeRAG) over hundreds of pages of internal docs.
  • Whole modules from architecture to deployment: a talent portal with its own user role, recruiting project management, a CV-to-PDF export microservice. Docker across a six-server cluster, pip-compile, agentic development with Codex and Claude Code through AGENTS.md.

Python · Django · DRF · Next.js · Neo4j · PostgreSQL · LangChain · LangSmith · Azure AI Foundry · fastmcp · Docker

Dec 2022 – Jul 2024 Köln

Legalbird Junior Full-Stack Software Engineer

Legal tech. Team of two to five engineers.

  • A new case type (data sharing) end to end: landing page, case phases, message templates, insurance fee configuration, and multi-step form wizards for capturing cases.
  • A messaging system between lawyers and clients, external API integrations, and data and control flows synchronized between the back-office and client-facing services.
  • Large parts of the codebase migrated from JavaScript to TypeScript; fee calculation reworked with domain experts, the CEO and product.

PHP · Symfony · API Platform · React · TypeScript · Material UI · HubSpot API · BigQuery

May 2022 – Nov 2022 Köln

Ben Hur Logic GmbH Junior Software Engineer

Digital signage. One of two engineers.

  • An interactive map of partner locations and a configuration portal for an advertising-display backend; packaged and shipped Linux applications.

Python · Vue.js · Linux · CI/CD

2019 – today Self-directed

Open source & private projects full-time until 2022

Self-taught software development, open source and private projects.

Featured · AI agent

Book Research

A research agent that answers questions from the full text of public-domain books, and proves it: every quote in an answer is checked word for word against the passage it cites before the answer reaches you.

Book Research answering why Thoreau went to live in the woods, with three verified quotes from Walden
An answer with three verified citations from Walden: 18 research steps, 58 seconds.

What happens on every turn

  1. Recommend. A small model names specific public-domain books from memory. They're only hints: models get authors right far more often than titles, so a miss falls back to the author's other readable books.
  2. Search. Google Books for breadth, and the open libraries for readable texts: Project Gutenberg through a local SQLite FTS5 index of its 78,000-title catalog, and the Internet Archive's public scans through Open Library.
  3. Read. Up to five books downloaded in parallel, split into passages, embedded, and searched through pgvector with an HNSW index.
  4. Answer and verify. An output validator checks every quote against its passage (case, whitespace and curly quotes aside) and every [n] marker against the citation list, and sends the answer back to the model until it's right.

Built to be inspected

Between tool calls the agent writes a sentence or two about what it has, what's missing and what it looks for next. Those notes, every Thinking step and every search are kept under the answer with timings, and an animated "research machine" replays the run.

Evaluated, not eyeballed

A pydantic-evals suite runs real conversations against a mock catalog of invented books, so the agent can only answer from their text. Every topic has distractors: a novel with the topic in its title, poems, modern books without a full text. Deterministic evaluators score book selection and citations; LLM judges check that each quote supports its claim and that gaps are admitted, not filled from memory.

pydantic-ai · Django · PostgreSQL + pgvector · TanStack Start · AWS EKS · Terraform · Helm · GitHub Actions

Animated research machine diagram showing recommendations, catalogs, library, download and citation check
The research machine after a 27-step run on 18th-century beekeeping.
Book Research answer about 18th-century beekeepers with citations from three period manuals
Three manuals from 1716–1785, found, read and quoted (long s and all).

Featured · RAG & data engineering

A YouTube knowledge pipeline

I learn a lot from long-form video and forget most of it. This pipeline ingests channels, summarizes every video at several levels, and breaks it into aspects: statements, questions, predictions, references, recommendations, metaphors, contradictions, concepts, humor and fun facts. Every aspect is embedded, so a whole channel becomes something I can search, cluster and ask questions of.

935 statements from one podcast, clustered

Every dot is one statement aspect from Good Hang with Amy Poehler. Pick a theme to see where it sits; hover a dot to read it.

    k-means with 50 clusters on OpenAI text-embedding-3-small vectors, projected to two dimensions with PCA. Each cluster is named after the statement closest to its center. Taken from the cluster aspects notebook.

    From a channel to a database

    1. Collect. Channels and watch-later playlists through the YouTube Data API and yt-dlp, with chapters, metadata and transcripts.
    2. Summarize. Transcripts are sliced along chapters (or fixed windows), summarized in parallel, and each chunk yields typed aspects that are deduplicated and stored in PostgreSQL.
    3. Embed and cluster. Aspects get vectors for semantic search; across a channel, clusters surface the themes it keeps returning to, and an LLM writes a summary per theme.
    4. Land in Obsidian. Aspects are exported as Markdown notes, so they sit next to the rest of my notes.

    Python · yt-dlp · YouTube Data API · OpenAI · LangChain · PostgreSQL · scikit-learn · Obsidian

    Selected projects

    Map of Content Obsidian plugin

    Obsidian wants notes linked, not filed into folders. That scales well until all you can see of a note is its next layer of links. My plugin finds the shortest path from one central note to every other note and shows it as the note's context, with everything below it as a tree. Move one link and thousands of notes re-sort themselves.

    40,000 downloads and 180 GitHub stars.

    TypeScript · Svelte · graph search

    Map of Content side panel showing the path from the central note and a tree of descendants Map of Content example with multiple shortest paths

    Phantom Frame Web app · research

    A training game for rapid visual cognition. A large image flashes, then a small crop, often from the edge of the frame: was it part of the picture? The better you play, the faster the flashes. It trains iconic memory and peripheral attention, and logs every round for analysis.

    Currently the subject of a scientific study at the Indian Institute of Information Technology, Sri City.

    Next.js · React · Material UI · Django REST · PostgreSQL

    Phantom Frame how-to-play screen

    Gold makes its money overnight Data analysis

    Decades of LBMA AM and PM fixing prices for gold, platinum and palladium, split into what happens between the fixes. Buying at the PM fix and selling at the next AM fix grew gold at 13.8% a year since 1968; the intraday session lost 4.7% a year. Platinum's intraday index fell to 0.41 of its starting value.

    Python · pandas · matplotlib

    Gold overnight, intraday and buy-and-hold indices since 1968 on a log scale

    Toolbox

    AI & LLM
    LangChain, LangSmith, OpenAI API, Azure AI Foundry, MCP (fastmcp), RAG / GraphRAG
    AI methods
    LLM evaluation, vector search & re-ranking, embeddings, prompt engineering
    Languages
    Python, TypeScript / JavaScript, PHP, SQL, Cypher
    Backend
    Django, Django REST Framework, Symfony, REST APIs, microservices
    Frontend
    React, Next.js, Redux, Material UI, Tailwind CSS, SCSS
    Data
    Neo4j, PostgreSQL, BigQuery, pandas, ETL
    DevOps & Infra
    Docker, Docker Compose, Nginx, CI/CD, Linux, Azure, Sentry

    Languages

    • German native
    • English virtually native
    • Swiss German good comprehension
    • Mandarin Chinese low intermediate
    • Russian low intermediate

    Interests

    Whole-food nutrition and cooking, sports and exercise, language learning, music.

    Education

    Fachhochschulreife, Rheingymnasium Köln, 2006 – 2013. Self-directed software development since 2019.

    Get in touch.