Cases
Problem, approach, outcome — client work in practice
From Excel and Dropbox to a self-hosted automation platform
Short-stay booking operator · Hospitality · 2024 – 2026
-
Problem
Fifteen years of operational data lived in Excel sheets and a personal Dropbox. Bookings, guest communication, and finance ran on manual routines — unautomatable and impossible to hand over.
-
Approach
As acting CTO I deployed a self-hosted automation stack — n8n for workflows, Mattermost for the distributed team, Outline as a knowledge vault feeding RAG agents — and rebuilt the booking platform on a modern Laravel core with the legacy data migrated in, document-first.
-
Outcome
Guest-email classification, dynamic replies, and finance routines now run as automations the team operates themselves — a documented, self-hosted system with no dependency on me.
One Laravel core, many storefronts
Stayci / More Apartments · Hospitality · 2024 – present
-
Problem
A serviced-apartments group with multiple brands — The Hague, Rotterdam, Amsterdam — each needing its own booking website, without maintaining a separate codebase per brand.
-
Approach
A multi-tenant platform: one shared Laravel core with per-instance configuration, and fast per-brand Astro storefronts on top. New brands are configuration plus content, not new codebases.
-
Outcome
Multiple live booking sites, including stayci.com and hotelixamsterdam.com, run from the shared core with direct online booking — one place to fix bugs, one place to ship features, every brand benefits.
An AI copilot for workforce planning
Workforce-planning SaaS · HR Tech · 2025
-
Problem
A scheduling product whose depth lived behind dozens of screens and Dutch domain jargon. New users struggled; power users clicked through the same flows daily. The team wanted AI in the product without trusting an LLM to mutate rosters unsupervised.
-
Approach
Designed a tool-calling layer of ~20 read-first tool definitions mapped to the product's existing UI vocabulary: rich availability enums instead of booleans, edits modeled as reviewable mutations, and human confirmation on every write.
-
Outcome
A copilot that answers scheduling questions and prepares mutations for human approval — AI proposes, the planner decides, the system executes. The tool-design patterns from this engagement are documented on the blog.