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 Call That Was Shaped Right and Meant Nothing

A tool call passed every check we had: valid JSON, right field names, matching types, and an order number that had never existed. Shape validation and reference validation are different questions, and only one of them was being asked. What we check now before a call leaves the process, why we stopped letting the model retry blindly, and the argument that fails in a way no schema can catch.

Where Our Models Come From, and What We Check

We do not train models, so we had filed training-time risk under not our problem. An inventory found eleven model and embedding artefacts pulled from public registries into systems we run, with provenance we could name for four. What we pin, what we mirror, why a hash is the cheapest control available, and the honest limit: we cannot inspect weights, so our defences are all about blast radius.

German Questions, English Documents

Half our users ask in German against documentation written in English, and for a long time that failure looked like poor coverage rather than a language problem. We measured four ways to bridge it: translating queries, translating documents, indexing both, and a multilingual embedding model. The obvious one came third, and the winner depends on something most comparisons leave out.

The Cache We Took Out

A shared answer cache cut costs by about a fifth and worked exactly as designed. It also meant a fast response revealed that someone else had recently asked a similar question, which for a platform serving competing companies is a disclosure nobody agreed to. Where we cache now, why per-tenant caching keeps most of the saving, and the timing channel that survives even that.

One Door for Every Model Call

A customer asked what their share of our model spend was, and we could not answer: one invoice, no attribution. The gateway we built took a week and repaid it four other ways, including the one that mattered most, which is that a model swap became configuration instead of a change in eleven places. What it records, what it refuses, and the one thing it must never become.

Our Test Set Was Too Tidy

Renaming one field broke a step that had passed eighty cases for months, with nothing about the task changed. The cases were real and they were also all phrased the same way, so the set had been measuring a step's fit to our phrasing rather than to the task. What we generate now to keep it honest, and why this is the one place model-generated data earns its place.

Why We Do Not Automate by Clicking Through Screens

A customer showed us an agent operating their ERP through its interface and asked how fast we could ship it. A screen is a rendering of a system, not the system, and automating against it means depending on a layout nobody promised to keep. The three questions we ask first, the one project where the answer was yes, and what we insisted on before it ran unattended.

It Was Fast and It Felt Slow

Three weeks of work cut median response time by a third and the feedback did not change. Users do not experience total duration, they experience the silence before anything appears, and our retrieval and reranking ran entirely inside that silence. What we reordered, why a progress message beats a spinner, and the case where streaming is the wrong answer.

The Review Step Works Until the Month Ends

We put a person in the loop and called it solved. Approval rates by day of month showed the check working for three weeks and collapsing in the fourth, when volume and pressure peak. Haduong et al. study what pressure does to AI-assisted decisions. What we changed in the queue rather than in the people, and why we now treat a human check as a component with a capacity limit.

We Quote Tasks, Not Roles

A customer asked us to replace a half-time position with an agent. We listed the eleven tasks that position actually performs and priced each one: four were worth automating, three were already someone else's job in disguise, and four depend on judgement we would not delegate. Why benchmark completion rates on real workplace tasks are the number to quote, and what the leftover coordination costs.

Making Invalid Output Impossible Instead of Retrying Until It Is Valid

Two percent of extractions failed to parse and a retry fixed them, which looked like a solved problem. Constraining generation to the grammar removed the failures entirely and then showed what the retries had hidden: the documents that failed to parse were the documents the step was getting wrong. Where we constrain, where constraining makes things worse, and why a valid record is still not a correct one.

Where a Reasoning Model Earns Its Latency

We ran all nine steps of a pipeline against a model that reasons before answering. Two improved clearly, six were unchanged, and one got measurably worse. The pattern is not difficulty, it is whether a step has an intermediate decision at all. Also the thing customers most often get wrong: the visible reasoning reads like an explanation and is not one you can put in an audit trail.