schauff.dev
--:--:-- UTC+0
↓ scroll to explore
§ 02 · Selected work

Things I've built.

A working archive of products and experiments. Some shipped, some still evolving.

01 / yaysim
Ongoing
/yaysim
International eSIM Service

International eSIM Service

Buying eSIMs for international travel is confusing and slow. I built a platform that gets you connected in under two minutes: multi-step configuration wizard, real-time provisioning, Stripe payments, and one-click eSIM install. Also handles internationalization (i18n) and rate limiting to keep things solid under load.

live
38,972
LOC
122
Components
25
Endpoints
25
Tables
SvelteKitSvelte 5SupabasePostgreSQLStripeTailwind v4Resendi18nBunGit
Open live ↗
04 / pai
Ongoing
/pai
Personal AI Interface

Personal AI Interface

Cloud LLMs are designed for one-shot chats, not for agents that compound value. PAI is a self-hosted agentic OS that persists knowledge across sessions: agents draft and send emails from my real accounts, schedule calendar events, update task managers, scrape pages for research, and run durable cron-driven checks that monitor ongoing situations and push notifications. It runs two frontier models side by side: Claude drives the agent loop while OpenAI's frontier reasoning model (via the Codex CLI) acts as an independent reviewer that adversarially challenges plans and audits diffs before I commit. Review is a loop, not a one-shot opinion: it runs in the background against the real git diff, then wakes the agent with the findings rather than waiting for me to read them. The agent fixes what holds, records why for what it rejects, and re-reviews carrying that rationale forward, since the reviewer is stateless and would otherwise re-raise resolved findings every round. Findings are rated on likelihood as well as impact, so "real, but not worth the guard in this deployment" is a legitimate outcome; and when a round's findings keep landing inside the previous round's fix, the loop reads that as evidence the design is wrong rather than the patch incomplete, and deletes the mechanism instead of hardening it. It runs until a round comes back clean or a round cap trips. Review chains are fenced to the task that authorised them: a new user message retires the chain and withdraws its queued findings. A defect found while doing something else no longer dies in the chat that found it. Any agent can park it against the project it belongs to, with the offending lines quoted rather than a file path that will have moved by morning. Parked findings queue for my approval, and a nightly worker takes one approved finding at a time into its own git worktree, fixes it, puts it through the same adversarial review loop, and stops before the push. Every failure path ends by asking for input with a legible reason instead of leaving a half-finished branch behind. Multimodal in both directions: streaming voice input transcribed locally on the Apple Neural Engine (NVIDIA Parakeet, no cloud round-trip), plus image and file attachments served from the backend with inline previews. Turns are steerable: a message typed while the agent is working is injected into the running turn rather than queued behind it. The core is a compounding context layer: typed persistent memory, topic dossiers, project ledgers, and researched ideas that live in SQLite and auto-surface to the next session based on relevance, with a weekly hygiene pass that prunes stale facts. Built on the Claude Code SDK for subprocess management, MCPs for system integration (Apple Mail, Calendar, Reminders, Playwright), and Bun for a tight, tightly-typed backend. Scheduled jobs and interrupted turns survive restarts; it runs as a launchd service and all data stays local.

29,326
LOC
20
Components
SvelteKitSvelte 5BunWebSocketClaude APIClaude Code SDKCodex CLIMCPSQLite +7
07 / memoreize
Ongoing
/memoreize
Book Summaries Web-App

Book Summaries Web-App

Reading a book is one thing, retaining it is another. I built a platform that generates structured book summaries and pairs them with spaced repetition so the knowledge actually sticks. Split into two applications: an SRS backend and a separate frontend that heavily utilizes server endpoints and SSR.

live
31
Tables
37
Functions
SvelteKitSupabaseOpenAIPostgresTailwindFlowbiteDokkuGit
Open live ↗
02 / jobdex
Ongoing
/jobdex
AI-Powered Job Aggregator

AI-Powered Job Aggregator

Job listings are notoriously hard to filter properly, and I kept hearing the same frustration from others. I built the MVP in a single weekend, then iterated it into a serious extraction pipeline combining traditional filtering, cloud models (Claude) and Google's Gemma models running locally in LM Studio to turn messy job postings into cleanly structured, filterable data. The pipeline is self-learning, improving extraction quality over time across different ATS platforms and clients.

live
8,394
LOC
32
Components
7
Endpoints
SvelteKitSvelte 5Drizzle ORMPostgreSQLClaude APILM StudioTailwind v4Valibot +4
Open live ↗
05 / commitme-v2
Ongoing
/commitme-v2
CommitMe · v2 (Ground-Up Rewrite)

CommitMe · v2 (Ground-Up Rewrite)

The original CommitMe hit its ceiling. The SPA architecture couldn't support the features users actually wanted, so instead of patching it I rewrote it from the ground up in SvelteKit with SSR, a completely redesigned UI, Claude-powered habit insights, crew-based social accountability, gamification with XP and leaderboards, and automated email digests. Knowing when to rewrite vs. iterate is half the battle. Streaks are the product's spine, so they get treated as one. Absence mode lets you buy days off for a holiday or an illness and keep the run intact, earned at a quarter of a day per day completed, because a tracker that punishes you for a week away teaches you to stop opening it. The streak itself is no longer a stored counter that gets incremented and hoped over: it is derived on read from the completion and absence history, so a retry, a timezone change or a daylight-saving repeat cannot inflate it, and there is exactly one writer in the database. It now has a public face as well as an app: a marketing site with the product's own UI rendered as live components rather than screenshots, plus the legal pages a German-hosted service needs.

live
51,628
LOC
123
Components
14
Endpoints
32
Tables
SvelteKitSvelte 5SupabasePostgreSQLClaude APITailwind v4ResendOneSignal +3
Open live ↗
08 / supptimize
Completed
/supptimize
Supplement Scheduling App

Supplement Scheduling App

Most people take supplements wrong. Bad timing, conflicting interactions, wasted money. I built a scheduling tool that designs your daily plan around ingredient synergies, negative interactions, and dosage limits. Snap a label photo and the AI extracts the full ingredient list for you.

4,265
LOC
19
Components
8
Endpoints
5
Tables
SvelteKitSupabasePostgresTailwindFlowbiteOpenAIDokkuGit
View demo ↗
03 / wohinwann
Ongoing
/wohinwann
Programmatic SEO Travel Platform

Programmatic SEO Travel Platform

Every trip has a better and worse time to take it, and a beach week and a city break want completely different weather. I built a programmatic-SEO content platform for the German travel market that turns picking the destination and month into an optimization you can actually solve, with real data: hundreds of statically generated pages combining 30-year climate normals, per-Bundesland Brückentage and Schulferien hubs, and month-by-month destination rankings, plus an interactive planner that ranks every bridge window by how many days off it buys per vacation day spent and then matches the best windows to destinations whose climate actually suits them.

live
20,479
LOC
58
Components
4
Endpoints
SvelteKitSvelte 5Drizzle ORMPostgreSQLClaude APITailwind v4Better AuthBun +2
Open live ↗
06 / commitme
Archived
/commitme
CommitMe · v1 (Original PWA)

CommitMe · v1 (Original PWA)

The original CommitMe: a goal-achieving PWA with bets, groups, streaks, and gamification, built as a Svelte SPA on Supabase. Later outgrown and rewritten from the ground up as v2.

live
34
Tables
97
Functions
SvelteSupabasePostgresTailwindFlowbitePush APIRealtimeDokkuGit
Open live ↗
§ 03 · About

README.md

main · last updated Sep 2026

# alexander-schauff

I'm Alex, a full-stack engineer based in Mönchengladbach, half an hour west of Düsseldorf.

What I actually do: take an idea from zero to a running product. Ideation, product shape, UI design, frontend, backend, infrastructure, deployment, and the months of maintenance that come after. Full-stack in the old-school sense: whatever the product needs, I build.

I work equally well on my own or as part of a team. When a project needs one engineer to carry it end-to-end, I can do that. yaysim, CommitMe, memoreize and jobdex are examples, all built and shipped solo. When it needs collaboration, design reviews, pairing, or mentoring, I slot in naturally. At WDW I'm doing both: driving the AI work across the company while building products alongside colleagues.

I've been building with LLMs since the GPT-3.5 days, and it's been my full-time focus since 2025. Privately: jobdex's extraction pipeline, pai's MCP-driven Claude interface, and an SEO pipeline. At WDW: internal tooling, RAG systems, and self-healing networks, forward-deployed inside a client's own stack, where a multi-agent assistant diagnoses customer infrastructure across their own systems. It reads today; approval-gated remediation is what we're building toward.

TypeScript, SvelteKit and Bun are my favourites. It's the stack that gets me from whiteboard to production fastest, and what I reach for first on any new project. The LangChain ecosystem fills in the AI side, and Python when the problem really calls for it. Earlier roots in web3 and enterprise Vue and Nest.

When I step away from the keyboard, you'll usually find me at the gym or on a plane somewhere around the world.

Currently

Driving the AI work at WDW Consulting. Shipped an internal resume tool from idea to production in a month, and forward-deployed on self-healing networks: a customer project where agents diagnose telecoms infrastructure across the client's own systems, on a fully self-hosted LangChain stack. Remediation, approval-gated, is the direction.

§ 04 · Experience

Roles & history.

A chronological ledger of the teams I've worked on and the tools I used at each stop.

// Responsibilities
  • - Driving the company-wide AI work, from proofs of concept through production systems
  • - Architecting and building agentic systems on the self-hosted LangChain ecosystem
  • - Designing RAG pipelines, prompt strategies, and HITL-gated automation flows
  • - Building full products end-to-end: ideation, architecture, frontend, backend, deployment
  • - Running local LLM inference for privacy-sensitive customer environments
  • - Evaluating and rolling out AI developer tools (Claude Code, Cursor) across the team
  • - Modernising legacy telecoms systems when AI work allows
  • - Integrating Microsoft Graph / Teams SDK for enterprise app contexts
  • - Camunda 8 certification for workflow automation
// Achievements
  • Shipped internal resume tool from idea to production in ~1 month

    → Replaced messy Word-based workflow with a centralised SvelteKit app. Normalised CV data, made it easy to manage across projects, and is already saving the team significant time. Stakeholders extremely positive, now used productively company-wide.

  • Forward-deployed on the self-healing networks customer project

    → In production inside the customer stack, rolled out company-wide to around 200 people, unifying Confluence, Jira, OTRS and Grafana behind one assistant. I own the Confluence agent end to end, built the Jira and OTRS integrations and the permissions layer, and I am the top contributor to the orchestrator that routes between them. On our Confluence benchmark query, time to a correct answer went from roughly 30 seconds to 6. I also built the eval harness that catches the quality regressions a latency metric hides.

  • Built the complete frontend for the company-wide AI chat interface

    → Gave every team at WDW access to internal AI capabilities through a polished UI.

  • Led the evaluation and rollout of modern AI development tools

    → Proposed and ran a two-sprint Claude Code trial, driving broader team adoption.

// Key projects
Self-Healing Networks (SHN)

Forward-deployed with the client's engineers, building inside their live stack on fully self-hosted models because the data cannot leave. One assistant instead of four systems: a LangGraph orchestrator that plans, fans out in parallel to five agent subgraphs over Confluence, Jira, OTRS and Grafana through MCP, then evaluates and refines before answering. Retrieval runs against their live systems rather than an index we maintain, so nothing goes stale. I own the Confluence agent, built the Jira and OTRS integrations and the permissions layer, and I am the top contributor to the orchestrator. Because GPU capacity rather than token cost is the constraint, most of the tuning went into avoiding LLM calls: heuristic routing before the planner, skipping evaluation when a single agent succeeds, caching reads. On our Confluence benchmark query, time to a correct answer went from about 30 seconds to 6. Every tool is read-only today; approval-gated remediation is in development.

PythonLangChainLangGraphMCPLocal LLMsOllamaDockerRAGAgentsEvalsLangfuse
Internal Resume Tool

Led ideation, product shape, architecture and the bulk of the SvelteKit implementation. Took the team from messy Word documents to a live, normalised, multi-project resume platform in about one month. Deployed on the internal Kubernetes cluster. Now running productively and saving significant time on every new proposal.

SvelteKitTypeScriptPostgreSQLTailwindClaude APIKubernetes
Company AI Chat Interface

Full frontend for an internal AI chat product, giving every team at WDW a single interface for their AI capabilities. Also deployed on the internal Kubernetes platform.

AngularTypeScriptTailwindMicrosoft Graph APIMicrosoft Teams SDKKubernetes
// Stack
TypeScriptSvelteKitPythonAngularReactLangChainLangGraphClaude APIOpenAILocal LLMsOllamaMCPRAGAgentsKubernetesDockerPostgreSQLMicrosoft Graph APIMicrosoft Teams SDKCamunda 8TailwindNode.js
§ 05 · Stack

Tools & technologies.

Languages, frameworks and services I reach for, filtered by where they sit in the stack.

13 items
TypeScript
TypeScript
Used in all recent projects
Frontend Technologies
Primary
4y · 15p
active Commercial
Svelte(Kit)
Svelte(Kit)
Primary framework for private and professional projects
Frontend Frameworks
Primary
4y 10m · 14p
active Commercial
Tailwind CSS
Tailwind CSS
Preferred CSS framework
Frontend Technologies
Primary
4y 8m · 10p
active Commercial
Bun
Bun
Preferred runtime. Still Node underneath, just a much nicer place to live.
Backend & Databases
Strong
2y 3m · 8p
active
PostgreSQL
PostgreSQL
Primary database for most projects
Backend & Databases
Strong
4y 3m · 7p
active Commercial
Supabase
Supabase
Go-to BaaS solution
Backend & Databases
Strong
4y 3m · 5p
active
Drizzle ORM
Drizzle ORM
Preferred ORM for type-safe PostgreSQL access in new projects
Backend & Databases
Strong
1y 8m · 2p
active
Claude Code
Claude Code
Daily driver since launch. Built a custom web UI for it (PAI), led team adoption at WDW. Expert at streamlining dev workflows with agentic coding.
AI & Agents
Primary
1y 7m · 10p
active Commercial
Claude API
Claude API
Primary LLM for agentic systems, pipelines, and product features
AI & Agents
Primary
2y 3m · 5p
active Commercial
A
Agents
Multi-agent systems in production: planner, parallel fan-out to specialised agents, evaluate-and-refine before answering, permission-gated tool access
AI & Agents
Strong
2y · 4p
active Commercial
R
RAG
Both designs in production: a vector-backed pipeline over a SharePoint corpus, and live retrieval straight against the customer systems through MCP, where an index of our own would only add staleness
AI & Agents
Strong
2y 8m · 4p
active Commercial
Docker
Docker
DevOps & Infra
Strong
6y 3m · 8p
active Commercial
L
LLM Evals
Built the eval harness for the self-healing networks assistant: retrieval correctness, content gates, value checks and an LLM judge, run against hand-authored golden cases in CI so a merge fails when answer quality drops. Speed and correctness are separate questions.
AI & Agents
Strong
5m · 2p
active Commercial
§ 06 · Contact

Get in touch.

Have a project, a question, or just want to say hello? Drop a note or reach me directly.

compose.message
typically replies within 24h
schauff.dev

Full-stack engineer building considered, durable web software. Always happy to chat about new projects.

Colophon

Set in Geist Sans & Geist Mono. Built with SvelteKit & Tailwind CSS. Hand-typed in Mönchengladbach.

system: pinging
branch: main ver: v2.49
© 2026 Alexander Schauff