nl
← back

work

karim strijdt in rotterdam-zuid met zijn wijkbond tegen de gevolgen van omvolkingsretoriek ↗

follow-up to the ongehoord nieuws analysis. showed the rhetoric to karim, then wrote this article on how he resists it: organizing neighbors around shared problems like mold and high rent through his wijkbond in rotterdam-zuid, and building a national network of diaspora communities.

Pointer (KRO-NCRV) | interviewreportinginvestigative journalism

Date: October 30, 2026

voor miljoenen nederlanders ligt een lhbtiq+-sportclub buiten bereik

voor miljoenen nederlanders ligt een lhbtiq+-sportclub buiten bereik ↗

did the primary data analysis for this article and made the initial maps; my colleague Lisanne Wichgers produced the published versions. scraped lhbtiq+-(friendly) sports clubs, ran a self-hosted valhalla routing server on openstreetmap data to calculate cycling and driving isochrones per club, and overlaid them on the cbs 100m population grid: 12 million dutch people have no club within 20 minutes by bike, nearly 4 million by car.

Pointer (KRO-NCRV) | geospatial analysisdata analysismaps

Lead author: Lisanne Wichgers

My role: data analysis, initial maps

Date: September 29, 2026

Tech stack: Python, web scraping, Valhalla (self-hosted), OpenStreetMap, isochrones, Shapely, CBS 100m grid, Matplotlib

ongehoord nieuws brengt 'omvolking' steeds vaker zelf als complot, tafelgasten pleiten voor gedwongen 'remigratie'

ongehoord nieuws brengt 'omvolking' steeds vaker zelf als complot, tafelgasten pleiten voor gedwongen 'remigratie' ↗

analyzed all 466 mentions of 'omvolking' and 'remigratie' across 324 broadcasts of ongehoord nieuws (2022-2026), coding each by speaker and meaning. then wrote this article showing how a far-right conspiracy term moved from guests to the presenters themselves.

Pointer (KRO-NCRV) | content analysisdata analysisinvestigative journalism

My role: lead author

With: Peter Keizer

Date: September 21, 2026

Tech stack: Python, transcript analysis, content analysis, investigative journalism

bezorgde burgers? hoe rechts-extremisme structureel aanwezig is bij anti-azc-protestbeweging defend netherlands

bezorgde burgers? hoe rechts-extremisme structureel aanwezig is bij anti-azc-protestbeweging defend netherlands ↗

built a newsroom dashboard to classify, search and review 7,555 telegram messages, images and videos using an ensemble of four ai models. then wrote this article and identified 101 accounts (19%) posting extremist content over 7 months.

Pointer (KRO-NCRV) | ensemble AI classificationTelegraminvestigative journalism

With: Thomas Mulder, Peter Keizer, Lisette van Vliet

Date: April 1, 2026

Tech stack: ensemble AI classification, Telegram data analysis, Python, investigative journalism

mapping fossil ties

mapping fossil ties ↗

created interactive network visualization exposing connections between dutch academia and the fossil fuel industry.

Solid Sustainability Research | D3.jsnetwork analysisinvestigative journalism

Year: 2025

Tech stack: D3.js, JavaScript, network analysis, data visualization, investigative journalism

app me als je thuis bent

app me als je thuis bent

built ai-powered analysis tools for investigative journalism on street safety. webapp identified hotspots in 11,000+ location reports, llm analyzed raw data to surface story angles.

Pointer (KRO-NCRV) (freelance) | LLMdata analysisPython

Year: 2025

Tech stack: LLM, Python, data analysis, data visualization, investigative journalism

bron chat

bron chat ↗

built ai-powered search across 3.5 million dutch government documents. ask questions in natural language, get sourced answers.

Year: 2024

Tech stack: RAG, Python, FastAPI, OpenAI, PostgreSQL, NLP, Dutch government data

chrono scraper

chrono scraper ↗

developed open source osint tool with momus media to search historical website archives using wayback machine data.

Momus Media | FastAPISvelte 5OSINT

Year: 2023

Tech stack: FastAPI, Svelte 5, Docker, Meilisearch, Web scraping, Archive.org API, OSINT

earlier work