Talep elimizde: “Geç teslim edilen siparişlerde müşteriye otomatik telafi kuponu verelim.” Bu cümle bir sorun değil, bir çözüm önerisidir. Kupon geç teslimi azaltmaz; olsa olsa sonucunu yumuşatır. İş analisti önce şunu sorar: hangi sorunu çözmeye çalışıyoruz?
Görüşmede ne sorulur?
Paydaş (stakeholder), işten etkilenen ya da işe karar veren kişidir. Burada müşteri hizmetleri, operasyon, finans ve pazarlama. Soruları açık uçlu sor, cevabı kendi önerinle kapatma.
| Amaç | Soru | Neden? |
|---|---|---|
| Sorun | Bunu şimdi istemenize ne yol açtı? Son olarak hangi şikâyet geldi? | Gerçek olayı anlatır, varsayımı ayıklar |
| Ölçü | Bu iş başarılı olursa hangi sayı nasıl değişir? | Sonradan “işe yaradı mı?” sorusunu cevaplanabilir kılar |
| Tanım | Sizin için “geç” kaç dakika? Saat ne zaman başlar? | Ekipler aynı kelimeyle farklı şeyi kastedebilir |
| Sınır | Kim kupon almamalı? Toplam bütçe nedir? | İstisnaları ve kötüye kullanımı ortaya çıkarır |
| Bugün | Şu anda bu durumda ne yapıyorsunuz? | Mevcut süreci ve elle yapılan işi gösterir |
| Bedel | Hiç yapılmazsa ne olur? | Önceliği dürüst tartışmayı sağlar |
Sorunu veriyle boyutlandır
Müşteri hizmetleri “çok şikâyet var” diyor. “Çok” bir sayı değil. Geçici bir çalışma tanımı alalım: sipariş verildikten teslime kadar 45 dakikayı (2.700 saniye) aşan teslimat geçtir. Bu tanım henüz karar değil, görüşmede sınanacak bir varsayım. Dönemi Ekim-Aralık 2024 olarak sabitleyelim. Süreyi saniyeyle hesaplıyoruz; nedenini bir sonraki derste göreceksin.
WITH t AS (
SELECT order_id, customer_id, restaurant_id, courier_id, status, placed_at,
ROUND((julianday(delivered_at) - julianday(placed_at)) * 86400) AS sure_sn
FROM lk_orders
WHERE placed_at >= '2024-10-01' AND placed_at < '2025-01-01'
)
SELECT status, COUNT(*) AS siparis,
SUM(CASE WHEN sure_sn > 2700 THEN 1 ELSE 0 END) AS gec
FROM t
GROUP BY status
ORDER BY status;
Teslim edilen 6.637 siparişin 1.508 tanesi (%22,7) bu tanıma göre geç. Sayının yanında şunlar da çıktı: 356 iptal siparişin teslim zamanı yok, 35 iade edilmiş sipariş de 45 dakikayı aşmış. Bunlar birazdan gereksinim sorusu olacak.
Sorun nerede oluşuyor?
Kupon kararı vermeden önce gecikmenin kaynağına bak. Süreyi ikiye böl: hazırlık (sipariş → kuryenin alışı) ve yol (alış → teslim).
SELECT CASE WHEN ROUND((julianday(delivered_at) - julianday(placed_at)) * 86400) > 2700 THEN 'geç' ELSE 'zamanında' END AS durum,
COUNT(*) AS siparis,
ROUND(AVG((julianday(picked_at) - julianday(placed_at)) * 86400) / 60.0, 1) AS hazirlik_dk,
ROUND(AVG((julianday(delivered_at) - julianday(picked_at)) * 86400) / 60.0, 1) AS yol_dk
FROM lk_orders
WHERE status = 'teslim' AND placed_at >= '2024-10-01' AND placed_at < '2025-01-01'
GROUP BY CASE WHEN ROUND((julianday(delivered_at) - julianday(placed_at)) * 86400) > 2700 THEN 'geç' ELSE 'zamanında' END;
Geç siparişlerde hazırlık 19,8, yol 33,2 dakika; zamanında olanlarda 14,1 ve 19,2. Fark en çok yolda. Araç türüne bakınca geç oranı bisiklette %48,6, arabada %34,1, motosiklette %21,0. Fırın Pizza'da oran %50,0. Bunu alıştırmalarda kendin hesaplayacaksın.
Kupon gerçekten ne sağlar?
Talebin varsayımı şu: geç teslim alan müşteri kaçıyor. Veride bunun izine bak. Ekim-Kasım teslimatlarından sonraki 30 gün içinde yeniden sipariş veren müşteri payı, geç teslimlerde %84,9, zamanında olanlarda %86,4.
WITH s AS (
SELECT order_id, customer_id, placed_at,
CASE WHEN ROUND((julianday(delivered_at) - julianday(placed_at)) * 86400) > 2700 THEN 'geç' ELSE 'zamanında' END AS durum
FROM lk_orders
WHERE status = 'teslim' AND placed_at >= '2024-10-01' AND placed_at < '2024-12-01'
)
SELECT durum, COUNT(*) AS teslimat,
ROUND(100.0 * SUM(CASE WHEN EXISTS (
SELECT 1 FROM lk_orders n
WHERE n.customer_id = s.customer_id AND n.placed_at > s.placed_at
AND (julianday(n.placed_at) - julianday(s.placed_at)) * 86400 <= 2592000
) THEN 1 ELSE 0 END) / COUNT(*), 1) AS donus_yuzde
FROM s
GROUP BY durum;
Fark küçük. Müşteri puanı ise belirgin düşüyor: geç teslimlerde kurye puanı ortalaması 3,86, diğerlerinde 4,41. Dürüst özet: geç teslim memnuniyeti düşürüyor; yeniden siparişe etkisi bu veride küçük görünüyor. Bu gözlemdir, neden-sonuç kanıtı değildir ve kuponun getirisini garanti etmez. Bunu talep sahibine söylemek senin işindir. Kupon yine yapılabilir, ama başarı ölçüsü buna göre yazılır.
Başarı ölçüsü: sayı, kaynak, hedef, süre
“Şikâyetler azalsın” ölçü değildir. Ölçü dört şeyi söylemeli: nereden başlıyoruz, başlangıç sayısı nereden geliyor, hedef kaç, ne zaman bakacağız.
| Ölçü | Başlangıç değeri ve kaynağı | Hedef | Süre | Sahibi |
|---|---|---|---|---|
| Ana ölçü: pilot grupta geç teslim şikâyeti sayısı | Geçişten önceki 8 haftanın sayısı; müşteri hizmetleri kayıtlarından alınacak. Bu veri uygulamada yok. | %20 azalma | Geçişten sonraki 8 hafta, pilot dışı grupla karşılaştırmalı | Müşteri hizmetleri |
| Yan ölçü: geç teslimlerde ortalama kurye puanı | 3,86; Ekim-Aralık 2024, bu uygulamadaki veri | Düşmemesi yeterli | Aynı 8 hafta | Operasyon |
%20 hedefi veriden çıkmadı: talep sahibiyle konuşulup yazılan bir hedeftir ve başlangıç sayısı gelince gözden geçirilir. Başlangıç değeri olmayan ölçüyü kabul etme: açık soru olarak yaz, sahibini ve tarihini koy.
Bedeli ne kadar?
Görüşmeden çıkan tutar önerisi: 45-60 dakika arası 30 TL, 60 dakikayı aşan 60 TL. Bu kuralla dönemin kupon bedeli üst sınırda 51.900 TL. Karşılaştırma için aynı dönemde teslim edilen siparişlerin sepet toplamı 3.391.530 TL. Üst sınır diyoruz, çünkü her kupon kullanılmayabilir ve bir aylık sınır gelebilir.
Kapsamı çiz
| Kapsam içi | Kapsam dışı (bu sürümde) |
|---|---|
| Teslim edilmiş siparişte süre hesabı ve kupon üretimi | Geç teslimi azaltacak kurye ve restoran iyileştirmeleri |
| Kuponun müşteriye bildirilmesi | Kuponu ödeme ekranında kullanma ekranının yeniden tasarımı |
| Operasyon için kupon raporu | Restoranı kupon bedeline ortak etme (ayrı talep) |
Kapsam dışı listesi en az kapsam içi kadar değerlidir. “Bunu kastetmemiştik” tartışmasını baştan keser. Çıktın tek sayfalık talep özetidir: sorun, kanıt sayıları, başarı ölçüsü, kapsam, açık sorular.