I build the parts of AI systems that have to be trusted.
Backend and platform work on AI systems that touch real company data, in Go, Python and Kubernetes. Most recently: giving a language model delegated access to a company's mail, chat, calendars and documents, and doing the security engineering that made it defensible to ship.
Measured
Each of these is an observation I recorded, and each links to the page that shows how it was obtained. Where money appears it is a bill that stopped or spend never committed, stated gross, at the billed rate, never a token count multiplied out into an annual saving, because that needs a message volume and a headcount I never measured and the assumption would be doing all the work. The pages are also interested in the numbers that came out flat, like a guard that fired zero times or an optimisation worth one per cent, because those are the ones that changed a decision.
What I'm usually brought in for
What the first one looks like
A model has decided to send a message on someone's behalf. Nothing leaves until a person says yes, and if nobody answers, the answer is no. Press either button, or leave it alone and watch it decline.
Live, not a screenshot
- To
- A colleague (internal recipient)
- Message
- Thanks, I've reviewed the draft policy and left two comments on the retention section. Happy to walk through them tomorrow.
Reconstruction of the shipped UI. Countdown compressed to 15s for the demo; the real gate blocks for 60.
Selected work
Giving an AI assistant real access to a company's data
Corporate OAuth and four agentic tool servers added to an internal AI assistant, plus the security engineering that made giving a language model write access to mail, chat and calendars defensible.
→ Four tool servers live behind one consented identity. The assistant acts on a user’s own mail, chat, calendar and documents, and never sees a credential.
- Go
- Python
- Vue 3
- MongoDB
- Valkey
The thirty-thousand-token tax on asking what time it is
A per-user tool toggle and an embedding-based relevance gate in front of the model call, cutting the fixed token cost of having tools at all, plus the measurement that deleted the cleverest part of my own design.
→ The fixed cost of having tools at all, cut by up to ≈93% on a message, and the cleverest part of my own design deleted on its own evidence.
- Go
- Vue 3
- TypeScript
- MongoDB
- AWS Bedrock
The cache that had never served an answer
A three-tier answer cache that was wired up, logging, healthy and passing its tests had served zero answers in its entire life. The reason was a gate reading one number as if it were a different one.
→ The cheap answer path switched on for the first time, after finding two stacked defects that kept it dark across 658 attempts.
- Go
- MongoDB
- AWS Bedrock
- Retrieval-augmented generation
- Cost measurement
Elsewhere
How I work · CV · Contact
If any of the above is the shape of a problem you have, say hello. I read everything and reply to anything specific.