Not values on a wall. Each one was born from a project that went better when I followed it — or worse when I ignored it. Since each habit implies a concrete gesture, it's noted right underneath.
01
Numbers I can defend
A number I'd defend to my thesis supervisor, or no number at all.
YEPA
YEPA's classifier is scored on 350 samples labelled by the pedagogy researchers, not on a demo that went well. The entity model that was supposed to replace the extraction step reached F1 0.024, so I wrote that number in the report and killed it rather than ship something I couldn't defend.
KOCO Predict
On KOCO Predict I scored every model several times, notably against the interpolated curve and against real collection days only, because the first number mostly measures agreement with a line I drew myself. The two rankings disagreed, and that disagreement turned out to be the result.
what it takes
Weeks of work. Building a labelled corpus is demanding, meticulous work — but it is what made the specialised model possible.
02
Know when an LLM is the wrong tool
Large models are powerful and non-deterministic. The real skill is recognising the situations where something else serves better.
YEPA
Pulling the meaningful elements out of a YEPA interview is open-ended, so a schema-bound LLM beat a fine-tuned NER outright. Sorting those same elements into the seven concepts of a pedagogical ontology is closed and repeatable, so a small classifier trained on 14,000 samples beat every frontier model I tested by twelve points. Same product, same week, opposite answers.
Atelier
In Atelier I split the work along the same line: ffmpeg finds the silences, because a gap between words is arithmetic, and the model only ever reads words and hands back indices it cannot invent. The expensive, fallible half only runs on the part that actually needs judgement.
what it takes
Owning the model means owning a training pipeline and a labelled corpus instead of using an API.
03
Keep the complexity underneath
Rigorous where it's essential, invisible everywhere else.
FlowerCam
FlowerCam runs face detection and identity matching on every frame of a relayed video stream, and the shop team should only ever see the customers walking the aisles. The rigour underneath is what lets the surface stay calm. It is not something to put on display.
YEPA
YEPA rests on a pedagogical ontology out of the research literature, and none of that vocabulary belongs on screen: the person should see their own experience, described well. Every generated output still prints its source cards underneath, so the rigour stays checkable without ever becoming the interface.
what it takes
This work does not show in a demo: it reveals itself on the day everything keeps holding despite the load.
04
Prototype, then optimise
People discuss a product they can see. They negotiate a concept they can't.
YEPA
YEPA's interview went in front of 36 participants across three rounds of testing before anything got polished. The second round named latency as the dominant friction, so the third release was the simplified one, and the score that mattered, the time people had to think, stayed at ceiling throughout. The same rounds put a number on the weakest tool, job matching, at 3.75 out of 5, which is exactly what a prototype is for.
Dutine
On Dutine a survey of seven people and eight questions moved the whole product: 57% expected to hold both roles, so signup creates a relationship with yourself instead of a solo mode bolted on the side. Seven answers changed the product more than a month of thinking had.
what it takes
A rough build gets judged as a finished one. So I systematically say out loud which parts are still scaffolding.
05
Explain the decision, not just the result
A client who understands the why can make the next decision with you.
YEPA
YEPA's headline decision was training a dedicated classifier instead of prompting a frontier model, and it held because the why was written down: we tested three GPT-5 sizes and the Claude family with optimised prompts, they plateaued, and the published result is that the difficulty was conceptual nuance, not scale. The price went on the table with it: owning the model means owning a training pipeline and a labelled corpus instead of using an API. Two pedagogy researchers carry that trade-off with me because it was explained, not announced.
KOCO Predict
On KOCO Predict I dropped the forecast from hourly to daily resolution, which was the opposite of what had been agreed. At hourly, 2% of the points were real measurements; at daily, 26%. The model looked less impressive and the numbers became usable, and that is only a good decision if you can say it in delivery and cost terms, in the client's own words.
what it takes
It takes longer than handing over the number, and the honest version is sometimes the more sober one.
06
Design for whoever maintains it
Written budgets, real boundaries, shared code where two products overlap.
YEPA
At YEPA I am CTO and full-time engineer, so any rule that depends on being remembered will eventually not be. The deploy gate reads the infrastructure diff and stops if a change would replace a database table or a user pool. Size limits per file type, and a written procedure for lifting a feature into the shared package, do the same job for the code.
SAFE
A day trader's present lasts hours and a pension fund's lasts a quarter, and if that boundary is learned by the model, serving both audiences means relabelling the corpus and retraining. So on SAFE the temporal thresholds live in a configuration file, and explicit dates never reach the network at all: changing what present means is a one-line edit, not a retraining run.
what it takes
A guardrail costs on the day it is written or put in place. It pays back on the day somebody is tired, and on the day the person who knew is no longer around.
What I actually do
01Problem
02Understand
03Design
04Build
05Explain
iterate: Build → Understand · learn: Explain → Problem
Build
I turn an idea into a product used by real people, from the first line of code to deployment.
FlowerCam let a customer at home drive a robot around a real shop, and I wrote the video server that made that call possible.
Structure
I design systems that are still understandable when someone else opens them a year later.
SAFE reads financial news and works out when an event sits in time, and nobody agrees on what “recent” means.
Decide
I set the direction, hand out the work, and own the call when the answers conflict.
At YEPA I am CTO and full-time engineer, so every disagreement between the research side, the freelancers and the product lands on my desk.
Teach
I turn complexity into concrete tools, then check that they genuinely meet the need.
Most of the people I teach arrive unable to build a website, and leave able to build one that works and to prove that it does.