Skip to main content

How I work with AI

Most of what I ship is written with agents. That changes what my job is, so here is the honest division of labour.

  • Analysis and planning

    I write the objective and the acceptance criteria it has to meet. An agent drafts the plan against them, and I review that plan before any code exists.

  • Implementation

    Agents write most of the code. The interesting question stopped being who typed it and became whether the constraints were right.

  • Independent review

    Reviewers start from a clean context, sometimes on a different model family, so they do not inherit the implementer's assumptions.

  • Executable evidence

    Tests and runtime checks decide whether something works. A confident summary from a model is not evidence.

  • Human decisions

    I approve plans, and anything irreversible stays mine: what gets published, and what gets privileged access to a live system.

  • Improving the system

    When something goes wrong twice, the fix belongs in the process rather than only in the ticket. That is where most of the compounding happens.

Technical Leadership

  • Team and technical direction

    I lead the development team and own the architecture decisions behind the company's AI capability. The way we work with agents arrived in steps. First Cursor wired into Jira. Then Claude against that same Jira. Now Claude against WBTickets, which replaced Jira and Confluence outright. The team works one shared way across it: how a ticket gets written, how the code gets made, how it gets reviewed.

  • Engineering multiplication

    I don't treat coding agents as faster autocomplete. The work is the system around them: context that outlives a chat, a plan reviewed before any code exists, review from an independent context, and executable evidence instead of a confident summary. The goal was never to make one engineer faster. It is that the team can take on work that used to need constant senior attention, and that one improvement to the harness lands on every ticket after it.

  • AI adoption across the business

    97 colleagues at a 350-person company used the MCP platform in the 90 days to August 2026. That undercounts it, because it only sees the people who reached live company data through MCP. None of it spread on its own. We picked champions. We started with a small group and trained people as the rollout widened.

  • Training and enablement

    I run Claude training across the company, covering prompting, connectors and MCP, and skills. With the development team I went further and guided them into AI-first development. Colleagues each took a personal project end to end with AI, which is what actually built confidence and experience.

  • Coaching and hiring

    I coach developers through collaborative code reviews and onboard new team members. When we hired our senior AI developer I wrote the job description and the technical assignment, and sat the interviews.

Team leadershipTechnical strategyAI adoptionTraining & enablementCode review coachingHiringOnboardingStakeholder alignment

Skills & Experience

AI & Machine Learning

Building production AI systems: from MCP architecture connecting LLMs to enterprise data, to ML pipelines on GCP Vertex AI.

MCP ServersMCP AppsPythonGCP Vertex AIBigQueryGenkitLLM OrchestrationML PipelinesClaude Code

Frontend Engineering

18+ years in software engineering, with deep experience building enterprise web applications in Angular. Architecture, performance, and team leadership at scale.

Angular 4–21TypeScriptRxJSSignalsNxTailwindCSSStorybookPlaywright

Full Stack & Cloud

End-to-end delivery across Firebase, GCP, .NET, and Java Spring Boot, with CI/CD, infrastructure, and DevOps.

FirebaseGCPC# / .NETNode.jsJava Spring BootGraphQLGitHub ActionsAzure DevOps

What I'm Building Now

None of these is a side project on its own. Each is a layer of the same platform: identity-bound tools over the business systems, durable organisational knowledge, workflows an agent can read, explicit approval points, and an engineering system that people and agents share. Building it that way is the point, because every layer makes the next one cheaper.

Warmtebouw, 2025–present

Building an AI-First Organization

I'd been deepening my AI development practice for over a year, from Copilot tab completion, to ask mode, to fully agentic workflows, before joining Warmtebouw. Here that experience met a real opportunity: building the company's entire AI capability from the ground up. I've built eleven production MCP servers (AFAS Profit ERP, Autodesk BIM, fleet management, energy monitoring, construction standards, pre-order calculation, and a multi-million-item product catalogue), totalling more than 90 tools across eleven external APIs, secured with Microsoft Entra OAuth and RBAC. The servers let non-technical colleagues query live business data through natural language without ERP expertise. I also designed what I believe is one of the first production MCP Apps in Angular: interactive tables, charts, and maps that render directly inside AI conversations. In parallel I'm architecting a reusable MLOps platform on GCP Vertex AI, starting with email classification as the foundation for future ML models. Day-to-day I develop AI-first with Claude Code.

Angular 20/21TypeScriptPythonFirebaseGCP Vertex AIMCP ServersGenkitGitHub ActionsClaude Code
MLOps Platform

ML Platform

Full ML lifecycle management: Vertex AI training jobs, BigQuery data pipelines, model registry, and admin portal. Built as a reusable foundation for future ML models.

WBTickets: Kanban board

WBTickets

An AI-integrated workflow board for humans and agents. Plans, review and approval live in Markdown and Git beside the code, so the state survives when an agent's context is thrown away. It replaced Jira and Confluence, and aggregates tickets from several GitHub repos through a GitHub App, behind Entra SSO.

Fitness Training

WB Fitness

Employee fitness registration app with calendar-based scheduling, trainer management, and role-based access. Microsoft Entra SSO, 90% test coverage enforced.

Warmtebouw Games MCP: Tetris

WB Games: Tetris

An inline Tetris game served through a custom MCP server, with a company-wide leaderboard and AFAS-based role lookup. Built to explore MCP App surfaces beyond plain tool calls.

Featured Work: Allianz Broker Portal

Led the full-stack development team (frontend and backend developers) building a unified broker portal from scratch for Allianz Netherlands. Took ownership of architecture decisions, database modeling, PO alignment, and scrum facilitation. Delivered an Nx monorepo with a shared Angular component library, Storybook, CI/CD pipelines, and a Java Spring Boot BFF with multi-language support.

Allianz customer portal: dashboard overview
Allianz customer portal: document management
Allianz customer portal: policy details

Track Record

WBWorks: Planning & Field Service Platform

Warmtebouw

WBWorks: Planning & Field Service Platform

HVAC workforce management system planning 100+ engineers across six departments. Syncfusion drag-and-drop scheduler, Google Maps with live vehicle tracking, conflict detection, time registration, and bidirectional AFAS Profit ERP sync via REST.

Angular 20FirebaseSyncfusionGoogle MapsAFAS Profit
Pro-Fa Automation Dashboard

Pro-Fa Automation

Pro-Fa Automation Dashboard

Configurable dashboard platform connecting industrial data sources, enabling operators to visualize real-time production data and create custom scripting workflows.

Angular 18-20TailwindCSSDevExtreme
NS E-commerce Platform

NS (Nederlandse Spoorwegen)

NS E-commerce Platform

Contributed to NS's high-traffic e-commerce platform serving millions of daily ticket transactions. Optimized the sales funnel through A/B testing with Optimizely, directly impacting conversion rates.

Angular 18TailwindCSSOptimizelyA11Y
KLM / Air France Aftersales

KLM Royal Dutch Airlines

KLM / Air France Aftersales

Further development of KLM and Air France's aftersales web platform, delivering new features with Angular and a GraphQL BFF architecture within a complex multi-brand IT landscape.

Angular 12GraphQLNxStorybook
Allianz Broker Portal

Allianz

Allianz Broker Portal

Led the full-stack development team building a unified broker portal from scratch. Architecture, database modeling, PO alignment, scrum, Nx monorepo, shared component library, Storybook, and Java Spring Boot BFF.

Angular 11NxStorybook
Bolster Safety E-learning

Bolster Safety

Bolster Safety E-learning

Transformed a legacy AngularJS e-learning platform into a modern Angular application with full UI redesign and management dashboard.

Angular 4-9WebDriverIOChart.js
Bookchoice Mobile App

Teamcoda

Bookchoice Mobile App

Cross-platform Ionic mobile application for ebooks and audiobooks.

AngularIonicCordova
Softpak ProWeb

Softpak

Softpak ProWeb

Web application platform with meta-driven architecture that dynamically generated pages from JSON definitions for Progress OpenEdge.

AngularKendo UICypress
OSIsoft Hackathon

OSIsoft Hackathon

OSIsoft Hackathon

Custom data visualization component for industrial analytics. Won "Best in Show" at the OSIsoft Visualization Hackathon.

D3.jsAngularJSData Viz
OLAM OEE Dashboard

OLAM

OLAM OEE Dashboard

Real-time dashboard measuring Overall Equipment Effectiveness of a cocoa factory with SignalR streaming.

ASP.NET MVCSignalRKendo UI
Total Operating Envelope

Total E&P

Total Operating Envelope

Custom D3.js dashboard components for visual control of operating envelopes of industrial machinery.

D3.jsAngularJSOSIsoft PI
Shell / NAM Metering

Shell / NAM

Shell / NAM Metering

Dashboard for gas sample and metering data across multiple production sites.

ASP.NET MVCC#SQL