Portfolio

AI systems, shipped

I build AI that runs in production, not in a notebook — LLM features with real prompts, real error states and real users. Every project below is live, and most of them you can open and try yourself right now.

9
Projects shipped
4
AI systems built
7
Live in production
Flashcart — AI-tutored German flashcards built from your own notes
Featured · Live AI product

Flashcart

AI-tutored German flashcards built from your own notes

A German learning app that closes the gap between recognising a word and being able to produce it. It reads a learner's own Notion notes and turns them into structured, spoken flashcards — then grades what they actually typed. Answers are marked by an AI tutor rather than by string matching, so valid German variation is accepted, mistakes are tagged by type (word order, case, article), and the feedback explains the rule instead of just saying "wrong". That difficulty signal feeds a 5-box Leitner scheduler, so a card you struggled through comes back sooner than one you nailed. Built as two services — a Next.js web tier owning auth, data and scheduling, and a FastAPI service owning every prompt and model call — so the AI logic is testable on its own, and the model vendor is a single environment variable.

  • AI grading of free-text German — meaning and grammar, not string matching
  • Notes in, deck out: Notion pages become typed cards, no manual authoring
  • Leitner scheduling blended with a per-answer AI difficulty score
  • Two-service architecture: prompts tested in CI without an API key or spend
  • Vendor-swappable model layer, running free end to end by default

Product · Architecture · Full-Stack & AI Engineering · 2026

  • Next.js
  • TypeScript
  • FastAPI
  • Python
  • PostgreSQL
  • Prisma
  • LLM Integration
  • Notion API
  • Spaced Repetition

What I actually do with AI

“AI” covers a lot of ground. Here is the specific work behind the projects above.

LLM features in production

Model calls that live server-side, behind typed error states and sensible fallbacks — so a slow or failing model degrades the feature instead of breaking the page.

Prompt & output design

Prompts constrained to a fixed schema so responses stay parseable and renderable, and AI grading that judges meaning rather than matching strings.

Automation pipelines

Webhooks, bots and scheduled jobs that move work without a human in the loop — including a Telegram notification pipeline running at zero cost.

Architecture & testing

AI logic isolated into its own service so prompts are testable in CI without spending on API calls, and vendors swap behind one environment variable.

Client Support Portal — A ticketing system with an automated notification pipelineAI & Automation2026

Architecture · Full-Stack · Automation

Client Support Portal

A ticketing system with an automated notification pipeline

The support desk running live on this site. Clients sign in, open a ticket and follow the whole thread in one place instead of losing it in email. Behind it: Supabase Postgres with row-level security, so the database itself enforces that a client can only ever read their own tickets — not the application code. Notifications are automated end to end through a Telegram bot: a client links their account with a one-time deep-link code, and every reply is pushed to them instantly, at zero running cost. Built with Next.js server actions, so ticket writes never touch a client-side API key.

  • Next.js
  • Supabase
  • PostgreSQL
  • Row-Level Security
  • Telegram Bot API
  • Webhooks
  • Automation
AI Tech Stack Advisor — An LLM agent that scopes your project's tech stackAI & Automation2025

AI Engineering · Prompt Design · Full-Stack

AI Tech Stack Advisor

An LLM agent that scopes your project's tech stack

A production LLM feature you can run from this site's homepage: describe a project in a sentence and it returns a specific, structured stack recommendation — frontend, backend, database, hosting, and the reasoning behind each. Prototyped as a Langflow agent, then rewritten as a hardened Next.js route so the model call happens server-side and the API key is never exposed to the browser. The prompt is constrained to a fixed Markdown schema so the output renders reliably instead of drifting, and the route degrades gracefully with typed error states when the model or key is unavailable. Runs on Groq's Llama 3.3 70B — fast enough to feel instant, and free to operate.

  • LLM Integration
  • Groq
  • Llama 3.3
  • Prompt Engineering
  • Langflow
  • Next.js API Routes
  • Jest
M&A Design — Scandinavian furniture & interior online storeClient Work2025

Design · Build · Store Management

M&A Design

Scandinavian furniture & interior online store

A full e-commerce store for a Copenhagen interior brand. I designed and built the site on WordPress + WooCommerce, structured the product catalogue, and connected online payments and shipping so the Valby showroom could sell nationwide. I still manage the products and keep the shop running day to day.

  • WordPress
  • WooCommerce
  • E-commerce
  • Payments
  • Shipping
  • SEO
Poorent — Responsive car-rental platformClient Work2024

Frontend Development

Poorent

Responsive car-rental platform

A sleek, responsive car-rental platform built for smooth booking and a polished interface. Developed with Vue.js and animated with GSAP for a fast, tactile feel that holds up across every screen size.

  • Vue.js
  • SCSS
  • GSAP
  • Bootstrap
  • Vue Router
  • Axios
AI Text Generator — Brand-consistent copywriting on the OpenAI APIAI & Automation2024

Full-Stack & AI Engineering

AI Text Generator

Brand-consistent copywriting on the OpenAI API

A content-generation tool that turns a few brand details into ready-to-use copy — blog posts, ad copy, product descriptions and social captions. The interesting part is consistency: reusable brand presets are injected into the system prompt so tone and positioning survive across every generation, rather than each request producing a different voice. Built on Next.js with the OpenAI API called server-side, and streamed output so long-form copy appears as it is written.

  • Next.js
  • OpenAI API
  • Prompt Engineering
  • ShadCN
  • Tailwind CSS
Finance Dashboard — Analytics dashboard with live chartsWeb App2024

Frontend Development

Finance Dashboard

Analytics dashboard with live charts

A clean financial dashboard with interactive charts and a data-dense but readable layout — designed to make numbers easy to scan at a glance. Built with Next.js and Tailwind CSS.

  • Next.js
  • Tailwind CSS
  • Data Viz
Feedback Rating App — Full-stack reviews & ratingsFull-Stack2023

Full-Stack Development

Feedback Rating App

Full-stack reviews & ratings

A full-stack app for collecting and managing user reviews with live average ratings. React + Vite on the front, Express and MongoDB Atlas on the back, with full CRUD, toast notifications and real-time updates.

  • React
  • Express.js
  • MongoDB
  • Node.js
  • Context API
React Job Board — Dynamic job-listing frontendWeb App2023

Frontend Development

React Job Board

Dynamic job-listing frontend

A job-listing app built to put React fundamentals into practice — components, props, state and data fetching — wrapped in a responsive, dynamic UI. Built with React and Vite.

  • React
  • Vite
  • JavaScript

Have an AI project in mind?

If you have a process worth automating or an idea that needs an LLM behind it, I'll tell you honestly whether AI is the right tool — and then build it.