Service AI Engineering

Customer-support chatbots that admit what they do not know.

We build chatbots that retrieve from your real docs, escalate to humans cleanly, and never invent answers. Your customers get help. Your team gets back the questions that actually need them.

Projects are scope-dependent. Free discovery call.

Why this matters

Chatbots that confidently make things up cost you trust faster than they save you tickets.

A bot that answers wrong with confidence is worse than no bot at all. Customers who learn your bot lies stop trusting your brand. We build chatbots that retrieve from your real documentation, admit when they do not have a confident answer, and hand off to humans with the full context. Honest bots earn trust. Trusted bots get used.

Try the bot

Type a message. See where it routes.

A live intent classifier with five trained intents and a fallback. Type your own message or pick one of the example chips. You will see which intent matched, the confidence scores for the top three candidates, and the response that branch would send.

Classification 0ms
Top intent order_status 0.94
  • order_status0.94
  • escalate0.12
  • general_help0.08
Routed response branch: orders.lookup
Support Bot

I can look up your order in seconds. Share your order number or the email you used at checkout and I will pull it up.

  • 5 intents shown · production bots run 30 to 80 intents per language
  • <120ms classification round-trip in production
  • Eval-gated · intent set updates roll only when evals pass

What we build

A bot your customers will actually choose to use.

Real retrieval over your real docs. Clean escalation. Honest about its limits. Multi-channel from one core. The kind of bot that improves CSAT, not the kind that tanks it.

01

Retrieval over your real documentation

The bot answers from your actual docs, knowledge base, and product specs. Not from generic training data, not from vibes. If your docs say something, the bot says it. If they do not, the bot does not invent.

Answers grounded in your sources, and an honest admission when they are not.

02

Escalation that does not lose context

When the bot hits its limits, the handoff includes the full conversation, the intent classification, and the retrieved sources. Your human agent picks up where the bot left off, not from zero.

Customer repeat-the-question rate drops to near zero.

03

Admits what it does not know

No confident wrong answers. When retrieval fails or confidence drops, the bot says so and escalates. Your customers learn the bot is honest, which makes them trust it.

CSAT on bot interactions matches human-only baseline.

04

Multi-channel from one core

Same bot ships to website widget, Intercom, Crisp, Slack, WhatsApp, and SMS. One conversation logic, one source of truth, six channels. Your team maintains one thing.

New channel ships in under a week.

05

Cost ceiling per conversation

Per-conversation cost cap, per-tenant rate limits, prompt caching. Production cost typically under five cents per resolved conversation. No surprise bills at end of month.

Cost per resolved conversation under five cents.

06

Analytics that explain bot behavior

Per-intent resolution rate, escalation reasons, top unanswered questions, retrieval source attribution. Your support lead can see what the bot does and what to fix.

Weekly review takes 30 minutes, not 3 hours.

<2%

hallucination rate target across our production chatbot deployments

Checked against a held-out evaluation set that ships with the build, so you can re-run it yourself after any prompt change.

The retrieval layer

Answers grounded in your real documentation.

Embedding-based search across your knowledge base, with confidence thresholds and tenant filtering. The bot never answers from training data when your docs do not back it up.

rag/retrieve.ts ts
    
      
          
          // rag/retrieve.ts
        
          
          import { embed } from './embedder';
        
          
          import { vectordb } from './storage';
        
          
           
        
          
          export async function retrieve(query: string, opts: RetrieveOpts) {
        
          
            const embedding = await embed(query);
        
          
            const results = await vectordb.search({
        
          
              vector: embedding,
        
          
              topK: opts.topK,
        
          
              filter: { tenant: opts.tenant, doc_type: { $in: opts.allowedTypes } },
        
          
            });
        
          
           
        
          
            return results
        
          
              .filter((r) => r.score >= opts.threshold)
        
          
              .map((r) => ({
        
          
                content: r.metadata.content,
        
          
                source: r.metadata.url,
        
          
                title: r.metadata.title,
        
          
                lastUpdated: r.metadata.updated_at,
        
          
              }));
        
          
          }
        
    
  

Process

How a chatbot project runs.

01

Discovery

Two weeks. We audit your existing support volume, identify the questions worth automating, ingest your docs into the retrieval index, and design the escalation rules.

Fixed scope, fixed price.

02

Build

Three to five weeks. Bot ships behind a feature flag on a single channel first. Retrieval, escalation, and analytics from day one. Your support team can shadow real conversations.

Real conversations in week three.

03

Launch + tune

Two weeks. Canary rollout, weekly tuning sessions with your support lead, multi-channel rollout once the bar is hit. Handoff includes the maintenance runbook.

Your team owns the bot at the end.

What it costs

Chatbot pricing follows what it is allowed to answer.

A bot over your public documentation and one that answers about a customer's own account are the same sentence and very different projects. Here is what moves the number.

What moves the number

  • What it draws on Public docs are straightforward. Answering from account data means authentication, scoping and a hard guarantee it never crosses users.
  • How it handles not knowing Saying so plainly and handing to a human is the single most important behaviour and the one most often skipped.
  • Where it lives A widget on the site, inside the product, or in a support desk each change the integration and the expectations.
  • How you keep it honest Content goes stale. Keeping answers current is ongoing work, not a launch task.
  • What you measure Deflection rate, escalation rate and which questions it fails on. Without those you cannot tell whether it is helping.

Small, well-defined work is usually better handled as an hourly block than scoped as a project, and we will say so rather than inflate it into one.

Rough idea to delivery

  1. You send the details What you want built, roughly, plus budget range and timing. The form asks for all of it
  2. Within 4 business hours We read it and reply. Nothing is scheduled before we know what it is about
  3. Then the call Free discovery, booked once there is enough on the table to make it worth your hour
  4. Within 48 hours of the call A written fixed-price quote you approve before anything starts
Get an estimate

Quick enquiry

Support questions repeating?

Tell us where your answers live today and what the top repeated questions are. If it must answer about a customer's own account rather than general questions, say so.

Prefer the full form? Start a project

No drip sequences, no marketing list. We reply and that is it.

Common questions

Frequently asked

  1. Will the bot replace our human support team?

    No, and we will warn you if you ask us to try. The bot handles the questions humans should not be answering for the hundredth time. Humans handle the questions that need judgment. Done right, your team grows into the higher-value work.

  2. How do you keep the bot from hallucinating?

    Retrieval-first architecture. The bot only answers from your real docs. When confidence drops or retrieval fails, the bot escalates instead of inventing. We measure hallucination rate continuously and target below 2 percent.

  3. Which channels can the bot ship to?

    Website widget, Intercom, Crisp, Zendesk, Help Scout, Freshdesk, Slack, WhatsApp Business, SMS via Twilio, Discord. We can ship to any channel that has a webhook or API. Same bot, same logic, every channel.

  4. How do you handle conversations in multiple languages?

    Claude handles 95+ languages natively. We test in the languages your customers actually speak and tune the retrieval source documents per language. The bot detects the language and responds in the same one.

  5. What about data privacy and PII?

    PII filtering before model calls, configurable data residency, conversation retention limits, no training opt-in. Your security team reviews the data flow before launch. We have shipped chatbots that pass HIPAA and GDPR review.

  6. What does it cost?

    Chatbot work is estimated against scope rather than sold at a list price. A bot over public documentation and one answering about a customer's own account are very different projects, mostly because of what the second one must never get wrong. The section above sets out what moves the number.

Ready to ship a bot your customers will trust?

Tell us what you want to build.

Discovery call is free. Fixed-price quote within 48 hours. NDA on request.