Selected work

Things I have built that real people depend on

Most of my recent work was done as a senior engineer at Turn.io, a WhatsApp platform used by the WHO, national health ministries and clinic networks to reach millions of people. These are systems I designed and built there. Client names and details stay confidential.

Real-time

  • Elixir
  • OTP
  • PostgreSQL
  • Kubernetes
  • WhatsApp Cloud API
Related service →

A bulk messaging engine for national health campaigns

Context Public-health programmes needed to reach millions of people on WhatsApp, quickly, without being throttled and without losing track of who received what.

  • Designed and built the high-throughput send engine, with rate limiting, backpressure, delivery tracking and retries.
  • Used for national public-health campaigns, one of which reached 14.7 million people, and for national vaccination reminders.
  • Elixir and Phoenix on Google Cloud and Kubernetes.

AI platform

  • Elixir
  • Lua sandbox
  • Anthropic
  • OpenAI
  • Gemini
  • ElevenLabs
  • RAG
Related service →

The agent platform behind AI on WhatsApp

Context Organisations wanted to run AI agents on WhatsApp safely, connect them to their own systems, and hand over to humans when needed.

  • Designed and built the agentic harness, the agent loop covering tool use, orchestration, guardrails and handover between agents and to humans.
  • Connected the Lua app engine to the Agent block so agents execute tools and code inside a sandbox. Customers use it to connect agents to medical records and external APIs without being able to break the platform.
  • Integrated Anthropic, OpenAI and Gemini models, with RAG over customer knowledge bases.
  • Built real-time voice calls over WhatsApp with ElevenLabs voice models and small, fast LLMs, so callers get low-latency, natural conversations.

Evals

  • LLM-as-judge
  • OpenTelemetry
  • LangSmith
  • Opik
  • LangWatch
Related service →

Evals, from simulation to production

Context Teams doing clinical triage needed to know the error rate of their bots before real patients used them, and to keep measuring after launch.

  • Built multi-turn simulation evals where an LLM plays the user from a persona and a goal, talks to the real bot, and LLM judges score the transcript against criteria the customer defines.
  • Implemented OpenTelemetry GenAI collection and export of all AI traffic, which made it easy to integrate Comet Opik, LangSmith and LangWatch for online evals.
  • Built the loop that sends eval results into Turn’s AI copilot for building chatbots. A failing criterion turns into a concrete change to the bot, and the builder re-runs the evals to check it worked.

Healthcare AI

  • Multi-agent
  • Rules engine
  • RAG
  • Simulation evals
  • EMR integration
Related service →

AI triage and clinical-guideline agents

Context Primary-care organisations in Africa wanted AI that helps patients and nurses without ever improvising medical advice.

  • Ran discovery to map triage journeys, built a vignette dataset, and designed a two-agent architecture with a deterministic rule engine for high-risk decisions.
  • Built the simulation evals that measure sensitivity and errors of omission.
  • Turned clinical guidelines into an agent that guides nurses through diagnostics and triage and answers only from validated guidelines. It was tested with 107 nurses and is now live in clinics.
  • Integrated with a clinic EMR so AI-generated intake summaries from the WhatsApp conversation are written straight into the clinical record.

Models

  • MedGemma
  • llm-compressor
  • FP8
  • vLLM
  • Modal
  • Hugging Face
Related service →

Self-hosting a medical LLM, paid per use

Context Would an open medical model do as well as frontier models on real triage conversations, at lower cost?

  • Compared MedGemma with the OpenAI and Claude models customers run in production, using simulation evals against their live bots instead of benchmarks.
  • Quantised MedGemma 27B to FP8 with llm-compressor and published it on Hugging Face, where it gets hundreds of downloads a month.
  • Built a scale-to-zero vLLM deployment on Modal with OpenAI-compatible tool calling. GPU memory snapshots and vLLM sleep mode cut cold starts from ~100 s to ~21 s, so customers pay per use instead of for always-on GPUs. The results now drive a model routing policy.

Data

  • PostgreSQL
  • Partitioning
  • Elasticsearch
  • ILM
Related service →

PostgreSQL and Elasticsearch at scale

Context Message data grew by millions of rows a day, and the biggest tables and indices were becoming the bottleneck.

  • Partitioned production PostgreSQL tables of more than 1 TB to get performance back.
  • Did the same for live Elasticsearch indices, with index lifecycle policies that move older data to cold storage.

Platform

  • Elixir
  • Oban Pro
  • Rules engine
  • Phoenix
Related service →

Jobs, pipelines and automations

Context A growing platform needed durable background work and a way for customers to automate their own workflows.

  • Built Turn’s job and data pipeline infrastructure on Oban Pro.
  • Built an IFTTT-like trigger system with a rules engine.
  • Spoke at ElixirConf EU 2023 on the architecture of Turn’s low-code chatbot builder.

Engineering

  • Claude Code
  • Skills
  • GitHub
Related service →

Agentic coding for the engineering team

Context Coding agents only pay off when a team learns to use them well.

  • Lead Turn’s agentic coding effort: rolled out Claude Code to the engineering team, manage the licences and help engineers get real work out of it.
  • Wrote the Claude-based PR review skills the team uses on its pull requests.
  • AI mentor for every cohort of Turn’s accelerators (OpenAI in 2025, Anthropic and ElevenLabs in 2026), helping each team design its agent, build its evals and get to a live service.

Before Turn.io

  1. 2024

    Engineering Manager, Adoption · n8n

    During a sabbatical from Turn, I managed the adoption team, the team closest to n8n’s users, which owned UX, developer experience and the features that drive adoption, including AI features like the AI copilot and AI integrations. I went back to Turn because I wanted to be building and shipping with customers again.

  2. 2019–2020

    Software Engineer · Templafy, Berlin

    TypeScript, React, C# and microservices on Azure, during a monolith-to-microservices rewrite in a period of hyper-growth. I led the frontend guild and built the third-party integration layer. This is where I learned to pair program every day, with clean code and extreme programming practices.

  3. 2017–2019

    Software Engineer · Max Planck Institute for Human Development, Berlin

    Research apps, data collection services, analysis and ML modelling in Python, TypeScript, Node.js and C#.

  4. 2016–2017

    Full Stack Developer · Progresso Srl, Italy

    JavaScript, Node.js, MongoDB and RabbitMQ: an asynchronous job processing system for video content.

Start a conversation (opens in a new tab)