Loading…
Pick any case study below to read the brief, the build and the measurable result the client cared about.
Hybrid movie recommender powered by Spark MLlib ALS, BigQuery, Supabase, and TMDB.
A cloud-based movie recommendation system built on MovieLens 32M ratings. The project includes a full GCP big-data pipeline, BigQuery analytics, Databricks Spark processing, Spark MLlib ALS model training, Looker Studio dashboarding, and a live Next.js portfolio app deployed on Vercel. The live app serves ALS-powered collaborative-filtering recommendations with TMDB as a cold-start fallback.
A Chrome extension that turns LinkedIn into a CRM
Built for a B2B agency in Berlin. LinkReach overlays an outreach inbox on top of LinkedIn so SDRs can sequence, track, and reply without leaving the page.
Stripe + Squarespace, glued together properly
A non-profit needed recurring + one-off donations with country-specific receipts. We built a custom checkout layer on top of Squarespace using Stripe Elements and a tiny serverless backend.
A 7-step intake form that converts
A medical clinic on Squarespace needed a HIPAA-aware multi-step intake form with conditional logic, file upload and a CRM hand-off. Native Squarespace forms don't do any of that.
A scrubbed-in surgical training environment
WebGL operation theatre with interactive instruments and step-based procedure walkthroughs. Used as a study aid for surgical residents.
OCR in the browser, no upload required
A privacy-first OCR scanner — the entire pipeline runs client-side using Tesseract.js compiled to WASM, so no document ever leaves the user's machine.
Spin up a templated repo from a form
A small tool that takes a project description and creates a fully-templated GitHub repo with README, license, CI and labels — useful for teaching workshops.
Drag-and-drop HTML for non-coders
A no-code HTML builder used in coding bootcamps to teach beginners how layout maps to markup.
Interactive notebooks for a course
A Next.js course site with embedded notebooks and progress tracking, replacing a Notion table-of-contents that wasn't pulling its weight.