Customer support chatbot

A chat widget on your site that answers from your help center and docs, and hands off to a human by email when it can't help.

Good fit: SaaS and e-commerce teams deflecting repetitive tickets; anonymous visitors plus signed-in customers.

Infrastructure
$91.67/mo
$80.40 at half the usage · $132 at double

How the parts connect

  1. Widget & chat API$20/mo

    Vercel · Pro

  2. Knowledge sync$10/mo

    Trigger.dev · Hobby

  3. AI framework$0

    Vercel AI SDK

    ← built with from Widget & chat API

  4. Chat model$9.60/mo

    OpenAI API · gpt-5-mini

    ← question + articles from Widget & chat API

  5. Conversation store$8.02/mo

    Neon · Launch

    ← conversations from Widget & chat API

  6. Cache & rate limits$0.05/mo

    Upstash · Pay as You Go

    ← rate limit, cached answers from Widget & chat API

  7. Handoff email$15/mo

    Postmark · Basic

    ← handoff to human from Widget & chat API

  8. LLM observability$29/mo

    Langfuse · Core

    ← traces from Widget & chat API

  9. Embedding model$0.01/mo

    OpenAI API · text-embedding-3-small

    ← question from Widget & chat API · changed articles from Knowledge sync

  10. Knowledge index$0

    Pinecone · Starter

    ← search articles from Widget & chat API · re-index from Knowledge sync

Monthly cost

Estimate

Expected cost at the usage below, and the range from half to double that usage. Worked out from each vendor's current prices and free tiers; your real bill depends on your traffic.

PartPickExpected / moRange
Widget & chat APIVercel · Pro$20/mofixed
AI frameworkVercel AI SDK$0fixed
Chat modelOpenAI API · gpt-5-mini$9.60/mo$2.40–$38.40
Embedding modelOpenAI API · text-embedding-3-small$0.01/mo$0–$0.05
Knowledge indexPinecone · Starter$0fixed
Knowledge syncTrigger.dev · Hobby$10/mofixed
Conversation storeNeon · Launch$8.02/mo$3.98–$19.62
Cache & rate limitsUpstash · Pay as You Go$0.05/mo$0.01–$0.19
Handoff emailPostmark · Basic$15/mofixed
LLM observabilityLangfuse · Core$29/mofixed
Infrastructure total$91.67/mo$80.40–$132
Show the arithmetic behind every number

Widget & chat API · Vercel · Pro

  • vcpu = app_vcpu = 0.5
  • ram_gb = app_ram_gb = 0.5
  • Pro list price $20.00/month
  • note: includes $20 of usage credit; function, bandwidth and build usage beyond it is not modeled

AI framework · Vercel AI SDK

  • free open-source software (Apache-2.0); runs inside the app

Chat model · OpenAI API · gpt-5-mini

  • input_tokens = conversations_per_month * messages_per_conversation * (top_k * chunk_tokens + prompt_overhead_tokens) = 2,000 × 4 × (4 × 500 + 1,200) = 25,600,000
  • output_tokens = conversations_per_month * messages_per_conversation * answer_tokens = 2,000 × 4 × 200 = 1,600,000
  • input: 25,600,000 tokens ÷ 1M × $0.25 = $6.40
  • output: 1,600,000 tokens ÷ 1M × $2.00 = $3.20

Embedding model · OpenAI API · text-embedding-3-small

  • input_tokens = sync_runs_per_month * changed_articles_per_sync * tokens_per_article + conversations_per_month * messages_per_conversation * question_tokens = 30 × 5 × 900 + 2,000 × 4 × 40 = 455,000
  • input: 455,000 tokens ÷ 1M × $0.02 = $0.0091

Knowledge index · Pinecone · Starter

  • vector_gb = help_articles * tokens_per_article / chunk_tokens * vector_kb_per_chunk / 1000000 = 250 × 900 / 500 × 8 / 1000000 = 0.0036
  • write_units = sync_runs_per_month * changed_articles_per_sync * tokens_per_article / chunk_tokens * vector_kb_per_chunk = 30 × 5 × 900 / 500 × 8 = 2,160
  • read_units = conversations_per_month * messages_per_conversation * read_units_per_query = 2,000 × 4 × 1 = 8,000
  • write_gb = sync_runs_per_month * changed_articles_per_sync * tokens_per_article / chunk_tokens * vector_kb_per_chunk / 1000000 = 30 × 5 × 900 / 500 × 8 / 1000000 = 0.00216
  • query_tb = conversations_per_month * messages_per_conversation * help_articles * tokens_per_article / chunk_tokens * vector_kb_per_chunk / 1000000 / 1000 = 2,000 × 4 × 250 × 900 / 500 × 8 / 1000000 / 1000 = 0.0288
  • returned_gb = conversations_per_month * messages_per_conversation * returned_kb_per_query / 1000000 = 2,000 × 4 × 20 / 1000000 = 0.16
  • Starter list price $0.00/month

Knowledge sync · Trigger.dev · Hobby

  • job_runs = sync_runs_per_month = 30
  • job_compute_seconds = sync_runs_per_month * help_articles * sync_seconds_per_article = 30 × 250 × 0.5 = 3,750
  • executions = sync_runs_per_month * (changed_articles_per_sync + 2) = 30 × (5 + 2) = 210
  • Hobby list price $10.00/month
  • compute seconds (Small 1x): 3,750 × $0.0000338 = $0.13
  • runs: 30 ÷ 10,000 × $0.25 = $0.00075
  • usage $0.13 − included credit $10.00 = $0.00

Conversation store · Neon · Launch

  • db_gb = conversations_per_month * messages_per_conversation * retention_months * kb_per_message / 1000000 = 2,000 × 4 × 12 × 2 / 1000000 = 0.192
  • cu_hours = db_cu * db_active_hours = 0.25 × 300 = 75
  • compute CU-hours: 75 × $0.106 = $7.95
  • storage GB-month: 0.192 × $0.35 = $0.07
  • note: Launch has no base fee; the $15 on the page is a typical bill

Cache & rate limits · Upstash · Pay as You Go

  • commands = conversations_per_month * messages_per_conversation * cache_commands_per_message = 2,000 × 4 × 3 = 24,000
  • Pay as You Go: metered plan, no base fee
  • commands: 24,000 ÷ 100,000 × $0.20 (catalog: Pay as You Go) = $0.05

Handoff email · Postmark · Basic

  • emails = conversations_per_month * handoff_rate = 2,000 × 0.15 = 300
  • Basic list price $15.00/month
  • emails: 300 − 10,000 free = 0 ÷ 1,000 × $1.80 = $0.00

LLM observability · Langfuse · Core

  • units = conversations_per_month * messages_per_conversation * observations_per_message = 2,000 × 4 × 3 = 24,000
  • requests = conversations_per_month * messages_per_conversation * 2 = 2,000 × 4 × 2 = 16,000
  • Core list price $29.00/month
  • units (traces + observations + scores): 24,000 − 100,000 free = 0 ÷ 100,000 × $8.00 = $0.00

The tools, and why

Widget & chat API

$20/mo

Vercel · Pro

Edge-fast streaming responses and a global CDN for the widget script

vercel.com ↗

AI framework

$0

Vercel AI SDK

Chat hooks for the widget and tool calling for retrieval and handoff

ai-sdk.dev ↗

Knowledge index

$0

Pinecone · Starter

Free starter index easily holds a help center; serverless upgrades

pinecone.io ↗

Knowledge sync

$10/mo

Trigger.dev · Hobby

Scheduled tasks with no timeouts for long crawls

trigger.dev ↗

Conversation store

$8.02/mo

Neon · Launch

Serverless Postgres that scales to zero between bursts

neon.com ↗

Cache & rate limits

$0.05/mo

Upstash · Pay as You Go

Serverless Redis with a ready-made rate-limit library

upstash.com ↗

Handoff email

$15/mo

Postmark · Basic

Excellent deliverability, so handoffs never land in spam

postmarkapp.com ↗

LLM observability

$29/mo

Langfuse · Core

Conversation traces plus user feedback scores in one place

langfuse.com ↗

All costs are estimates. Prices are read from each vendor's pricing page and checked every 12 hours (last: Oct 30, 2026); your bill depends on your traffic.

Model quality scores: Intelligence Index by Artificial Analysis.

The usage these costs assume

"Half" and "double" in the ranges scale these numbers.

ConversationsA site with a few thousand support contacts a month
2,000 conversations/month
Messages per conversationQuestion, answer, one follow-up
4 messages
Help-center articlesA mid-size product's docs and FAQ
250 articles
Re-index runsNightly sync of changed articles
30 runs/month
Handoff rateBots typically resolve 70–85% of simple questions
0.15 share of conversations
Conversations keptA year of history for analytics
12 months
Engineering assumptions (18)
Tokens per articleA typical help article
900 tokens
Chunk sizeOne section of an article per chunk
500 tokens
Chunks per answerSupport answers usually come from one or two articles
4 chunks
System prompt + historyTone and handoff rules plus earlier messages
1,200 tokens
Answer lengthShort, direct support replies
200 tokens
Tokens per questionA visitor's question, embedded for search
40 tokens
Stored size per chunk1,536-dim float vector plus text and URL
8 KB
Stored size per messageMessage text plus metadata
2 KB
Articles changed per syncOnly changed articles are re-embedded
5 articles
Crawl time per articleFetch and diff each article
0.5 seconds
Redis commands per messageRate-limit check, cache lookup, cache write
3 commands
Read units per searchA small help-center index
1 read units
Data returned per searchTop chunks with their text
20 KB
Trace units per messageTrace + retrieval + generation
3 units
Database compute sizeThe smallest Neon compute
0.25 CU
Database active hoursScales to zero when nobody is chatting
300 hours/month
App vCPUA small chat API
0.5 vCPU
App RAMA small chat API
0.5 GB

How to build it

  1. 1

    Index the help center

    Crawl the help center and docs, split articles into sections, embed them and store each chunk with its URL and title.

    Uses: Knowledge sync, Embedding model, Knowledge index

  2. 2

    Chat endpoint

    Build a streaming chat route that retrieves the best sections and answers only from them, always linking the source article.

    Uses: Widget & chat API, AI framework, Chat model, Embedding model, Knowledge index

  3. 3

    Embeddable widget

    Ship a small script tag that opens the chat; pass the signed-in customer's id when available.

    Uses: Widget & chat API

  4. 4

    Guardrails and limits

    Rate-limit by visitor, cache answers to repeated questions, and refuse topics outside your product.

    Uses: Cache & rate limits, Chat model

  5. 5

    Human handoff

    Give the model a handoff tool: when it isn't confident, email the transcript to support and tell the visitor when to expect a reply.

    Uses: Handoff email, Conversation store

  6. 6

    Measure deflection

    Store conversations with thumbs up/down and handoff flags; review failed answers weekly and fix the help articles they point to.

    Uses: Conversation store, LLM observability

Not covered by this estimate

  • Helpdesk integration (Zendesk, Intercom, Help Scout) for handoff: not in the catalog yet; email is used instead

Get this built for you

We'll adapt this blueprint to your product, set it up on your accounts and hand it over working, with the monthly bill you saw here.