Language models made a new class of software possible: systems that read, write, decide and act on unstructured input. They also made a new class of demo possible - the kind that impresses everyone in the room and then quietly never ships, because nobody can say how often it is wrong.
We build the shipping kind. The difference is not the model; it is everything around it.
What we build
Retrieval & assistants
Assistants grounded in your documents, wikis and databases - answering from your content with sources attached, declining what they cannot support.
Report generation
Structured drafts from data: measurement results in, reviewable report out, with every generated claim traceable to the record behind it. Built for workflows where a person signs - the model drafts, the expert decides.
Tool-using agents
Systems that plan and act - querying databases, driving pipelines, filing results - with scoped permissions and confirmation gates sized to what each action can break.
Structured extraction
Decades of PDFs, logbooks and free-text fields turned into queryable columns - the highest-yield LLM application in most scientific organisations, and the least glamorous.
Evaluation is the deliverable
Ask a vendor how good their LLM feature is and you get a demo. Ask how often it fails and you get silence. That gap is where these projects die - so we invert it: the evaluation harness is built first, and the system has to earn its way through it.
- 1
Define failure
What does wrong look like here - a hallucinated citation, a missed extraction, an action taken without grounds? Made concrete, with your experts, before any prompt is written.
- 2
Build the eval set
Real cases from your domain, labelled once, versioned forever. Every prompt change, model swap and retrieval tweak reruns against it.
- 3
Measure, then ship
Failure rates per category, not a vibe. The system ships when the numbers clear the bar you set - and the numbers are yours to keep.
- 4
Watch it in production
Sampled review queues and drift checks, because the distribution of real questions never matches the eval set forever.
This is the same discipline as the rest of our method - measured behaviour, calibrated confidence, failure that announces itself - applied to systems whose raw material is language. When the model is uncertain, the system should be able to say so and hand off to a person, exactly like our vision and tabular deployments flag their hardest cases.
Private by architecture
Scientific and industrial language data - lab records, process documentation, support tickets - is usually the most sensitive text an organisation holds. Where it runs is an architecture decision, made deliberately:
- EU-hosted APIs with contractual data-processing terms, for work where managed frontier models earn their cost.
- Self-hosted open-weight models on your infrastructure or ours, for data that must not leave - smaller models on well-shaped tasks close most of the gap.
- No training on your data, verified in the terms rather than assumed, whichever path is taken.
Deployment, monitoring and the serving infrastructure follow the same patterns as everything else we run - an LLM endpoint is a model endpoint.
Built to be attacked
Every system on this page takes instructions from text, and some of that text will eventually be hostile. Prompt injection through retrieved documents, leakage through patient questioning, agents talked into misusing their tools - these are design constraints from day one, not findings to be discovered later: output validation at the trust boundary, tool permissions scoped to the task, and untrusted content treated as data rather than instructions.
We also red-team these systems professionally - including ones we did not build. Building and attacking the same class of system is exactly why we are reasonable at both.
Where to go next
AI Trust & Security
The adversarial side: red-teaming, attack agents and code review for LLM systems already in production.
How we build
The measurement-first method this page keeps referring to.
Cloud & deployment
Serving, scaling and the infrastructure security an agent inherits.