Kontaklar & CRMSatış Pipeline'ı

Satış Pipeline

Purvisor AI’da pipeline aşamasını sen elle sürüklemek zorunda değilsin — asistanın her aramadan sonra otomatik olarak ilerletir. Bir lead “ilgileniyorum” dediği anda kontak değerlendirme aşamasına geçer, randevu alındığında taahhüte atlar; sen panele girmeden önce pipeline zaten güncellenmiş olur. Bu sayfa aşamaların ne anlama geldiğini, skorun nasıl hesaplandığını ve otomatik geçişin tam olarak hangi kurala göre çalıştığını anlatır.

Aşamalar (evrensel çekirdek)

Her kontağın universalStage alanı şu altı değerden birini taşır:

Aşama (kod değeri)Panelde görünen adıAnlamı
newYeniHenüz nitelikli bir görüşme olmadı.
contactedİletişimdeEn az bir görüşme oldu; bilgi verildi veya geri arama planlandı.
evaluatingDeğerlendirmeLead ilgisini belirtti, teklifi/bilgiyi değerlendiriyor.
committedTaahhütRandevu alındı veya somut bir taahhüt verildi.
closedKapandıSatış/randevu tamamlandı — pipeline’ın en yüksek puanlı aşaması.
lostKayıpLead reddetti veya vazgeçti; ayrı bir “kayıp nedeni” ile işaretlenir.

Panelde kontak kartındaki “Durum” (Beklemede/İlgilendi/Randevu Alındı vb.) ile Analiz sekmesindeki “Pipeline Aşaması” farklı alanlardır. Durum, tek bir görüşmenin sonucunu gösterir; pipeline aşaması ise kişinin satış sürecindeki kümülatif konumudur ve geriye gitmez (kayıp hariç).

Aşama nasıl otomatik değişir?

Asistanın her görüşme sonunda ürettiği yapay zeka analizi (outcome alanı) backend’e ulaştığında, kontağın aşaması şu eşlemeyle güncellenir:

Görüşme sonucu (outcome)Türetilen aşama
interestedevaluating
callback_scheduledcontacted
information_providedcontacted
appointment_scheduledcommitted
rejectedlost
no_answerDeğişmez (mevcut aşamada kalır)

Kural şu: pipeline sadece ileri gider, asla geriye düşmez — tek istisna lost, her aşamadan doğrudan tetiklenebilir. Yani bir kontak zaten evaluatingteyken yeni bir görüşme contacted türetse bile aşama evaluatingde kalır; ama aynı kontak “reddettim” derse anında losta düşer.

new → contacted → evaluating → committed → closed

                                      (her aşamadan) → lost

Somut örnek: bir aramanın pipeline’ı nasıl değiştirdiği

Diyelim Ayşe Yılmaz adlı kontak new aşamasında, hiç aranmamış (leadScore: 5, heat: soğuk).

  1. 1. arama — Asistan arar, Ayşe “ilgileniyorum, fiyatı nedir, gelecek hafta konuşalım” der. AI analizi outcome: "interested" üretir.
    • Aşama: newevaluating (interested eşlemesi, ileri hareket olduğu için uygulanır).
    • BANT: konuşma metninde “fiyat” ve “gelecek hafta” geçtiği için budget ve timeline otomatik filled: true işaretlenir (2/4 dolu → 20 puan).
    • Duygu trendi: ilk görüşme olduğu için stable (+5 puan).
    • Başarı oranı: 1 başarılı / 1 deneme → 10 puan.
    • Lead skoru: 20 (BANT) + 25 (evaluating) + 5 (duygu) + 10 (başarı) = 60 → Ilık.
  2. 2. arama — Bir hafta sonra tekrar aranır, bu kez Ayşe “vazgeçtim, çok pahalı” der. AI analizi outcome: "rejected" ve itiraz tipi price üretir.
    • Aşama: doğrudan lost (rejected her zaman kazanır, ileri/geri kuralından bağımsız).
    • lossReason: "price", lossNotes: itirazın metni veya görüşme özeti otomatik yazılır, lostAt zaman damgası eklenir.
    • Lead skoru yeniden hesaplanır — lost aşaması 0 puan verdiği için toplam düşer.

Bu güncelleme, çağrı bittikten saniyeler sonra /api/agent/call-analysis uç noktasına (agent tarafından) otomatik gönderilir — panelde elle bir şey yapmana gerek yok. Detaylı analiz alanları (outcome, sentiment, itirazlar, nextCallAt) için: Çağrı Sonrası Analiz.

Bir kadans (çok adımlı takip) kişiyi bu numaradan arıyorsa, aşama committed veya closeda ulaştığında aktif kayıt otomatik tamamlanmış sayılır; losta düşerse kayıt durdurulur. Takip mantığı için: Cadence Nedir?

Lead Skoru ve BANT (Bütçe – Yetki – İhtiyaç – Zaman)

Her aşama değişiminde 0-100 arası bir lead skoru yeniden hesaplanır. Dört bileşenden oluşur:

BileşenAğırlıkNasıl hesaplanır
BANT dolulukMaks. 40 puanBütçe, Yetki, İhtiyaç, Zamanlama kriterlerinin her biri doluysa +10
Pipeline aşamasıMaks. 40 puanYeni=5, İletişimde=15, Değerlendirme=25, Taahhüt=35, Kapandı=40, Kayıp=0
Duygu trendi+10 / +5 / -5Yükseliyor=+10, Sabit=+5, Düşüyor=-5
Başarı oranıMaks. 10 puan(Başarılı görüşme / Toplam deneme) × 10

Toplam skor 0-100 arasında sınırlanır ve şu eşiklere göre bir sıcaklık (heat) etiketi alır: 70 puan ve üzeri Sıcak, 40-69 arası Ilık, 40’ın altı Soğuk. Kontak listesinde ve kanbanda gördüğün 🔥/🌡/❄️ rozetleri doğrudan bu hesaptan gelir.

BANT nasıl doldurulur?

BANT (bütçe-yetki-ihtiyaç-zaman), bir lead’in gerçekten satın alma potansiyeli taşıyıp taşımadığını dört soruyla test eden klasik bir satış çerçevesidir — Purvisor bunu her görüşme sonrası otomatik doldurmaya çalışır:

  • Bütçe — görüşme metninde “fiyat”, “bütçe”, “maliyet”, “ücret” gibi ifadeler geçerse dolu işaretlenir.
  • Yetki — “karar”, “patron”, “müdür”, “yönetici”, “satın alma” gibi ifadeler karar vericiye temas edildiğini gösterir.
  • İhtiyaç — “ihtiyaç”, “istedi”, “bilgi almak” gibi ifadeler ilgiyi doğrular.
  • Zamanlama — “randevu”, “yarın”, “gelecek hafta”, “haftaya” gibi ifadeler bir zaman çerçevesi olduğunu gösterir.

Bu, anahtar kelime tabanlı bir sezgisel (heuristic) tespittir — mükemmel değildir ama görüşme özetini elle okuyup dört kutuyu tek tek doldurmaktan çok daha hızlıdır. Kontak detayında her BANT kartını elle de düzenleyebilirsin (kalem ikonuna tıkla, değeri gir, kaydet) — AI’ın yanlış anladığı bir kriteri düzeltmek için.

Daha yapılandırılmış veri çıkarmak istiyorsan (örneğin standart bir “bütçe aralığı” alanı), Bilgi Çıkarıcılar ile görüşme sırasında özel alanlar tanımlayabilirsin — BANT sezgisel tespiti bunun yerine geçmez, tamamlar.

Kayıp nedenleri (lossReason)

Bir kontak lost aşamasına düştüğünde sekiz standart nedenden biriyle etiketlenir:

KodPanelde görünen
priceFiyat
timingZamanlama
trustGüven
competitorRakip
no_needİhtiyaç Yok
no_authorityYetki Yok
unreachableUlaşılamadı
otherDiğer

AI, görüşmedeki ilk itirazın tipini otomatik lossReason olarak yazar (yukarıdaki fiyat itirazı örneğinde olduğu gibi); itirazın metni de lossNotes alanına düşer. Kontak detayında kayıp bir lead için Yeniden Aktifleştir butonu bulunur — bu, aşamayı tekrar newe çeker ve pipeline’ı sıfırdan başlatır.

Aşama geçmişi

Aşama geçişleri, ayrı bir geçmiş kaydında saklanır: fromStage, toStage, tetikleyici (trigger), varsa ilişkili çağrı kimliği ve tarih. Bu geçmişi panelden görüntüleyebilir veya GET /api/contacts/{id}/pipeline ile son 50 kaydı çekebilirsin.

⚠️

İnce bir ayrım var: yukarıda anlatılan otomatik aşama değişimi (görüşme sonrası) kontağın güncel aşamasını anında değiştirir ve lead skorunu/ısısını yeniler — ama bu geçişler ayrı bir “geçmiş” satırı olarak loglanmadan doğrudan kontak kaydına yazılır. Panelden veya entegrasyon üzerinden elle yaptığın aşama değişiklikleri ise (aşağıdaki adımlar) hem kontağı günceller hem de geçmiş tablosuna bir satır ekler. Yani en güncel aşama her zaman doğrudur; ayrıntılı “kimden kime, ne zaman” günlüğü şu an yalnızca elle yapılan değişiklikleri kapsar.

Aşamayı elle değiştirme

Kontak detayını aç

Kontaklar listesinden bir kişiye tıkla, Analiz sekmesine geç.

Aşama şeridine tıkla

Yeni → İletişimde → Değerlendirme → Taahhüt → Kapandı şeridinde geçmek istediğin aşamaya tıkla. Onay penceresi çıkar.

Onayla

Onayladığında kontak güncellenir; lead skoru ve ısı (sıcak/ılık/soğuk) yeni aşamaya göre anında yeniden hesaplanır.

📸 [Ekran görüntüsü: Kontak detayı → Analiz sekmesi → tıklanabilir pipeline şeridi + lead skoru kartı]

Sorun giderme

BelirtiOlası neden / çözüm
Aşama hiç ilerlemiyorGörüşmeler AI analizi üretmiyor olabilir (asistanda analiz özelliği kapalı) veya outcome hep no_answer dönüyor — Çağrı Sonrası Analiz’i kontrol et.
BANT kutuları hep boşAnahtar kelime eşleşmesi görüşme dilinde geçmiyor olabilir — kutuyu elle doldur veya prompt’u konuşmayı bu yönde teşvik edecek şekilde güncelle.
Kontak yanlışlıkla “Kayıp” olduAI, ilk itirazı gerçek bir ret sanmış olabilir — kayıp kartındaki Yeniden Aktifleştir ile geri al, gerekirse aşamayı elle ayarla.
Eski görüşmelerin analizi pipeline’a yansımadıKontak silinip yeniden oluşturulmuş olabilir — POST /api/contacts/{id}/sync-analysis bu numaraya ait geçmiş aramaları tarayıp aşama/skor/BANT’ı yeniden inşa eder.
Lead skoru beklediğimden düşükKırılımı (BANT/Pipeline/Duygu/Başarı) Analiz sekmesindeki skor kartının altında görebilirsin — hangi bileşenin eksik kaldığını orada gör.

İlgili