About
About me
I'm a full-stack software engineer and AI consultant with 10+ years of experience building production systems across a range of industries and company sizes.
For the past few years I've focused on AI integration — connecting LLMs and retrieval systems to real products. That means working with existing models and APIs, not training new ones. The problems I solve are integration problems: data pipelines, access controls, observability, and the delivery structure that determines whether a project ships or stalls.
Alongside AI work, I design and build web applications and APIs — backends, frontends, and everything in between. I'm comfortable across the stack and I've worked with TypeScript, Python, React, Node, and a range of cloud and data infrastructure.
I started consulting because I kept seeing the same pattern: a team builds something impressive, it works in the demo, and then it quietly fails in production for reasons that weren't hard to anticipate. I like fixing those problems, and I'm good at explaining them to both engineers and the people who fund them.
I work with a small number of clients at a time. That's not a pitch — it's how I make sure the work is actually good.
What I believe about this kind of work
The hard part of AI systems isn't the model. It's the data, the access controls, the evaluation, and the delivery. Anyone can connect an API. Getting a system to behave reliably, cheaply, and safely at scale is the problem worth solving.
The same is true for software in general. Most codebases don't fail because of bad technology choices. They fail because the structure wasn't maintained, the tests weren't written, and nobody had the time or mandate to fix it before it became a crisis.
I don't think you need a large agency for either problem. You need one senior engineer who has done it before, who will tell you when something is a bad idea, and who will still be reachable when something breaks after launch.
Selected experience
AI search integration for a document-heavy internal tool
A product team's keyword search was returning irrelevant results and users had stopped trusting it. I replaced the search layer with a retrieval-augmented pipeline — connecting their document store to an LLM-based query interface, adding evaluation against curated test queries, and wiring in alerting for quality drift. The team adopted it as the primary interface within the first week of rollout.
API stabilisation and CI/CD for a startup with a fragile codebase
A startup had a working but fragile API that was blocking their mobile team. The codebase had grown without a clear data layer, test coverage was minimal, and deploys were manual. I audited the code, introduced a structured service layer, added integration tests for the critical paths, and set up a CI/CD pipeline. The mobile team unblocked within two weeks and deploys became routine.
Client names and identifying details withheld.
How I show up
- Async by default — structured updates twice a week, no bloated standups.
- Architecture artifacts delivered before the first sprint, so there are no surprises mid-build.
- I do the work — I don't hand off to junior engineers or disappear after the kickoff.
- Every engagement ends with documentation your team can actually use.
- I don't take on more than two projects at a time. When I'm on yours, I'm focused on it.
Ready to talk?
If you're dealing with a specific problem — or you're not sure yet whether what you're building is going to hold up — I'm happy to spend 30 minutes on a call to find out.
No sales process. Just a conversation.