Development

Web development

Research tools, searchable archives and monitoring platforms for journalists, watchdogs and NGOs. Scraping, data cleaning, maps and charts included.

The projects I take on usually start with a pile of documents or a website that publishes data in a way nobody can search. A newsroom wants to track what candidates post during an election campaign. An NGO has collected incidents for years in a spreadsheet and wants a public database with a map. A research team needs a scraper that runs every night and tells them when something changes.

I build the whole thing: the collection, the database, the interface people click on. Recent examples are the election monitor for CeMAS, TimeTiles for turning spreadsheets into timelines and maps, and Polizeischüsse, a database of fatal police shootings in Germany that journalists still cite.

What I do

Research platforms

Searchable archives, internal dashboards, editorial backends with review workflows and exports. Django when the data model is the hard part, Next.js when the interface is. Both when needed.

Data collection

Scrapers for websites, PDFs and public registers, built to survive layout changes and to tell you when they break. Cleaning, deduplication, geocoding and matching against other sources. Language models where they beat a regular expression, and not otherwise.

Maps, charts, timelines

Interactive views that let a reporter or a campaigner explore the data themselves instead of asking a developer. Built with D3 or plain SVG, embeddable in a CMS, and usable with a keyboard and a screen reader.

Keeping it running

Hosting on a small server with backups and monitoring, or a handover to your own infrastructure with documentation your next developer can follow. I prefer boring, well-understood tools: PostgreSQL, Docker, Ansible.

How an engagement works

A first call is free and takes about twenty minutes. Bring the problem, not a spec; the spec is something we write together afterwards. I usually propose a small first milestone with a fixed price, ship a working version early, and adjust from there. Longer projects run as a retainer.

Code goes on GitHub under an open licence unless the work needs to stay private. I have signed NDAs and worked with unpublished investigative material before.

If your organisation mainly needs to manage members, donors and newsletters, you probably want CiviCRM rather than a custom build.