Home AI Solutions Ready-made Solutions Peers & Simulation RAG & Retrieval Use Cases Frameworks Blog Deutsch Contact Us

Technical analyses

Evidence-led. Grounded in production. Explicit about limits.

Since 2023, we have analyzed what works reliably in AI systems — using numbers, sources, and clearly stated technical limits.

The Leaderboard Is Not Your Evaluation

A customer asked why we were not using the model at the top of a ranking. We ran the swap on our own set and the higher-ranked model was worse at the work we do: it wrote better prose and followed the schema less reliably, which is exactly the trade a preference ranking rewards. What a leaderboard measures, what it structurally cannot, and how eighty of our own cases decide instead.

Changing the Embedding Model Is a Migration, Not a Setting

The change was one line of configuration. The consequence was half an index answering in the old vector space and half in the new one for most of a working day, with a symptom that looked like a quality problem. Why vectors from two models cannot be compared at all, the dual-index procedure we use now, and why a better benchmark score is not on its own a reason to pay for a re-index.

When the Page Is a Picture, Text Extraction Loses the Table

The scan was clean, character recognition was accurate, and the extracted data was wrong: a three-column table read left to right produces correct words in an order that means something else. Where we now send the image instead of the text, why we kept OCR for most documents anyway, and the one check that makes either path safe to run unattended.

What We Do When a Paper Goes Viral

A new architecture reached the general press and three customers asked in one week whether it changed our recommendations. The four questions we work through, why most exciting results are about a layer we do not touch, and the distinction that answers nearly all of these calls: a result can be genuinely important to the field and irrelevant to a system that is limited by its data.

What We Let an Agent Touch in Our Own Repositories

Our agent opens pull requests and cannot merge them, runs tests and cannot change the pipeline. None of those limits came from a policy document; each came from a specific afternoon. What Yang et al. call the agent-computer interface is the part we spent most time on, and the rule underneath all of it: the tools define the blast radius, so an action that cannot be undone by a human in a minute does not get a tool.

The Answer That Lives in Two Documents

The delivery date was in the order and the agreed window in the contract, so no retrieved passage could contain both. The obvious answer is a knowledge graph over the corpus. We measured first: the link both documents needed was a contract number they already carried, and a deterministic join on a field beats a learned association whenever the identifier exists. Where that stops being true, and what we would build instead.

Getting an Assistant to Say It Does Not Know

Ours abstained on two percent of questions and should have abstained on nine. Firmer instructions moved the number and moved it in both directions, refusing questions it could answer perfectly well. What worked was separating two different reasons for not knowing, giving each its own signal and its own response, and accepting that one of them cannot be detected from the model at all.

We Tried the Prompting Techniques. Most Did Nothing.

A survey counted well over fifty named prompting techniques. We ran the eleven that plausibly applied against one labelled set: two helped, one actively hurt, and the other eight were indistinguishable from noise on our tasks. Which two, why the technique that hurt is the one most often recommended, and the reason a catalogue of techniques is more useful as a list of things to test than as a list of things to adopt.

Forty Thousand Tickets, Two Thousand Worth Using

A customer wanted their whole six-year support archive put to work. The system built on a filtered five percent answered better than the one built on all of it, because the archive contained superseded advice that reads exactly like current advice. What we filtered on, why recency alone was not enough, and how we made the discarded ninety-five percent a decision the customer could inspect rather than a black box.

The Document That Gave Orders

A supplier pasted a note for a colleague into the footer of a delivery note, our extraction step read it as an instruction, and followed it. Nothing malicious had to happen for us to discover we had no boundary between content and command. What we changed, why filtering for injection patterns is the weakest of the four measures, and the one that actually holds: content never reaches a step that can act.

We Priced Putting the Whole Corpus in the Window

Every few months someone asks whether long context windows make retrieval unnecessary. It is an arithmetic question. For one of our corpora the whole thing fits and we do put it in the window; for another it would have cost forty times more per question for a quality difference we could not measure. The three properties that decide it, and the hybrid we run where the corpus sits in between.

Letting a Step Think Longer Instead of Reaching for a Bigger Model

One step in a nine-step pipeline was failing, and the obvious fix was a bigger model for everything. Snell et al. show that spending more compute at inference can beat spending it on model size. We spent it on one step: three candidate plans, a deterministic check on each, first valid one wins. It cost about three percent of what upgrading the whole system would have.