Skip to content
CipherCruCipherCru

Menu

AI Development

AI Integration and Deployment

A model is a dependency that is slower, more expensive and less reliable than the rest of your stack. It has to be integrated like one.

Typical duration
Two to six months
Team shape
Two to four senior engineers
Starts with
A failure-mode review
A model service sitting behind an existing application, with its fallback path

Design for the day the model is unavailable

Model providers have outages, rate limits and latency that varies by an order of magnitude between calls. Integrated carelessly, that becomes your application's outage, your application's timeout, and a bill nobody forecast.

So the first conversation is about failure rather than capability: what the product does when the model is slow, when it is unavailable, and when it returns something unusable. Every one of those needs a designed answer before the feature ships, because the alternative is discovering all three in the same week, in production, with no fallback to switch to.

What usually goes wrong, and what we do instead

AI integration failures are ordinary integration failures with a larger bill attached.

Where AI integrations go wrong

  • A synchronous call in a request path, so provider latency becomes yours
  • No fallback, so a provider outage is a product outage
  • Costs discovered at the end of the month rather than budgeted per call
  • Prompts changed in production with no way to compare before and after
  • Sensitive data sent to a provider because nobody checked what was in it

How we build it instead

  • Model calls off the critical path wherever the product allows it
  • A designed fallback for slow, unavailable and unusable responses
  • Cost budgeted and metered per feature, with alerting on spend
  • Prompts versioned and evaluated, so a change is a measured decision
  • Data classified before it leaves, with redaction where it must not

What we build

The parts of an AI integration that decide whether it survives a bad day at the provider.

Model gateway

One internal interface in front of every provider, so a switch is configuration rather than a rewrite.

Fallbacks and degradation

A designed answer for slow, unavailable and unusable, rather than an error page and an apology.

Cost control

Budgets and metering per feature, with caching for the repeated requests that quietly dominate spend.

Data boundaries

Classification and redaction before anything leaves, with self-hosted models where it must not.

Prompt and model versioning

Changes evaluated against a scored set before release, so a tweak is not a gamble.

Observability

Latency, error rate, spend and output quality per feature, alerting before users notice.

How the pieces fit together

The model sits behind your own service rather than being called from your application directly, which is what makes every other decision here possible.

An application calling an internal model gateway, which fronts several providers with caching, budgets and a fallback path
Stand-in artwork. The numbered legend describes the system rather than this picture.

What each part does

  1. Your application: calls one internal interface and never learns which provider is behind it or that it changed.
  2. The gateway: routing, retries, timeouts and rate limiting in one place, so behaviour is consistent across features.
  3. Redaction: data classified and stripped before it leaves your boundary, according to a policy rather than a habit.
  4. Providers: more than one where the workload allows, so an outage is a routing change rather than an incident.
  5. Cache and budget: repeated requests served without a call, and per-feature spend metered with alerting.
  6. The fallback: what the product does when the model is slow, down or unusable — designed, not discovered.

How the work runs

The same five stages as every engagement, applied to a dependency you do not control.

Diagnose

Where the model would sit, what data would leave, and what the product should do when it fails.

Decide

The gateway, the fallback behaviour and the data policy, written down before the first feature is wired.

Prove

One feature in production behind the gateway, with its fallback exercised deliberately rather than assumed.

Deliver

Features integrated in slices, each metered and monitored before the next is scoped.

Hand over

Your team changes a provider and a prompt with us watching, then without us.

What we build it with

Chosen for what has to be operated afterwards, and by whom.

Models

  • Anthropic
  • OpenAI
  • Gemini
  • PyTorch

Services

  • Python
  • TypeScript
  • Node.js
  • REST
  • Temporal

Data

  • PostgreSQL
  • pgvector
  • Redis
  • Kafka

Platform

  • AWS
  • Azure
  • Kubernetes
  • Datadog
  • Sentry

What you get, and when

Handed over as it is produced, not assembled at the end.

  • The failure modes and the designed answer to each
  • A data classification and redaction policy, agreed
  • A forecast running cost per feature, before anything is wired
  • Source in repositories you own
  • A gateway fronting every provider behind one interface
  • Prompts versioned, with an evaluation run on every change
  • Latency, spend and quality dashboards per feature
  • Budget alerts, so a runaway loop is caught in hours
  • A runbook for a provider outage your team has rehearsed

Questions about AI integration

The ones we are asked most often before a first conversation.

What happens if the provider has an outage?
Whatever you decided it should, which is the point of designing it up front. Depending on the feature that might be routing to a second provider, serving a cached or rules-based answer, or degrading visibly to a manual path. What it should never be is an error page, and the fallback is exercised deliberately during the engagement rather than tested for the first time by an outage.
How do we stop the bill running away?
Metering per feature rather than one aggregate figure, budgets with alerts that fire in hours rather than at month end, and caching for repeated requests — which in most products is a surprisingly large share of the volume. We forecast the running cost during the review, before anything is wired, because a feature that costs more per use than the work it replaces should be found then.
Can we run models in our own environment?
Yes, and for some workloads it is clearly right — where data cannot leave, where volume makes per-call pricing unattractive, or where a provider dependency is unacceptable. The trade is capability at the top end and an operational burden your team has to carry. We will tell you what the gap looks like for your specific task rather than in general, because in general it means nothing.
How do we know what data is being sent?
Because it is classified before it leaves rather than reviewed afterwards. The gateway is a single choke point where redaction is applied by policy, which is exactly why we put one in — with model calls scattered through an application, nobody can answer this question with confidence. The policy is written down and testable rather than being a convention.
Model calls are slow. How do we handle that?
By keeping them off the critical path wherever the product allows: pre-compute where you can, stream where the user benefits from partial output, and process asynchronously where a result can arrive a moment later. Where a synchronous call is genuinely required, there is a timeout with a designed fallback behind it rather than a spinner that eventually gives up.
How hard is it to change model later?
Straightforward, if the gateway exists from the start — a configuration change and an evaluation run to confirm quality holds. Without one it is a search through the codebase for every call site, which is the state most teams reach within a year of their first AI feature. Building the interface early is cheap; retrofitting it is the expensive version of the same work.

Adding a model to a system that has to stay up?

Tell us where it would sit and what data would leave. We will tell you what has to happen when it fails.

Strictly necessaryEssential for the site to function: page navigation, security, session management, and remembering the cookie choices you make here.
Always on
FunctionalRemembers choices you make, such as language, region or display preferences, so the site opens the way you left it.
Performance and analyticsPerformance and analytics cookies show us how the Website is used: which pages are visited, how long is spent on them, where visitors came from, and what errors occur. They are set by Google Analytics and by HubSpot, whose cookies also link the pages you viewed to any enquiry you later send us.
Marketing and targetingTracks browsing activity to measure advertising and show relevant ads. We set none of these today, and will not without your opt-in.