Grounded · evaluated · cost-aware

Language models, wired into software that has to be right.

A demo that works once is easy. Software that gives a defensible answer on the ten-thousandth request — cheaply, quickly, and without inventing facts — is engineering. That gap is where this work lives.

Integration means the model is one component inside a system that validates it. Everything around the model call is what makes it production software: where context comes from, what happens when output is malformed, what the fallback is when a provider is down, and how you prove quality changed when you edited a prompt.

Move your cursor over the panel
vectors 0nearest drag your cursor
GroundingYour data
OutputSchema-checked
ProviderSwappable
QualityMeasured

The gap

Three things that separate a demo from a product

Almost every stalled AI project we are asked to look at is stuck on one of these. Move your cursor — the three panels drift at different depths, and the frosted glass softens whatever passes behind them.

01 — Grounding

It answers from your data, not its memory

A model's general knowledge is broad, stale and unattributable. Production answers come from your documents and records, retrieved per request, with a citation attached so anyone can check the source.

02 — Structure

Output your code can rely on

Downstream software needs fields, not prose. Responses are constrained to a schema and validated before anything acts on them — and when validation fails, the system retries or degrades rather than passing on nonsense.

03 — Evaluation

Proof that a change helped

Without a test set of real cases with known good answers, prompt edits are guesswork. With one, every change produces a number, and you find out before your customers do.

The stack

Ordinary infrastructure, one unusual component

Most of an LLM system is software you would recognise from any other backend — a queue, a database, a cache, a deployment pipeline. The model is one call inside it, and it is deliberately the easiest part to replace.

Model providers

OpenAI
Anthropic Claude
Google Gemini
Hugging Face
Ollama (self-hosted)
LangChain

Retrieval & memory

PostgreSQL + pgvector
Elasticsearch
Redis
Supabase
Python
FastAPI

Application runtime

Node.js
TypeScript
Next.js
Docker
Kubernetes
Vercel

Deployment & observability

AWS
Google Cloud
Cloudflare
Grafana
OpenTelemetry
Sentry

Applications

Six places a language model earns its cost

These share a shape: text goes in, something structured and useful comes out, and a person would otherwise be reading carefully for a long time.

Use case 1 of 6
01 — Classification

Sorting what arrives

Incoming text routed by what it actually means rather than which keywords it happens to contain — enquiries, tickets, applications, reviews.

  • Handles phrasing nobody anticipated
  • Returns a confidence score, not just a label
  • Low confidence routes to a person

Replaces: reading everything to sort it

02 — Extraction

Turning documents into fields

Contracts, invoices, forms and reports reduced to structured records your existing systems can consume without anyone retyping.

  • Output validated against a schema
  • Per-field confidence recorded
  • Anything uncertain is flagged, not guessed

Replaces: manual data entry

03 — Search

Finding by meaning

Semantic search over your own content, so a question phrased differently from the document still finds it — with the source shown.

  • Understands intent, not just keywords
  • Respects existing permissions
  • Returns passages, not just links

Replaces: keyword search that misses

04 — Drafting

First versions at speed

Replies, summaries, descriptions and reports drafted in your house voice, with a person editing rather than starting from nothing.

  • Trained on your existing material
  • Consistent structure every time
  • Always reviewed before it goes out

Replaces: staring at a blank page

05 — Summarising

Long input, short output

Call transcripts, ticket threads and research condensed to what changed, what was decided and what needs doing.

  • Consistent format for scanning
  • Links back to the source passage
  • Flags disagreement rather than averaging it

Replaces: reading the whole thread

06 — Translation

Between formats and languages

Moving content between languages, tones and formats — including the unglamorous kind, like legacy records into a modern schema.

  • Keeps terminology consistent
  • Preserves structure and markup
  • Round-trip checked where it matters

Replaces: slow manual reformatting

Mechanics

What one request actually passes through

The model call is step four of seven, and it is the shortest. Step through a single request — a support email arriving that needs classifying and answering.

Read step five carefully. The system assumes the model will occasionally return something unusable and handles that as a normal event rather than an emergency. That assumption is most of the difference between a prototype and something you can leave running.

Economics

The arithmetic, before anyone builds anything

Model cost is usually the smallest line in an AI project and the one everyone asks about first. Drag the sliders — this is an illustration of how the shape works, not a quote.

Model
Staff time
Model cost, per month

The point of the exercise is the ratio, not the number. Model spend on most business workloads lands somewhere between negligible and modest, which means the real question is never can we afford the tokens — it is whether the build, the evaluation set and the ongoing supervision are worth it at your volume. That is a conversation worth having before writing code, and it occasionally ends with us saying no.

Design

Nine decisions that shape the result

Each of these is settled early, written down, and revisited with evidence rather than opinion. Hover a card — the highlight follows your cursor.

01

Which model, and why

Capability, latency, cost and data-handling terms differ sharply. The right answer is often a smaller, cheaper model for most requests with a larger one held in reserve.

02

What goes in the context

More context is not better. Precision in what gets retrieved matters more than volume, and it is the single biggest lever on both quality and cost.

03

How chunks are cut

Splitting documents badly is the most common cause of poor retrieval. Boundaries should follow meaning — sections, clauses, turns — not character counts.

04

Structured output format

A defined schema with validation, so downstream code never parses prose and never acts on a field that is missing or the wrong type.

05

Failure behaviour

What happens on malformed output, a timeout, a rate limit or a provider outage. Retry, degrade, queue or escalate — decided in advance, not during an incident.

06

Where a person sits

Review everything, review a sample, review only low-confidence cases, or review nothing. This is a risk decision and it belongs to you.

07

What gets measured

Accuracy on a held-out set, escalation rate, latency at the ninety-fifth percentile, cost per task. Without these, "it seems better" is the only available verdict.

08

What data leaves

Which fields go to a provider, what is redacted first, and whether anything sensitive requires a model running on infrastructure you control.

09

How prompts are versioned

Prompts are source code. They live in the repository, change through review, and every version is tied to the evaluation numbers it produced.

Honesty

The failure modes worth knowing about first

None of these are reasons to avoid the technology. They are reasons to design for them, and to be suspicious of anyone who does not mention them.

Fluent invention

Confident wrong answers

Models produce plausible text, and plausible is not true. Grounding, citation and validation are the countermeasures; none of them are optional.

Silent drift

Quality changes underneath you

Providers update models. Behaviour shifts without notice. A regression suite catches it; nothing else reliably will.

Runaway spend

Cost that scales with mistakes

Retry loops and bloated context turn a small bill into a large one quickly. Hard caps per request and per day are basic hygiene.

Latency

Slower than users expect

Several seconds is normal and often unacceptable in an interface. Streaming, caching and doing the work in the background all help.

Prompt injection

Untrusted text giving orders

If the model reads content from outside your organisation, that content can attempt to instruct it. Treat retrieved text as data, never as instruction.

Lock-in

Building on one provider's shape

Provider-specific features are convenient until pricing or terms change. Keeping the interface generic is cheap insurance.

Questions

LLM engineering, answered

What is the difference between this and just using ChatGPT?

A chat interface is a person talking to a model. Integration means your software talks to it — automatically, thousands of times, with your data as context and structured output that other code acts on.

Everything that makes that dependable is the work: retrieval, validation, fallbacks, evaluation, monitoring and cost control.

Can it use our internal documents and data?

Yes, and for most business use cases that is the entire point. Your material is indexed and the relevant passages are retrieved per request, so answers come from your content with a citation attached.

Existing permissions are respected — the system should never surface a document to someone who could not otherwise open it.

How do you stop it making things up?

Three layers. Ground it so answers come from retrieved passages rather than recall. Constrain output to a schema so anything malformed is rejected before it reaches your systems. Measure accuracy against a set of real cases with known correct answers.

None of that gets you to zero. It gets you to a rate you have measured, with the residual handled by review where the stakes justify it.

What does it cost to run each month?

Model usage is metered by volume of text processed, and for typical business workloads it is a smaller line than most people expect — the calculator above shows the shape.

The costs worth planning for are the build, the evaluation set, and someone's attention on the monitoring. Those are the ones that get underestimated.

Are we locked into one AI provider?

Not the way we build it. Model calls sit behind an internal interface, so switching provider is a configuration change and a re-run of the evaluation set rather than a rewrite.

That matters because pricing, capability and terms all move faster in this area than in any other part of a normal stack.

Is our data used to train models?

Under the business and API terms of the major providers, no — API data is excluded from training by default. We configure it explicitly and can show you the setting.

Where data is genuinely sensitive, the options are redaction before it leaves your network, or an open model running on infrastructure you control. The second costs more and is sometimes correct.

Can you work with the AI feature we already started?

Frequently. A common engagement is a review of something already built that works in testing and is not trusted enough to launch — usually missing evaluation, error handling and cost limits rather than needing a rebuild.

You get a written assessment of what is solid, what is missing and what it would take. Sometimes that is a short piece of work.

How long does a first integration take?

A single well-defined capability — one task, one data source, clear success criteria — is usually a matter of weeks including the evaluation set.

We start narrow deliberately. The first version tells you things about your own data and your users' real questions that no planning session would have.