Services / AI Engineering

AI chatbots &
AI assistants.A useful next step.

We build conversational experiences that answer from trusted knowledge, help people complete real tasks and hand over when a person is needed. Connected to your systems, grounded in evidence and clear about their limits.

Explore the tech stack

Clear scope. Permissioned knowledge. Human help when it matters.

The business case

A chat window is not the outcome.

The value is in helping someone find the right answer, finish a task or reach the right person with less friction. We first identify the recurring job and the cost of getting it wrong, then decide whether a custom assistant is the right intervention.

Where it can make sense

Repeated questions across scattered knowledge, product workflows that need contextual guidance, or service teams that spend time gathering information before helping a customer. Start with a bounded, measurable task and a named owner.

Where a simpler solution wins

A better help page, search function, form or existing support platform may solve the problem more reliably. An assistant cannot repair missing policies, poor source data or a handoff process nobody owns.

Example engagements

Built around the person using it.

These are illustrative scopes, not customer performance claims. Each combines a useful job with explicit boundaries and a way to judge the result.

Customer support

Answer product and policy questions from approved sources, collect diagnostic details and prepare a useful support ticket.

Escalate disputed charges, exceptional refunds and uncertain answers. Do not invent policy or claim that a ticket was resolved.

Measure: Supported-answer accuracy, repeat contacts and quality of escalations.

Employee knowledge assistant

Help colleagues find procedures, benefits guidance and internal documentation with links to the underlying sources.

Enforce the employee's document permissions on every retrieval. HR-sensitive or personal advice goes to the appropriate team.

Measure: Successful searches, source freshness and permission-boundary tests.

Product onboarding

Guide users through setup, explain features in context and help diagnose common configuration problems.

Use actual product state where available. Confirm before changing settings and keep a non-chat route to essential functions.

Measure: Task completion, recovery from errors and time to a useful next step.

Sales & service discovery

Explain a verified offering, clarify requirements and capture an enquiry with the visitor's consent.

Keep prices, availability and contractual commitments tied to approved records. No fabricated offers or automatic commitments.

Measure: Qualified enquiries, accurate answers and successful CRM delivery.

Operations copilot

Summarise a case, retrieve account information and prepare a bounded action such as drafting a ticket or updating an approved field.

Authenticate before account access. Validate permissions and require confirmation for consequential changes.

Measure: Correct task outcomes, rejected unauthorised requests and review effort.

Specialist research assistant

Compare authorised documents and produce a source-linked explanation or draft for a qualified reviewer.

Surface missing evidence and conflicting sources. Do not present generated material as professional or regulated advice.

Measure: Citation correctness, evidence coverage and reviewer corrections.

The system behind the dialogue

One conversation. Explicit boundaries.

The interface connects to a controlled application: identity, permissioned retrieval, validated tools and a human path. Conversation history provides context, but it does not grant access or authorise an action.

01

Establish identity & intent

Identify the channel, authenticate where needed and clarify the job. Public answers and account-specific requests follow different access paths.

02

Retrieve permitted context

Search approved, current sources with access filters enforced before content reaches the model. Preserve document versions and source references.

03

Answer or prepare an action

Generate an evidence-grounded response, ask a clarifying question or call a narrowly scoped tool. Validate tool inputs and business rules outside the model.

04

Confirm, escalate & record

Show what will change before a consequential action, report only confirmed outcomes, or transfer to a person with relevant context and privacy-aware evidence.

Conversation design

Useful dialogue. Not endless conversation.

We design around the user's goal rather than making every interaction a chat. The assistant should ask only what it needs, recover gracefully and make the next step clear.

Scope & expectations

Identify the assistant as AI and state its role and limits. Define supported intents, prohibited requests and which information belongs in a secure authenticated flow.

Clarification & recovery

Handle ambiguity, corrections, topic changes and incomplete requests. Ask targeted questions instead of guessing, and offer a clear fallback after repeated failures.

Structured interaction

Use forms, selectable options, source links and action summaries where they are more reliable than free text. Retain keyboard, screen-reader and non-chat alternatives.

Language & tone

Agree terminology and response style with your team. Evaluate each supported language and accessibility need; model language support alone is not proof of service quality.

Knowledge & retrieval

Answers are only as useful as their sources.

Connecting documents is the start, not the finish. We design ingestion, retrieval and maintenance so the assistant can find relevant evidence without crossing access boundaries.

Source preparation

Inventory help centres, documents and systems. Parse and chunk content with metadata, versioning and a named owner; identify duplicates, contradictions and missing material.

Permission-aware search

Apply tenant, user and document-level permissions during retrieval, including cached results. Test deleted documents and revoked access rather than trusting a prompt to enforce security.

Evidence & uncertainty

Link factual responses to supporting passages where appropriate. Test that citations actually support the claims; missing or conflicting evidence should trigger clarification or escalation.

Freshness & maintenance

Define update schedules, deletion propagation and stale-source handling. Live availability, account balances and other changing facts should come from authorised systems, not model memory.

Integrations & actions

Reading is different from changing something.

An assistant that can act needs a stricter contract than one that answers questions. We start with read-only or draft workflows where practical and expand authority only when the evidence supports it.

Narrow tool contracts

Expose specific operations with typed inputs, scoped credentials and server-side validation. Do not give the assistant unrestricted database access or arbitrary execution.

Explicit approval

For consequential actions, show the destination, parameters and effect for confirmation. Recheck permissions at execution time; a user's chat instruction is not an authorisation grant.

Reliable execution

Use idempotency, timeouts and safe retry rules to avoid duplicate tickets, bookings or updates. Separate requested, pending and confirmed states in the conversation.

Channel-specific constraints

Assess web, in-product, Slack, Teams or messaging integrations individually. Identity, provider policies, message delivery and conversation continuity differ between channels.

Human handoff

A good assistant knows when to stop.

Escalation is part of the product, not a failure screen. We agree who receives the handoff, what they need to see and what happens when nobody is available.

Escalation triggers

Route uncertain answers, repeated failures, sensitive issues and user-requested human help to a defined team. Do not trap people in a conversational loop.

Context that helps

Transfer a concise summary, relevant sources, attempted steps and confirmed actions, subject to access and retention rules. Make it clear what still needs verification.

Real availability

Connect to a supported inbox or ticketing workflow. Only promise live transfer when the destination is actually available; otherwise confirm the ticket or provide an honest next step.

Feedback without blind learning

Review unresolved questions and corrections to improve sources, prompts and workflows. Conversations do not automatically become training data without an agreed lawful process.

Security & data handling

The conversation is not a trust boundary.

User messages, uploaded documents and retrieved pages are untrusted input. Security controls belong in the application and connected systems, not only in model instructions.

Identity & isolation

Separate anonymous and authenticated sessions, enforce tenant boundaries and scope every tool request to the caller. Test cross-user leakage through retrieval, memory and caches.

Prompt injection & disclosure

Test malicious instructions in messages and sources, data exfiltration attempts and tool misuse. Limit accessible data and capabilities even when model instructions are bypassed.

Memory & retention

Keep only the conversation state the task needs. Define session expiry, deletion and any persistent memory explicitly; minimise personal information and redact secrets in traces.

Processing & consent

Review model-provider terms, subprocessors, regions, telemetry and storage. Agree notices, consent where required and retention with your legal and security owners; hosting alone is not a compliance guarantee.

Evaluation & operations

Measure resolution. Not just replies.

We build a representative test set before rollout and assess the whole conversation, including retrieval, actions and handoffs. A confident answer or a high containment rate is not proof that the user got the right outcome.

Conversation quality

Evaluate intent coverage, multi-turn corrections, unsupported questions, source-grounded accuracy and escalation quality with a documented human-review rubric.

Safety & permissions

Run adversarial and regression cases for injection, sensitive disclosure, unauthorised actions and tenant isolation. A failed critical boundary blocks release until addressed.

Latency & resilience

Measure time to first useful response, completion time, errors and cost on realistic conversations. Test slow tools, unavailable models, interrupted streams and rate limits.

Production change control

Track prompts, model versions, knowledge updates and tool contracts. Sample outcomes within privacy limits, investigate failures and retain a tested rollback or pause path.

Technology stack

Chosen for your workflow. Not for the logo list.

These are options we can evaluate, not a mandatory bundle. Selection depends on the channels, source systems, privacy requirements, traffic and your team's ability to operate the application.

Conversation interface

React / TypeScriptVercel AI SDKSlack / Teams APIsWhatsApp Business Platform

Choose a web, in-product or messaging interface with accessible controls, streaming and explicit action states. Channel permissions, costs and regional availability need review.

Models

OpenAIAnthropic ClaudeGoogle GeminiOpen-weight models / vLLM

Compare quality, tool support, latency, cost and processing terms on your tasks. Private serving is an option when licensing, hardware and operating capacity support it.

Conversation orchestration

LangGraphOpenAI Agents SDKPydanticAIPython / FastAPI

Use typed tools, explicit state and bounded workflows. A straightforward application may not need an agent framework or multiple agents.

Knowledge & search

LlamaIndexPostgreSQL / pgvectorQdrantOpenSearch

Combine ingestion, metadata filters and vector or hybrid retrieval as appropriate. Search relevance and permission enforcement need task-specific tests.

Systems & identity

REST / GraphQLMCPOAuth / OIDCCRM / helpdesk APIs

Integrate approved systems through least-privilege operations. MCP describes a connection protocol; it does not itself authorise a caller or make a tool safe.

Evaluation & observability

promptfoopytest / VitestLangfuseOpenTelemetry

Combine deterministic checks, conversation evaluations and privacy-aware traces. Model-as-judge scoring is calibrated against human review rather than treated as ground truth.

Deployment & state

DockerAWS / Azure / Google CloudPostgreSQLRedis

Match hosting, session storage, queues and capacity to workload and data constraints. Keep credentials out of conversation content and use separate deployment environments.

We check current model capabilities, licences and provider terms at project start. Using a framework does not replace permission checks, evaluation or operational ownership.

Delivery & ownership

Start narrow. Earn a wider rollout.

We work with your product, support and security owners to build a useful first slice, test it against real questions and agree what production readiness means. Scope grows with evidence, not with an assumption that every interaction should be automated.

  1. 01

    Define the conversation's job

    Map users, intents, supported channels, boundaries and business outcomes. Compare a custom assistant with improving search or configuring an existing helpdesk product.

    Output: A scoped workflow, baseline and acceptance criteria.

  2. 02

    Prepare knowledge & tests

    Audit sources and permissions, agree conversation patterns and assemble representative questions, multi-turn cases and adversarial tests.

    Output: An authorised knowledge inventory and evaluation set.

  3. 03

    Build a bounded first slice

    Implement the interface, retrieval and agreed tools with clear fallbacks. Review answers and action behaviour with the people who own the workflow.

    Output: A working slice with traceable evidence and known limits.

  4. 04

    Pilot with real oversight

    Release to a limited audience, validate handoffs and monitor quality, cost and latency. Fix failures before expanding access or action authority.

    Output: Pilot findings, release gates and recovery procedures.

  5. 05

    Hand over & operate

    Document code, source updates, integrations, evaluations and support responsibilities. Agree access, provider costs and future change review.

    Output: A maintainable application, runbooks and an operating plan.

A bounded first sprint

Start with a paid two-week sprint and one agreed goal, without a required long-term commitment. Establish the baseline and build the first slice; complete integrations, evaluation and production rollout may require further work.

What your team brings

A workflow owner, approved knowledge sources, representative questions and someone who can judge the answers. We also need system access constraints, expected channels and a named destination for human handoffs.

Economics & maintenance

Count the work after the answer.

Assess model usage, retrieval, hosting, channel fees, integration maintenance and human review together. Track whether users actually resolve their issue, not just whether the assistant keeps them away from a person.

Measure a useful outcome

Compare task completion, repeat contacts, escalation quality and cost with the existing workflow. A low handoff rate is not a success if users leave without an answer. Targets follow a measured baseline, not a promised percentage.

Keep the service current

Assign owners for source updates, unresolved questions, integrations and model changes. Your code belongs to you from day one; provider fees, third-party licences, support and operating responsibilities are agreed separately.

Related engineering

Go deeper where the workflow needs it.

Explore the application foundations and practical guidance for controlled actions and human oversight.

Questions before you build

The practical details.

What is the difference between a chatbot and an AI assistant?

A chatbot is a conversational interface and can be scripted or model-powered. An assistant may also retrieve private knowledge, use product context and perform authorised tasks. The important distinction is its scope and authority, not the label.

Should we build custom or use our existing support platform?

If your needs are standard FAQs and helpdesk workflows, an existing platform may be the better starting point. Custom development makes more sense for permission-sensitive knowledge, distinctive product experiences or integrations that standard tools cannot support well.

Can it answer from our documents without fine-tuning?

Often yes, using retrieval from approved sources. We still need to assess source quality, permissions and question coverage. Fine-tuning is not the default solution for changing company knowledge.

Will it stop hallucinating?

No system can promise that. Grounding, validation, clear scope, uncertainty handling and human escalation reduce risk. We test unsupported questions and define which errors are unacceptable for your workflow.

Can it work in WhatsApp, Slack or Microsoft Teams?

Potentially, through the channel's supported APIs and policies. We assess identity, permissions, message delivery, user experience and provider costs for each channel rather than assuming a web assistant can be copied unchanged.

Can it remember users and take actions?

Yes where appropriate, with explicit memory scope, retention and identity controls. Actions need narrowly scoped tools, server-side authorisation, validation and confirmation for consequential changes. Neither memory nor tool access is enabled indiscriminately.

How much will it cost to run?

That depends on traffic, conversation length, model choice, retrieval, integrations and human review. We measure cost per useful outcome and include hosting, channel fees and ongoing maintenance. We do not promise savings before measuring a representative workload.

How do we start, and what do we own?

Start with a paid two-week sprint, an agreed goal and no required long-term commitment. Your code belongs to you from day one; third-party services and licences retain their own terms. A full production rollout may require further work, and support responsibilities are agreed explicitly.

Start with a real conversation

Bring the questions.
We'll build the useful next step.

Tell us who needs help, what they are trying to do and where the current experience breaks down. We'll define a sensible first scope and how to evaluate it.