Jeremy Willemse
Fractional CTO & Software Architect.
I've been a software engineering consultant since 2013. Having designed systems and written code for clients in many different industries, I have refined a process for designing and implementing solutions that are tailored to specific domains using the language and concepts of the business without sacrificing strict adherence to engineering patterns and principles.
These days, I am particularly focused on problems with real-time data requirements (like motorsport telemetry streams), complex event processing (like detecting patterns in racing conditions), and applied artificial intelligence and machine learning use cases (like predicting lap times, degradation, and race outcomes). I sometimes share my thoughts in writing.

Work with me
What's your problem (domain)?
Selected work
Race Twin
A digital twin and AI race engineering and strategy platform for racing simulator titles. Using real-time vehicle and environment telemetry, complex event processing, monte carlo simulations, statistical modeling, and agentic AI for fact-backed decision making and driver communications.
Mycroft
A gamification of your own fumbling memory in tip-of-the-tongue situations, where you can preserve your dignity or otherwise avoid the dissatisfaction of just Googling the answer. Uses a two-stage LLM-powered gate-and-answer pipeline and four progressive reveal modes: letter-by-letter, anagram, hangman, and Wordle-style... With a Holmesian twist.

Razor Share
A shared electric scooter platform for the brand synonymous with “scooter”. A small team built the backend services, IoT control plane, Android and iOS rider apps, and field-ops apps for route planning and fleet collection, with geofencing, automated parking enforcement, speed limits, and real-time location and battery telemetry across the fleet.
Open Timekeeping
Motorsport timing has been a closed, vendor-locked stack for decades. OTK is an open, vendor-neutral alternative spanning detectors, firmware, transport bindings, clock sources, and runtime. The Rust protocol stack uses a CBOR-encoded wire format, an append-only event log with explicit amendments, and clock-sync for multi-point precision.