Not values on a wall. Each one is here because a project went better when I followed it, or worse when I didn't. Each one also has a price, so the price is written underneath.
01
Measure what matters
A number I'd defend to a 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 twice, once against the interpolated curve and once 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 costs
Weeks. A labelled corpus is slow and unglamorous, and it is the only reason the specialised model existed at all.
02
Know when an LLM is the wrong tool
Large models are powerful and non-deterministic. The skill is telling which problem is which.
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 costs
Owning the model means owning a training pipeline and a labelled corpus instead of renting an API.
03
Keep the complexity underneath
Rigorous where it counts, invisible where it doesn't.
FlowerCam
FlowerCam runs face detection and identity matching on every frame of a relayed video stream, and the florist should only ever see her customer walking around the shop. 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 costs
Nobody praises what they can't see. This work is invisible in a demo and only gets noticed when it fails.
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 costs
A rough build gets judged as a finished one. I say out loud which parts are still scaffolding, every time.
05
Explain the decision, not just the result
A client who understands why can make the next trade-off with you.
YEPA
YEPA's headline decision was training our own 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 renting 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 costs
It takes longer than handing over the number, and the honest version is sometimes the less impressive one.
06
Design for whoever maintains it
Written budgets, real boundaries, shared code where two products overlap.
YEPA
YEPA has one full-time engineer, me, 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 costs
A guardrail costs on the day it is written. It pays back on the day somebody is tired.
What I actually do
01Problem
02Understand
03Design
04Build
05Explain
iterate: Build → Understand · learn: Explain → Problem
Build
I take an idea from nothing to running in front of real users, and I stay in the code while I do it.
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 the only full-time engineer, so every disagreement between the research side, the freelancers and the product lands on my desk.
Teach
I turn something complicated into something a person can hold, then check that they can.
Most of my students arrive unable to build a website, and leave able to build one that works and to prove that it does.