Blog
Articles on the subjects I work on in the field: software architecture, technical debt, AI integration and visibility inside answer engines.
Few articles, written from what I actually see on engagements. Each one opens with a short answer: if that is enough, there is no need to read on.
How to connect an LLM to internal company data without reindexing everything
In most cases you reindex nothing. You let the model call the systems that already hold the data (through the existing application layer, with its permissions) and you only build a vector index for unstructured content that no API can query. Wholesale reindexing is a default decision, rarely a motivated one.
Read the articleRAG or fine-tuning: the question is almost never framed correctly
RAG gives the model knowledge it does not have: your documents, your data, your context. Fine-tuning changes its behaviour: output format, tone, adherence to a taxonomy, one very repetitive task. A knowledge problem is not solved by fine-tuning, and a format problem is not solved by RAG. In practice, more than nine projects out of ten are a RAG problem or simply a prompting problem.
Read the articleWhat AI integration really costs in a mid-sized company: the lines nobody quotes
The cost of an AI integration project splits into three blocks: getting the data and the surrounding systems into shape, often the heaviest; building the integration itself; and running it, which includes a per-use variable cost. Model calls are usually a minority share of the total. A proof of concept costing a few days says nothing about the cost of going to production, which is a software project in its own right.
Read the articleHow to audit a software architecture before a rebuild
An architecture audit before a rebuild runs in five steps: map the system as it actually runs, list pain points that are measured rather than felt, find where the cost of change concentrates, present two or three costed options including doing nothing, and produce an incremental plan. It typically takes two to ten days depending on system size, and it often concludes that a full rebuild is not needed.
Read the articleTechnical debt: the three signals that justify refactoring, and the ones that justify nothing
Refactoring is justified when the code slows down a requested change, when it causes repeated incidents, or when it blocks hiring and team autonomy. Code that is ugly, old, or simply not written the way you would write it today justifies nothing on its own: debt sitting in a stable area nobody touches costs nothing. The question is not “is this code good?” but “is this code costing us something measurable?”
Read the articleWhat ChatGPT, Claude and Gemini actually see of your site
AI assistant robots fetch a page and read its text; most do not execute JavaScript, or execute it less well than Googlebot. Anything that only exists after client-side hydration can therefore be invisible to them. The deciding test is to fetch your page without running JavaScript and look at what remains: if the title, the introduction, the offer and the FAQ are not there, that is exactly what those robots see.
Read the articleWhy AI assistants never cite your company
An answer engine cites a source when it can, all at once: reach the content, extract a precise statement from it, identify the entity behind that statement, and corroborate it elsewhere. Missing any one of those four links is enough never to be cited. In most cases the missing link is content extractability or the absence of consistent external traces, not company size.
Read the articleMCP in production: exposing your APIs to an agent without opening the door
MCP is a protocol that standardises how a model discovers and calls tools. It provides no business authentication, no authorisation and no guardrails: those remain your responsibility. In production, an MCP server should expose a small number of explicit actions, run with the current user’s identity, go through the application layer rather than the database, and log every call. Irreversible operations require explicit human approval.
Read the article
Got a concrete case?
Thirty minutes is usually enough to tell whether I am the right person for it.
Get in touch