/// portfolio

All projects.

Production ML, automation, research, product. A few of them I built purely for the fun of it. Open any card for the full story, numbers and all.

Production ML & data
Confidential client

Real-time recommender for Amazon sales

My main project: a system that merged our marketplace data with public sources and told each salesperson when and where to act, delivered entirely over email: briefings out, commands back in the replies. It found money in the noise the reps had no time to mine.

Removed ~4,000 manual work-hours a year; real-time guidance for reps across several brands in 6 countries
Pythonscikit-learnSeleniumETLBI
read case study →
Confidential client · 2019–2020

ML lead-scoring & sales-strategy recommender

An ML tool that scored sales opportunities and suggested the margin to quote for the odds a rep wanted, tuned to the rep and the client. I validated it live against the sellers' own predictions, and it won executive backing for AI.

Deployed in 3 countries; executive sponsorship secured
Pythonscikit-learnpandas
read case study →
Confidential client

Making sense of customer feedback with NLP

I met the head of quality while networking and told him I could turn six years of messy NPS comments into something useful, fast. Thousands of free-text answers, a dozen languages, shop-floor spelling. I built the pipeline that sorted them into praise and criticism, by theme and by country.

Year-over-year view of praise vs. criticism by theme and country, searchable down to the comment
PythonNLTKspaCyscikit-learnpandas
read case study →
Automation & commercial
Napolicaffe · 2026–present

The e-commerce that runs itself

I built this coffee shop's online store from scratch, the family sold it in 2024, and in 2026 the new owners hired me back to automate it with AI. Pricing and restocking now run on their own; support and marketing are getting there.

The cost-watch caught a +34% supplier overcharge and the money came back; pricing and restocking now run unattended, support and marketing are next
PythonforecastingShopify API
read case study → live ↗
Napolicaffe · 2022–2024

Building a CHF 500K+ e-commerce from scratch

My father had the coffee idea, and the customers weren't coming. I moved the shop to Shopify, took over the marketing, and grew it past CHF 500K in its first year.

CHF 500K+ first-year revenue · days-out-of-stock to zero · +70% campaign engagement · +30% orders after a support rebuild
PythonProphetpricing modelsShopify
read case study → live ↗
Confidential client

Automating advertising-compliance proof

It started as a networking chat with a sales director. His team was screenshotting live ads by hand, hundreds a day, to prove to advertising partners that the campaigns they'd booked were live. I built the tool that captured that proof and checked it against the plan.

A major relief for the audit team; proof searchable on demand
Pythonweb scrapingSelenium
read case study →
Confidential client

Untangling multi-table spreadsheets

A finance manager who looked after the marketplace sales numbers kept receiving spreadsheets that crammed several separate tables onto one page. I couldn't change how the files arrived, so I wrote a parser that finds each table and lifts it out on its own.

Saved one colleague 3–4 hours every week, with ~10 more facing the same problem to scale to
PythonPandas
read case study →
Napolicaffe · 2022

Rebranding Napolicaffe

A 2022 rebrand of the family coffee shop: from a faceless, template-built storefront to an identity with a point of view and one promise, love the customer. Brand thinking picked up at P&G, put to work on a small business.

A clear identity + a 'love the customer' value proposition (by recollection: ~20% lower bounce rate, slightly higher conversion, not formally measured)
brand identitymarketing
read case study → live ↗
Research
IDSIA · 2017–2019

Published optimisation research + real systems

I co-authored an IEEE paper (SCIS&ISIS 2018) on the Probabilistic Orienteering Problem: routing under uncertainty, where a stop might be gone by the time you reach it. We trained a neural network to predict how much Monte Carlo sampling a candidate route needs.

Published a paper
C++Neural networksMonte Carlo sampling
read case study →
IDSIA · 2017–2018

Rock, paper, scissors: the classroom is the dataset

Published at EAAI-18, this classroom activity turns a room into a live dataset: students photograph their own hands, an Android app and web service pipe the shots to a server, and a convnet learns them in front of everyone, overfitting and recovery and all. I built the app, the web service and the model-serving glue.

Ran classrooms of 10–20 people end-to-end (crowd photos in, live predictions back) behind an EAAI-18 published activity
Java (Android)RetrofitPythonKerasREST
read case study → code ↗
IDSIA · BSc thesis · 2017

Real-time drone trajectory tracker (ROS)

A ROS and Qt tool that replays a drone's real flight against its planned path, live, so you can see and measure how far it strays. Built for a 2017 study putting an ultra-wideband positioning system through real flight trials, where GPS is hopeless between buildings. Rebuilt here as an in-browser demo.

GPS wandered by metres; UWB held to decimetres, measured live in the field
PythonROS (rospy)PyQt5RVizPyQtGraphLinux
read case study →
MSc thesis · 2019–2020

Defect detection on metal surfaces

A supervised classifier for these surface defects already existed and worked. My MSc thesis asked a harder question: could an unsupervised model catch the same defects without ever being shown a labelled one? Autoencoders learn what a good surface looks like and flag whatever they can't reproduce.

A detector that learns what 'normal' looks like and catches defects it was never shown
PythonTensorFlow/KerasNumPyscikit-learnHPC cluster
read case study →
Product
Personal project · 2026

Knowledge Graph: a 3D, self-growing map of what I've studied

A 3D, explorable map of what I've studied: hundreds of concept bubbles from my own Coursera transcripts, wired by typed links and grown by a local LLM whose every edit I can preview and undo. It grows most days, and I use it daily.

844 bubbles · 1,636 typed links · live public snapshot
Node.js (zero-dependency)three.js / 3d-force-graphOllama (local LLM)Chrome extensionCloudflare Pages
read case study → live ↗
Personal project · 2026

jobtool, an AI-assisted Swiss job search built end to end

Local-first, it pulls Swiss job postings, scores each one against my own profile, and rolls the gaps into the two answers I care about: which skills to study next, and which roles are worth pursuing. A supervised browser extension handles the applications.

3,000+ roles sourced and scored · 50+ applications filed under supervision · in daily use on my own search
PythonFastAPISQLitePlaywrightChrome extension (Manifest V3)
read case study →
WeSherpa · Late 2024 – early 2025

WeSherpa: concept to MVP as PM + lead dev

A founder came to me with a buzzword-heavy idea, blockchain and a decentralised back-end, for helping people in need through local shops. I cut it down to a working MVP and built it, acting as product owner and lead developer for a small team.

Shipped a complete MVP; a disciplined exit when the round didn't close
Bubbleproduct ownershipUX
read case study → live ↗
Side projects
Personal project · 2016–2017

Arbitraging an MMO economy with a homemade price tracker

A game with a player-driven free market, an arbitrage seam, and no API to read it. So I built a pixel-by-pixel price reader, a bot fleet to feed it, and a nightly engine that told me what to buy and sell. At its peak I was sitting on about three billion in in-game currency.

33,292 price readings across 193 items over ~4½ months, and a front-row view of how a resource-infinite economy behaves
Javacustom pixel OCRbot fleetXChart
read case study →
AI for good
CIPU · 2024–2025

Turning real stories into an AI-illustrated exhibition

A non-profit in Ticino gathers real, difficult experiences and wanted them to stay with strangers. I built the pipeline that turns each account into a short story and an image, under one rule the model couldn't break: make it readable, invent nothing. The pairs went online and onto exhibition walls.

Shown across three Ticino venues; 1,000+ people reached locally; the team invited to present at USI
PythonLLMsimage generation
read case study → live ↗
CIPU · 2024–2025

Scoring local news with NLP + AI

An automated first pass for a local-media observatory: it scrapes a region's papers, scores each one with sentiment and bias heuristics plus an LLM summary, and hands the volunteer team a reviewable shortlist. The editorial call stays human.

An automated first pass that narrows hundreds of articles to a reviewable shortlist; human-led and NLP-assisted workflows are both in trial
PythonNLPLLM APIs
read case study → live ↗