Site-İçi Müşteri Destek Chatbot
Şirketin Notion/dokümanlarını RAG ile bağlayıp, web widget + WhatsApp üzerinden kaynak alıntılı destek cevabı üreten bot.
Kimin derdi bu?
Gerçek bir insan, gerçek bir acı. Kafanda canlandır.
- Kim
- 10-50 kişilik SaaS / e-ticaret ekipleri, destek hacmi günde 50+ tekrarlayan soru
- Canı yanan yer
- Aynı soruya 20 kere cevap yazmak; gece gelen mesaj sabah cevaplanıyor; kullanıcı kaçıyor
- Şu an nasıl yapıyor
- Intercom/Zendesk + manuel cevap; FAQ sayfası kimse okumuyor
6 saate sığar mı?
Bootcamp modunda sıkıştırılmış senaryo.
M — 8-12 saat. RAG embedding + retrieval + chat UI. 6 saatte tek doküman kaynağı + web widget'a daralt.
Ne ile inşa edeceksin?
Sıfırdan yazmayacaksın — bu parçaları birleştireceksin.
Hangi parçalar?
Her parça ayrı bir commit. Sırayla yakala.
- 1Doküman yükleme (PDF/MD/Notion sync)
- 2Chunking + embedding pipeline
- 3Vector search (pgvector cosine)
- 4Claude RAG cevabı + kaynak alıntısı
- 5Gömülebilir chat widget (iframe)
- 6Konuşma loglama + analytics
Piyasada kimler var?
Rakip değil, referans. Sen onlardan küçük, hızlı ve yakın olacaksın.
Neden evet, neden hayır?
Kısa bir gerçeklik testi.
Net ROI (destek saati tasarrufu), düşük müşteri edinme bariyeri, Türkçe RAG'da boşluk var
Halüsinasyon riski; kaynak göstermek şart. Doküman güncelliği müşteriye bağlı.
Para nereden gelir?
Bir çerçeve, değil kesin plan. İlk 100 kullanıcıya odaklan.
- Fiyat
- Starter $29/ay (1 bot, 500 mesaj), Pro $99/ay (sınırsız)
- Hedef ARR
- 150 kullanıcı × $49 ort = $7.3k MRR
- Model
- Subscription
Claude Code'a ver
Aşağıdaki prompt'u olduğu gibi kopyala, Claude Code'a yapıştır. Stack, veri modeli, 6 saatlik inşa sırası ve başarı kriterleri içinde.
# Site-İçi Müşteri Destek Chatbot (RAG)
**Ne inşa ediyoruz:** Şirketin kendi dokümanlarından (Notion/PDF/Markdown) beslenen, kaynak alıntılı cevap üreten ve web sitelerine gömülebilen bir destek chatbot'u.
**Kullanıcının işi (JTBD):** Müşteri saat 23:00'te "Faturamı nasıl indiririm?" sorduğunda, doğru sayfayı kaynak göstererek 5 saniyede cevaplamak istiyorum, böylece destek ekibim aynı şeyi 50. kez yazmasın.
---
## Stack
- Next.js 15 App Router + TypeScript strict
- Tailwind + shadcn/ui
- Supabase Postgres + pgvector extension
- Anthropic Claude Sonnet 4.6 (cevap), voyage-3 (embedding)
- Gömülebilir widget: tek satır <script> tag, iframe içinde React app
- Deploy: Vercel
## Veri modeli
```sql
create extension if not exists vector;
create table bots (
id uuid primary key default gen_random_uuid(),
user_id uuid references auth.users not null,
name text, system_prompt text,
created_at timestamptz default now()
);
create table documents (
id uuid primary key default gen_random_uuid(),
bot_id uuid references bots on delete cascade,
source text, title text, content text,
created_at timestamptz default now()
);
create table chunks (
id uuid primary key default gen_random_uuid(),
document_id uuid references documents on delete cascade,
content text, embedding vector(1024),
metadata jsonb default '{}'::jsonb
);
create index on chunks using ivfflat (embedding vector_cosine_ops);
create table conversations (
id uuid primary key default gen_random_uuid(),
bot_id uuid references bots on delete cascade,
visitor_id text, messages jsonb, created_at timestamptz default now()
);
```
## Ana akışlar
1. Bot oluştur, sistem prompt'u yaz, Notion/PDF/MD yükle.
2. Backend chunking (~500 token) + voyage embedding + chunks'a yaz.
3. Visitor widget'tan soru → top-5 chunk retrieval → Claude'a context+soru → kaynak alıntılı cevap.
4. Konuşma loga; admin "boşluk var" dediği soruları işaretler, doküman yazar.
## 6 saatlik inşa sırası
- 0:00–1:00 — Scaffold, Supabase + pgvector, magic link, bot CRUD
- 1:00–2:30 — Doküman upload + chunking + embedding pipeline
- 2:30–4:00 — Retrieval + Claude RAG cevabı (kaynak ID'li)
- 4:00–5:00 — Web widget (iframe + postMessage), gömme kodu
- 5:00–5:30 — Admin konuşma görüntüleme, "iyi/kötü" işaretleme
- 5:30–6:00 — Vercel deploy + 1 gerçek doküman setiyle smoke test
## Başarı kriteri (akşam demo)
- [ ] 1 doküman seti yüklenip embed edilmiş
- [ ] Widget gömülen sayfada açılıyor, soru cevaplıyor
- [ ] Cevapta kaynak link/sayfa göstergesi var
- [ ] Halüsinasyon: bilmediği soruda "bunu bulamadım" diyor
- [ ] Konuşmalar admin panelinde listeleniyor
## Dikkat
- Kaynak göstermek **zorunda**, yoksa hallüsinasyon güveni öldürür.
- pgvector ivfflat index için en az 100 satır gerekir; küçük setler için flat sequential scan da yeter.
- Türkçe embedding'de voyage-3 OpenAI'den belirgin daha iyi.
- Streaming response (SSE) UX için kritik — "düşünüyor" yerine yazmaya başlasın.Bu sana uymadı mı?
Hepsini görE-ticaret sitelerinin gelen müşteri yorumlarını otomatik sentiment analizi yaparak, negatif yorumlara öncelikli yanıt taslakları hazırlayan araç.
Zoom/Google Meet kayıtlarını alıp özet + aksiyon maddeleri + takip e-postası taslağı üreten tool.
B2B satış temsilcilerinin LinkedIn profilinden kişiselleştirilmiş connection request yazan, CRM'e atayan tool.