AI Chatbot ile Müşteri Hizmetleri: E-Ticaret Vaka Çalışması
OtomasyonGeçtiğimiz kasım ayında Kadıköy'de bir e-ticaret firmasının genel müdürüyle kahve içiyorduk. Telefonu titredikçe yüzü değişiyordu. "Şu an 340 açık destek talebi var" dedi. "Black Friday'den beri yetişemiyoruz. Müşteriler Twitter'a yazıyor, biz daha WhatsApp'taki mesajlara cevap veremiyoruz."
Ekibi 8 kişilik bir müşteri hizmetleri takımıydı. Günde ortalama 600 mesaj geliyor, bunların %60'ı aynı 15-20 sorunun tekrarıydı: "Kargom nerede?", "İade nasıl yapılır?", "Faturamı bulamıyorum." İnsanların zamanının büyük kısmı bu tekrarlayan sorulara cevap yazmakla geçiyordu.
Bu hikaye bize yabancı değil. Türkiye'deki e-ticaret firmalarının büyük çoğunluğu aynı sorunu yaşıyor. Biz de bu firma için RAG tabanlı bir AI chatbot sistemi kurduk.
Sorun: Her Gün Aynı Sorular
Müşteri hizmetleri ekibi her sabah aynı manzarayla karşılaşıyordu: yüzlerce okunmamış mesaj. WhatsApp Business, web sitesi canlı destek, e-posta ve sosyal medya - dört farklı kanaldan akan talepler. Her birini ayrı ayrı açıp cevaplamak gerekiyordu.
İlk yaptığımız şey 30 günlük mesaj loglarını analiz etmek oldu. Sonuçlar çarpıcıydı:
- %34 sipariş takibi ("Kargom nerede?", "Ne zaman gelecek?")
- %22 iade ve değişim talepleri
- %18 fatura ve ödeme soruları
- %15 ürün bilgisi soruları
- %11 diğer (şikayet, öneri, karmaşık sorunlar)
Yani mesajların %89'u kategorize edilebilir, kurallara ve verilere dayalı sorulardı. Bunların büyük kısmı otomatik yanıtlanabilirdi - tabii doğru yapılırsa.
Fotoğraf: Pexels
Neden "Normal" Chatbot Yetmiyor?
Firma daha önce kural tabanlı bir chatbot denemişti. Bilirsiniz, şu "1 yazın sipariş takibi, 2 yazın iade" tarzı sistemler. Müşteriler nefret etti. Kullanım oranı %12'de kaldı, çoğu kişi direkt "müşteri temsilcisine bağla" diyordu.
Sorun şuydu: kural tabanlı chatbotlar sadece tam eşleşme arar. "Kargom nerede?" sorusunu anlar ama "ya arkadaş 3 gündür bekliyorum paket gelmedi hala" yazan birine cevap veremez. Türkçe'nin zengin ek yapısı, günlük dildeki kısaltmalar ve argo ifadeler işi daha da zorlaştırır.
Biz farklı bir yaklaşım izledik: RAG (Retrieval-Augmented Generation) tabanlı bir sistem. Chatbot önce müşterinin ne sorduğunu anlıyor (intent classification), sonra ilgili bilgiyi veritabanından çekiyor (retrieval), ardından doğal bir dilde yanıt üretiyor (generation).
Sistem Mimarisi
Dört katmanlı bir mimari kurguladık. Her katman bağımsız çalışıyor, böylece herhangi birini güncellemek diğerlerini etkilemiyor.
┌──────────┐ ┌──────────────┐ ┌───────────┐ ┌──────────┐
│ Müşteri │───▶│ NLU Katmanı │───▶│ RAG │───▶│ Yanıt │
│ Mesajı │ │ (Intent + │ │ (Vektör │ │ Üretimi │
│ │ │ Entity) │ │ Arama) │ │ (LLM) │
└──────────┘ └──────────────┘ └───────────┘ └──────────┘
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌────┴─────┐
│ BERTurk │ │ Bilgi │ │ Claude │
│ v2 │ │ Tabanı │ │ 3.5 │
│ Fine-tuned│ │ (Qdrant) │ │ Haiku │
└───────────┘ └───────────┘ └──────────┘
│
┌──────┴───────┐
│ Düşük güven │
│ → İnsan │
│ devralır │
└──────────────┘
NLU Katmanı: Müşterinin mesajını anlama işi burada başlıyor. BERTurk v2 tabanlı bir intent classification modeli kullanıyoruz. Bu modeli 15.000 etiketlenmiş Türkçe müşteri mesajıyla fine-tune ettik. "Kargom nerde la" ile "Siparişimin durumunu öğrenmek istiyorum" aynı intent'e düşüyor.
RAG Katmanı: Intent belirlendikten sonra, ilgili bilgiyi çekmek gerekiyor. Sipariş takibi mi? Kargo API'sine bağlan, güncel durumu çek. İade mi? İade politikası dokümanlarından ilgili bölümü getir. Ürün sorusu mu? Ürün kataloğundan detayları al. Tüm bu bilgiler Qdrant vektör veritabanında indekslenmiş durumda.
Yanıt Üretimi: Toplanan bağlam bilgisiyle birlikte Claude 3.5 Haiku'ya gönderiyoruz. Neden Haiku? Çünkü hızlı (ortalama 800ms), ucuz ve müşteri hizmetleri senaryoları için yeterince yetenekli. Opus veya Sonnet kullanmak gereksiz maliyet olurdu.
# Örnek: Sipariş takibi akışı
{
"musteri_mesaji": "3 gündür bekliyorum paketim gelmedi",
"intent": "siparis_takip",
"guven": 0.94,
"entities": {"siparis_id": "ORD-2026-18742"},
"kargo_durumu": "Dağıtımda - Tahmini teslimat: Bugün 14:00-18:00",
"chatbot_yaniti": "Siparişiniz şu an dağıtım aracında ve bugün
14:00-18:00 arasında teslim edilmesi planlanıyor. Gecikme için
özür dileriz. Teslimat gerçekleşmezse bize tekrar yazabilirsiniz,
hemen ilgilenelim."
}
Güven Skoru ve İnsan Devri
Sistemin en kritik parçası bu. Her yanıt için bir güven skoru hesaplıyoruz. Skor 0.85'in altına düşerse, chatbot yanıt vermek yerine konuşmayı müşteri temsilcisine aktarıyor. Bu eşik değerini ilk hafta 0.90'da tutuyorduk, çok fazla aktarım olunca 0.85'e çektik. Şu an %73 otomatik çözüm oranıyla dengeli bir noktadayız.
Aktarım sırasında temsilci, chatbotun o ana kadar topladığı tüm bağlamı görüyor: müşterinin intent'i, sipariş bilgileri, önceki mesajlar. Böylece müşteri aynı şeyi tekrar anlatmak zorunda kalmıyor. Bu detay müşteri memnuniyetinde ciddi fark yarattı.
Fotoğraf: Pexels
Türkçe'nin Zorlukları
Türkçe müşteri mesajları İngilizce'den çok farklı. Birkaç örnek:
- Ek yığılması: "Gönderemediklerimizden misiniz?" tek kelimede bir soru. NLU modeli bunu parçalayıp anlamalı.
- Argo ve kısaltmalar: "slm iade istiyom" = "Selam, iade istiyorum." Fine-tuned BERTurk bunu yakalıyor.
- Emoji ile anlam: "Ürün geldi 😤😤" ile "Ürün geldi 🎉🎉" tam zıt duygular. Emoji'leri bağlam olarak modele veriyoruz.
- Bölgesel farklılıklar: "Gargo" (kargo), "bi dakka" (bir dakika), "eyv" (eyvallah/teşekkürler). Normalizasyon katmanıyla bunları standart forma çeviriyoruz.
İlk hafta en çok sorun yaratan şey çift anlamlı mesajlardı. "Bu ne ya" hem şikayet hem de şaşkınlık ifadesi olabilir. Bağlam penceresini son 3 mesajı kapsayacak şekilde genişletince doğruluk belirgin şekilde arttı.
İlk Ay: Rakamlar
| Metrik | Öncesi | Sonrası (1. Ay) |
|---|---|---|
| Ortalama ilk yanıt süresi | 4 saat 20 dakika | 12 saniye |
| Günlük işlenen mesaj | ~600 (insan) | ~600 (438 bot + 162 insan) |
| Müşteri memnuniyeti (CSAT) | 3.8 / 5 | 4.6 / 5 |
| Mesai dışı çözüm oranı | %0 (kapalı) | %68 (7/24 aktif) |
| Tekrarlayan soru yükü (insana düşen) | ~360 mesaj/gün | ~50 mesaj/gün |
En dikkat çekici değişiklik mesai dışı saatlerde oldu. Eskiden gece 11'de sipariş soran müşteri sabah 9'a kadar beklemek zorundaydı. Şimdi 12 saniyede cevabını alıyor. E-ticaret müşterilerinin %35'i mesai dışı saatlerde alışveriş yapıyor, bu kitle için 7/24 destek gerçek bir fark yaratıyor.
Maliyet Analizi
Herkesin merak ettiği soru: ne kadara mal oldu?
| Kalem | Aylık Maliyet |
|---|---|
| Claude 3.5 Haiku API (18K sorgu/ay) | ~$45 |
| Qdrant Cloud (vektör DB) | ~$25 |
| BERTurk NLU sunucu payı | ~$15 |
| Altyapı (FastAPI, Redis, monitoring) | ~$40 |
| Toplam | ~$125/ay (~4.000 TL) |
Aylık 4.000 TL'ye 7/24 çalışan, asla hastalanmayan, tatile çıkmayan bir müşteri hizmetleri asistanı. Üstelik insan ekibin işini almıyor, onların yükünü azaltıyor. Ekip artık karmaşık şikayetlere, VIP müşterilere ve süreç iyileştirmelerine odaklanabiliyor.
Ekibin Tepkisi
Tahmin edebileceğiniz gibi ilk tepki tedirginlikti. "İşimizi mi alacak?" sorusu burada da geldi. Ama ilk haftanın sonunda ekip farkı gördü. Artık her gün aynı 20 soruyu yanıtlamak yerine, gerçekten çözüm gerektiren sorunlarla ilgileniyorlardı.
"Eskiden günün yarısı 'kargonuz yolda' yazmakla geçiyordu. Şimdi o mesajları bot hallediyor, ben de gerçekten sorunlu siparişlere odaklanıyorum. İş tatminim bile arttı diyebilirim."
- Müşteri hizmetleri takım lideri, İstanbul (ismi gizli)
İkinci ayda ekipten bir öneri geldi: "Sık sorulan ama henüz chatbotun bilmediği konuları bize raporlasın." Bu özelliği ekledik ve artık chatbot her hafta "bu soruları çok aldım ama cevaplayamadım" raporu gönderiyor. Bu sayede bilgi tabanını sürekli genişletiyoruz. İlk ayda %68 olan otomatik çözüm oranı, 3. ayda %73'e çıktı.
Dikkat Edilmesi Gerekenler
- "Her şeyi botla çözelim" yaklaşımı: Bazı konuşmalar insana ait. Şikayet eden, kızgın bir müşteriyi bota bırakmak markaya zarar verir.
- Bilgi tabanını güncel tutmamak: Kampanya değişti ama bot eski kampanyayı anlatıyor. Haftalık güncelleme şart.
- Güven eşiğini çok düşük tutmak: Daha fazla otomatik çözüm için eşiği düşürmek cazip ama yanlış cevaplar müşteri kaybettirir.
- Çok kanalı aynı anda açmak: Önce bir kanal (ör. web chat), sonra WhatsApp, sonra sosyal medya. Adım adım gidin.
Sırada Ne Var?
Firma şimdi iki yeni özellik üzerinde çalışmamızı istiyor. Birincisi, chatbotun müşteri geçmişine bakarak proaktif öneriler yapması - mesela "Geçen ay aldığınız telefon kılıfı stoğa girdi, ilginizi çekebilir" gibi. İkincisi, sesli destek entegrasyonu. WhatsApp sesli mesajlarını Whisper ile metne çevirip chatbota yönlendirmeyi planlıyoruz.
Bir de ilginç bir veri çıktı: chatbotla konuşan müşterilerin sepet tamamlama oranı, insan temsilciyle konuşanlara göre %8 daha yüksek. Muhtemelen anlık yanıt almanın güven verici etkisi. Bu veriyi daha detaylı analiz edeceğiz.