Chatbots that answer from your data

Support, sales, and internal help bots that cite sources, escalate cleanly, and stay inside a budget.

From $490 USD · 3-6 weeks

What a production bot needs

A bot is a retrieval system with a conversation on top. We index your docs, tickets, and product data into a vector store, then constrain the model to answer from what it retrieved and to say so when it cannot.

Every conversation is logged with the retrieved passages, so you can audit an answer, fix the source document, and watch the metric move.

Network diagram representing chatbot conversation routing

Intent routing

User messages are embedded and matched against the capabilities you actually support: refunds, pricing, onboarding, escalation. Matching on meaning rather than keywords handles typos and phrasing without a rules file.

Low-confidence matches route to a human or a clarifying question instead of a guess.

intent.tstypescript
import { openai } from '@/lib/ai'
import { cosineSimilarity } from '@/lib/utils'

const INTENTS = [
  { id: 'support', text: 'I need help with my order' },
  { id: 'pricing', text: 'How much does this cost?' },
]

export async function classifyIntent(query: string) {
  const { data } = await openai.embeddings.create({
    input: query,
    model: 'text-embedding-3-small',
  })
  const best = INTENTS
    .map((i) => ({ ...i, score: cosineSimilarity(data[0].embedding, i.embedding) }))
    .sort((a, b) => b.score - a.score)[0]
  return best.score > 0.78 ? best.id : 'handoff'
}

From $490 USD · 3-6 weeks

Compare packagesStart a project
AI chatbot development | Support and sales bots from $490 | Foundational Creations