KampanyalarA/B Testi

A/B Testi

“Merhaba, web sitemizden teklif istemişsiniz” mi daha iyi karşılanıyor, yoksa “İyi günler, size özel bir kampanyamız var” mı? Tahmin etmek yerine ölçersin. A/B testi aynı kampanyada iki farklı prompt varyantını (A ve B) yan yana çalıştırır; Purvisor AI çağrıları ikiye böler, her varyantın dönüşüm oranını hesaplar ve istatistiksel olarak anlamlı bir kazanan olup olmadığını söyler. Böylece “bence şu daha iyi” tartışması, gerçek rakamlarla biten bir karara dönüşür.

A/B testi nedir?

Bir mağazanın kapısında iki farklı karşılama cümlesi denediğini düşün: gelenlerin yarısına “Hoş geldiniz, bugün indirimimiz var” diyorsun, diğer yarısına “Aradığınız bir şey var mı?”. Sonunda hangi cümlenin daha çok satış yaptığını sayıyorsun. A/B testi tam olarak budur — sadece burada “karşılama cümlesi” asistanının promptu, “satış” ise başarılı bir görüşme.

Purvisor AI’da fark prompt düzeyindedir: Varyant A asistanının mevcut promptunu kullanır, Varyant B ise senin tanımladığın alternatif bir promptu (abVariantBPrompt) kullanır. Ses, model, kişi listesi — geri kalan her şey aynı kalır. Tek değişkeni değiştirdiğin için, sonuçtaki farkın sebebi net olur.

A/B testi bir asistanın iki prompt sürümünü karşılaştırır, iki ayrı asistanı değil. Sadece açılış cümlesini, sadece itiraz karşılamasını veya sadece kapanışı değiştir — aynı anda birden çok şeyi değiştirirsen, kazanan çıksa bile “neden kazandı” sorusu cevapsız kalır.

Nasıl çalışır?

Kampanya başlatılır (A/B testi açık)

Her çağrı için varyant seçilir (dağılım oranına göre — varsayılan 50/50)

Varyant A → asistanın mevcut promptu
Varyant B → alternatif prompt (abVariantBPrompt)

Çağrı tamamlanır → "Varyant A" / "Varyant B" etiketiyle kaydedilir

A/B raporu her varyantı ayrı toplar → dönüşüm oranı, süre, maliyet, duygu

Kazanan = dönüşüm oranı yüksek varyant + istatistiksel anlamlılık testi

Ön koşullar

  • Çalışan bir outbound kampanya — asistan, arayan numara ve kişi listesi hazır (Kampanya Oluşturma).
  • Test etmek istediğin net bir hipotez: “Daha kısa bir açılış, dönüşümü artırır” gibi. Belirsiz bir “acaba daha iyi olur mu” ile başlama.
  • Anlamlı sonuç için yeterli kişi: varyant başına en az 30 tamamlanmış çağrı gerektiğinden, listenin toplamda en az 60-100 kişilik olması gerekir. Küçük listelerde rapor “kazanan” gösterebilir ama bu şans eseri olabilir.

Kurulum

A/B testini aç

Kampanya ayarlarında A/B testi seçeneğini aç (abTestEnabled). Kapalıyken A/B raporu 400 — A/B test not enabled for this campaign döner.

📸 [Ekran görüntüsü: Kampanya ayarları — A/B testi anahtarı + Varyant B prompt alanı]

Varyant B promptunu yaz

Varyant A otomatik olarak asistanının mevcut promptudur — ona dokunmazsın. Varyant B için alternatif promptu (abVariantBPrompt) yazarsın. İyi bir test için tek bir şeyi değiştir:

Değiştirebileceğin tek değişkenÖrnek
Açılış cümlesi”Merhaba, web sitemizden…” ↔ “İyi günler, size özel…”
Yaklaşım tonuDoğrudan/kısa ↔ sıcak/sohbet edici
İtiraz karşılama”Anlıyorum, peki…” ↔ “Haklısınız, çoğu müşterimiz de…”
Kapanış / harekete geçirmeRandevu öner ↔ önce WhatsApp bilgi gönder

Aynı anda hem açılışı hem tonu hem kapanışı değiştirirsen, hangi değişikliğin işe yaradığını asla bilemezsin. Bir test = bir değişken.

Dağılım oranını ayarla

Dağılım oranı (abSplitRatio, varsayılan 50) çağrıların hangi oranda bölüneceğini belirler. 50 = yarı yarıya (50/50). Yeni bir varyantı temkinli denemek istersen küçük bir orandan başlayabilirsin; ama unutma: bir varyanta çok az çağrı düşerse o varyant 30 çağrı eşiğine geç ulaşır ve anlamlılık testi çalışmaz.

Kampanyayı başlat ve topla

Kampanyayı başlat. Her çağrı otomatik olarak bir varyanta atanır ve Varyant A / Varyant B etiketiyle kaydedilir — bu etiketi tek tek çağrılarda Çağrı Kayıtları altındaki çağrı detayında görürsün. Şimdi tek yapman gereken yeterli veri birikmesini beklemek: varyant başına en az 30 tamamlanmış çağrı.

Kazanan nasıl belirlenir?

Bu kısım önemli, çünkü “kazanan” iki ayrı sorunun cevabıdır: (1) hangi varyant daha yüksek dönüşüm yaptı ve (2) bu fark gerçek mi, yoksa şans eseri mi?

1. Dönüşüm oranı. Rapor her varyant için dönüşüm oranı = başarılı çağrı / toplam çağrı hesaplar. Kazanan (winner), dönüşüm oranı yüksek olan varyanttır; oranlar eşitse tie (berabere) döner.

⚠️

Buradaki “dönüşüm” randevu veya satış değildir. Bu raporda “başarılı çağrı”, tamamlanmış (bağlanmış) ve en az 30 saniye süren çağrıdır. Yani metrik “asistan gerçek bir görüşme yapabildi mi?” sorusunu ölçer. Randevu/satış bazlı karşılaştırma için Kampanya Raporları ROI görünümüne bak.

2. İstatistiksel anlamlılık. Yüksek oran tek başına yetmez — 10 çağrının 4’ü ile 10 çağrının 5’i arasındaki fark kolayca şans olabilir. Purvisor AI bunu iki oranlı z-testi ile kontrol eder:

Havuzlanmış oran = (A.başarılı + B.başarılı) / (A.toplam + B.toplam)
Standart hata    = karekök( oran × (1 − oran) × (1/A.toplam + 1/B.toplam) )
z                = | A.oranı − B.oranı | / Standart hata
Anlamlı mı?      = z değeri 1.96'nın üzerindeyse → %95 güven (p değeri 0,05'in altında)

Bu test yalnızca her iki varyantta da en az 30 çağrı varken çalışır (minSampleSize: 30). Bu eşiğe ulaşılmadıysa rapor statisticallySignificant: false döner ve önerisi şudur: “Not enough data yet. Need at least 30 calls per variant for significance.”

⚠️

Rapor statisticallySignificant: false iken bile bir winner gösterebilir (sadece oranı yüksek olan). Anlamlılık doğrulanmadan varyant değiştirme. Yüksek görünen oran, birkaç çağrı daha geldiğinde tersine dönebilir.

A/B raporunu okuma

Rapor: GET /api/campaigns/[id]/ab-report (panel oturumu ile yetkilendirilir). Örnek yanıt:

{
  "campaign": { "id": "42", "name": "Mart Sıcak Lead" },
  "splitRatio": 50,
  "variantA": {
    "variant": "A",
    "totalCalls": 120,
    "completedCalls": 78,
    "successfulCalls": 41,
    "conversionRate": 34,
    "avgDuration": 96,
    "totalCost": 3.12,
    "avgCostPerCall": 0.026,
    "sentimentPositive": 22,
    "sentimentNegative": 9
  },
  "variantB": {
    "variant": "B",
    "totalCalls": 118,
    "completedCalls": 80,
    "successfulCalls": 53,
    "conversionRate": 45,
    "avgDuration": 104,
    "totalCost": 3.34,
    "avgCostPerCall": 0.028,
    "sentimentPositive": 31,
    "sentimentNegative": 6
  },
  "winner": "B",
  "statisticallySignificant": true,
  "minSampleSize": 30,
  "recommendation": "Variant B is the winner with statistical significance (p<0.05)."
}

Her varyant bloğundaki alanlar:

AlanNe anlama gelir
totalCallsBu varyantla yapılan toplam çağrı
completedCallsBağlanan (tamamlanan) çağrı sayısı
successfulCallsTamamlanmış ve en az 30 saniye süren çağrı — raporun “dönüşüm” tanımı
conversionRatesuccessfulCalls / totalCalls (yüzde) — kazananı bu belirler
avgDurationTamamlanmış çağrıların ortalama süresi (saniye)
totalCost / avgCostPerCallVaryantın toplam ve çağrı başı ortalama maliyeti
sentimentPositive / sentimentNegativeAI analizinin olumlu / olumsuz duygu tespit ettiği çağrı sayısı

Üst düzey alanlar:

AlanNe anlama gelir
splitRatioKampanyanın dağılım oranı (abSplitRatio)
winnerA, B veya tie — dönüşüm oranı yüksek olan varyant
statisticallySignificantFark istatistiksel olarak anlamlı mı (z-testi, p < 0.05)
minSampleSizeAnlamlılık için varyant başına gereken minimum çağrı: 30
recommendationSonucu özetleyen metin öneri

Maliyet ve süre alanları da karar için değerlidir: B varyantı biraz daha yüksek dönüşüm yapıyor ama çağrı başı çok daha uzun/pahalıysa, bunu birim ekonominle birlikte değerlendir. Maliyet ayrıntısı için Kampanya Raporları.

İyi uygulamalar

  • Tek değişken kuralı. Her testte yalnızca bir şeyi değiştir. Kazananı ancak o zaman doğru okursun.
  • Eşiği geçmeden sonuç ilan etme. Varyant başına 30 çağrı, anlamlılık testinin çalışması için asgari sınırdır — daha da fazlası daha güvenilirdir. statisticallySignificant: true görene kadar bekle.
  • Kazananı kalıcı hale getir. B kazandıysa, o promptu asistanının kalıcı promptu yap (Prompt Yazma Rehberi) ve bir sonraki testte yeni bir B dene. A/B testi bir kereye mahsus değil, sürekli iyileştirme döngüsüdür.
  • Aynı koşullarda test et. İki varyantı farklı günlerde/saatlerde çalıştırmak sonucu bozar; A/B testini açık bırak ki Purvisor AI çağrıları eşzamanlı bölsün.
  • KVKK. Prompt varyantı değiştirmek yasal yükümlülüğünü değiştirmez. Her iki varyant da arama iznine ve “aramayın” (do-not-call) taleplerine uymak zorundadır; asistan her açılışta kim olduğunu ve neden aradığını net söylemelidir.

Sorun giderme

BelirtiOlası neden / çözüm
Rapor 400 — A/B test not enabledKampanyada A/B testi (abTestEnabled) kapalı. Kampanya ayarlarından aç, sonra çağrılar biriktikçe raporu tekrar iste.
statisticallySignificant: false sürekli çıkıyorVaryant başına 30 çağrı eşiğine ulaşılmadı veya iki oran birbirine çok yakın. Daha fazla kişi ekle ya da testi daha uzun süre çalıştır.
Bir varyanta çok az çağrı düşüyorDağılım oranı (abSplitRatio) dengesiz. Adil bir karşılaştırma için 50/50’ye yakın tut.
Tüm çağrılar Varyant A görünüyorVaryant B promptu boş bırakılmış olabilir; kampanyada A/B testi açıkken B promptunun dolu olduğundan emin ol.
Kazanan var ama ikna olamadımwinner yalnızca oranı yüksek olanı gösterir; kararı statisticallySignificant, süre ve maliyetle birlikte ver — sadece orana bakma.

İlgili