about me.txt
portrait of Jasper Meijerink

hey, I'm jasper.

third-year BSc AI (Honours) at VU Amsterdam. I build small tools that real people end up using, usually because something annoyed me first.

running now
  • computer vision and AI at Siemens
  • making life easier for professors at the VU Education Lab
  • AI engineering at AISO, the largest AI student org in the Netherlands
most used
Canvas Course Downloader, 10,000 users
based in
amsterdam, here
jaspnerd.devupdated sep 2026

projects

5 items

Canvas Course Downloader

backs up a whole canvas course in one click. made it for myself, then 10,000 people showed up.

10,000users

kind
browser extension
when
mar 2026 → now
effort
solo, open source
role
made it, still maintain it
stack
  • JavaScript
  • Manifest V3
  • client-zip
  • Turndown

Canvas was about to take my course files away at the end of a semester, so I wrote an extension that grabs all of it: files, pages, assignments, discussions, grades, quizzes, even lecture videos with captions. It exports to offline HTML or Markdown, which turns out to be a great way to feed a course into NotebookLM or Claude.

I put it on the Chrome Web Store and forgot about it. Then the Canvas data breach in May sent a wave of students and teachers looking for backups, and it was already sitting there. Strangers started sending pull requests. It has a Featured badge now, 4.8 stars and 30 releases.

  • Chrome Web Store listing header: Featured badge, 4.8 stars (17 ratings), 9,000 users, plus two promo tiles.
  • Settings page: export presets (Full Archive, Files Only...) and content-type checkboxes incl. submissions, grades, quizzes.
  • Frame from workflow demo: Canvas dashboard with "Downloading 1 of 2: Logic and Sets for AI" and a download progress toast.

VU AI Assistant

a side panel that turns whatever a lecturer is reading into quizzes, rubrics and slides.

16teaching tools

kind
browser extension
when
2025 → now, v4 in progress
effort
day job at the VU Education Lab
role
only developer, idea to production
stack
  • WXT
  • React
  • TypeScript
  • Hono
  • Azure

Point it at an article, a Canvas page, a PDF or a video and it makes teaching material: summaries, quiz banks, flashcards, rubrics, slide outlines. Exports to Word, PowerPoint in the VU template, Canvas, Moodle and Anki. On a Canvas course it reads the whole course first, so the quiz matches what was actually taught.

It runs on the VU’s EU Azure setup and never stores page text. I wrote the threat model too, since a university privacy review is its own boss fight.

  • Portrait crop of the side panel: generated quiz bank on Alan Turing with answer key, rationale, Bloom level and item-quality chips.
  • PowerPoint export using the official VU Amsterdam template (title slide), with the demo video's "POWERPOINT" label top-left.
  • Settings > Courses: course profile form (discipline, audience, about the course, learning objectives), version 4.0.0.

AI @ VU

a study site for every course in the vu ai bachelor. 515 quiz questions and a chat per course.

875visitors in week two

kind
web app
when
feb 2026 → now
effort
evenings, every semester
role
solo
stack
  • Next.js
  • TypeScript
  • Tailwind
  • KaTeX
  • Vercel

All 35 courses of the bachelor, 515+ quiz questions, 176 practice problems, summaries, grade calculators and an AI chat for each course. The material was spread over six platforms, so I put it in one place.

875 people found it in the first two weeks without me posting it anywhere. Exam week does about 200 a day.

Every semester I talk to students from each year, take their feedback and update it. It’s never really done.

  • Courses index: year filter tabs and illustrated course cards with codes and difficulty meters.
  • Answered practice quiz (Machine Learning, 302 questions): correct option green, wrong option red, KaTeX explanation. Captured live today.
  • Mobile (iPhone @3x) homepage hero.

marktplaats-mcp

lets claude shop secondhand for you. search listings, vet sellers, compare prices.

224installs last month

kind
mcp server
when
jul 2026 → now
effort
side project
role
solo
stack
  • Python
  • FastMCP
  • Docker
  • Playwright

An MCP server for Marktplaats and 2dehands. Your assistant can search, check sellers and compare prices, and with your own login it can message and bid too. There’s a hosted read-only endpoint you can paste straight into claude.ai.

It’s in the official MCP registry, has install guides for 40 clients and a CI canary that complains when Marktplaats changes their API.

  • Retro amber CRT terminal: Dutch search query, three racing-bike results, seller check "BANK VERIFIED, ID VERIFIED, 4.9", "DEAL DETECTED. HAPPY HUNTING."
  • Landing page (marktplaats-mcp.jaspnerd.dev): pixel logo, intro, "Use it on claude.ai in one step" connector URL, local install commands.

Cookbuddy

Cookbuddy, screenshot

a voice-first recipe finder. say "something italian under 30 minutes, no mushrooms" and it filters 1,000 recipes.

94.7%intent accuracy

kind
conversational agent
when
spring 2026
effort
project conversational agents, VU
role
team of five, course project
stack
  • BERT
  • Prolog
  • MARBEL
  • Flask
  • Python

Speech goes to text, a BERT model picks the intent and pulls out the slots (cuisine, ingredients, diet, time, exclusions), a MARBEL dialogue manager keeps the conversation on track and a Prolog database narrows down the recipes as you talk. Fourteen intents, with recovery paths for unclear requests and empty results.

The saved evaluation run scores 94.7% intent accuracy on 2,772 test utterances. Built with Arjun, Omar, Kyan and Skick for the Project Conversational Agents course at VU.

  • Cookbuddy, screenshot 1

VU AI Assistant, demo.mp4

narrated democaptions on

Trip Agent, demo.mp4

narrated demo

side quests

8 items

Trip Agent

say "a weekend in lisbon for two under €1500" and your bank plans it, books it and pays.

7real banking actions

kind
hackathon
when
apr 2026
effort
24 hours, bunq hackathon 7.0
role
team of four
stack
  • Claude
  • FastAPI
  • React
  • Playwright
  • ElevenLabs
  • bunq API

Trip planning is still eight tabs and a calculator. So at bunq’s hackathon we built an agent that lives inside the bank. You type or talk, it asks one question, does its web research where you can see it, and pitches three packages. Say yes and it fires seven real sandbox calls: opens a savings pot, funds it, books the hotel through an actual browser, pays, pings your phone for approval, sets up weekly savings and splits the bill.

What I took home: build the demo path first, make the work visible, and boring beats flashy. We swapped headless search for plain HTML search late at night. It never crashed on stage.

  • Execute phase: tool-call chips firing, budget meter at 1800, action cards, and the live Playwright agent browser paying on a hotel checkout page.
  • Later in execute: sub-account "Amsterdam Weekend" at 900/1800, actions grid with hotel paid and a dinner approval awaiting tap.
  • All three package illustrations rendered, option A selected, user reply "I'll take opt-a". 1280px frame.

JFAM

an agent that runs a 22-table italian restaurant for 30 days and doesn't go broke.

4thof 16 teams

kind
hackathon
when
may 2026
effort
8 hours, prosus × aiso
role
team of four, I wrote most of it and the eval tooling
stack
  • Python
  • LiteLLM
  • Claude

Suppliers, menus, prices, staff, marketing, all decided by the agent. We tried an LLM in the live loop. It scored worse than plain rules, so we cut it and had Claude suggest rule changes between runs instead.

Every change needed a mechanism we could name and a signal we could see. The final eval ran on seeds nobody had seen before: 20 out of 20 restaurants survived, zero bankruptcies. Teams with higher peaks went bust.

  • Replay dashboard mid-game (day 17): cash chart halfway, supplier orders the agent placed that day.
  • Matplotlib chart: tourist_season seed 7, cash over 30 days (final 57,776) plus daily covers bars.
  • Matplotlib chart: renovation seed 42 with capacity_cut window shaded, final 22,081.

CourseForge

hand claude a syllabus, get a full canvas course back.

20+tools

kind
mcp server
when
jul 2026
effort
side project
role
solo
stack
  • TypeScript
  • MCP
  • Canvas API
  • Turborepo

An open-source MCP server with 20+ tools and a Common Cartridge toolkit. Give Claude Code a syllabus and it builds modules, pages, assignments and quizzes in one import. Everything stays unpublished until the teacher has looked at it, because nobody wants a robot publishing their course at 3am.

  • Wide banner: pixel anvil-and-flame mark, "courseforge", "from syllabus to Canvas course, forged by your AI agent", on white.

Nib

a postman alternative for mac. 3 MB instead of 353.

3.2 MBon disk

kind
mac app
when
aug 2026
effort
a weekend
role
solo
stack
  • Swift
  • AppKit
  • SwiftUI

A native API client with zero dependencies that idles at about 30 MB of RAM. No account, no telemetry. It imports Postman collections, stores requests as plain files and keeps secrets in the Keychain. I measured Postman at 353 MB and got annoyed. Install it from my own Homebrew tap.

  • Product shot: Nib with a DemoCollection sidebar, GET /hello, JSON response with emoji and escaped strings.
  • Website nib.jaspnerd.dev hero: "Send a request. Not a signup form." with install/source buttons.

Otterbende

a self-play rl agent for a dutch card game, and a browser version with an otter deck.

28kparameters

kind
research + game
when
aug 2026
effort
summer project
role
solo
stack
  • Python
  • PyTorch
  • PPO
  • Svelte
  • TypeScript

A faithful simulator of Beverbende, a PPO agent that learns by playing itself and beats every scripted bot over 40,800 rounds, and a short paper written for people new to ML. One “style” input changes when it knocks, from turn 14 to turn 2.

Then a Svelte game where you play the trained network, with a custom otter deck. The TypeScript engine is tested move for move against the Python one.

  • Opponent turn: "Ollie is thinking", WISSEL power card on discard, their draw, move log.
  • Round result modal "Ollie takes the round" with scores; all cards revealed face-up with otter art behind.
  • The custom otter card deck artwork (0-9 plus power cards and card back) on white.

Kamernet Radar

real-time rental radar for amsterdam rooms, with llm scoring and alerts to 100+ services.

100+notification channels

kind
tool
when
2025 → now
effort
side project
role
solo
stack
  • Python
  • Docker
  • Apprise
  • Next.js

Rooms in Amsterdam are gone in minutes, so this watches Kamernet, scores every new listing with an LLM against what you’re looking for and pings you wherever you are: Discord, Telegram, ntfy, email, WhatsApp. Self-hosted, Docker, optional dashboard. Also available as an MCP server so an agent can search for you.

Marktplaats Monitor

saved-search alerts and price-drop pings for marktplaats. started as a hunt for an apple tv.

100+notification services

kind
tool
when
aug 2025 → now
effort
side project
role
solo
stack
  • Python
  • Docker
  • Apprise

Get a Discord, Telegram or ntfy message the moment a saved search matches or a listing drops in price. Self-hosted in Docker. It started because I wanted a secondhand Apple TV 4K and refused to keep refreshing.

Mario RL

Mario RL, screenshot

A3C vs PPO learning to play super mario bros 1-1, across seeds, with a paper.

2algorithms, 4 seeds each

kind
research
when
mar 2026
effort
machine learning course, VU
role
course project
stack
  • PyTorch
  • A3C
  • PPO
  • nes-py

Two reinforcement learning methods, the same level, the same compute budget. We compared learning speed, stability and final distance for A3C and PPO over four random seeds and up to 3 million timesteps each, and wrote it up as a paper. Both reached the flag. PPO got further on average, A3C was noisier.

work history

  • running

    Siemens

    data science & ai, working studentmar 2026 → now, the hague
    • computer vision and ai on P&ID engineering diagrams, shipped as an internal web tool
    • own the inventory reporting ETL, fixed silent data loss nobody had noticed
  • running

    VU Education Lab

    student assistant, ai in educationmar 2025 → now, amsterdam
    • 15+ genai projects from idea to production, including the VU AI assistant
    • ai workshops for 300+ lecturers and staff, across every faculty
  • running

    AISO

    ai engineer, platform & automationsapr 2026 → now, amsterdam
    • rag chatbot over notion databases via mcp
    • shipped the ai projects tab, ecosystem map and my journey page on the member platform
  • running

    VU Amsterdam

    honours evaluation committeedec 2025 → now, amsterdam
    • reviewing honours courses with students and faculty
  • exited

    Ecochain

    ai engineerapr 2026 → jun 2026, amsterdam
    • agentic document automation for sustainability reports

new message

or find me on github, linkedin and hugging face.

trash

  • portfolio-v1.html
  • tailwind.config.js
  • headless-search.py
  • llm-in-the-loop.py
4 items

about jasp.os

jasp.os 26.9

a small desktop that is also my portfolio. built with astro and gsap, hosted on one hetzner box.

double-click icons to open them. drag windows by their title bar.

shortcuts

esc
close the top window
m
sound on/off
secret mode, locked