AI engineering

Building software that uses language models safely, and using AI tools to build software faster, without handing over the engineering judgement.

What this is, and is not

  • AI application developmentBuilding products that call models through an API: copilots, chatbots and retrieval. This is the focus of this page.
  • AI-assisted codingUsing tools such as Codex and Claude Code to help write and review software. A way of working, not a product.
  • Training machine-learning modelsA separate discipline. I use trained models through APIs; I am not presenting myself as a model researcher.

Areas of work

AI coding
Codex · Claude Code · AI-assisted reviews · Development workflows
AI coding tools speed up implementation, refactoring and test writing. I treat their output like a colleague's pull request: it is read, run and tested before it is merged, and I stay responsible for every change.
AI applications
LLM APIs · Chatbot development · AI copilots
Applications that call large language models through an API, wrapped in the product's own logic, permissions and logging, such as the DEVV copilot and the assistant on this site.
Retrieval
RAG · Embeddings · BM25 · Vector search
Grounding answers in real content. This site's assistant uses a BM25 ranking engine over the site's own pages, and the toolkit also covers embeddings and vector search for larger knowledge bases.
AI reliability
Retry handling · Rate limits · Fallbacks · Evaluation
Model calls fail, slow down and get rate-limited. Reliable AI features retry with limits, degrade to a working fallback and are checked against a fixed set of test questions.
AI security
Role-aware retrieval · Authorization · Data isolation
The model is never the access-control layer. Who may see what is decided by the application before any content reaches the model, so one user's data cannot appear in another user's answer.
AI infrastructure
Provider integration · Cost control · Logging · Observability
Integrating model providers behind a single layer, limiting usage and spend, and keeping logs that make a wrong or slow answer traceable.

Let's build something that works.