Add design documentation for CTA drawer and UX improvements

- Introduced a new document detailing the design principles behind the funnel CTA drawer, emphasizing user flow and context retention.
- Added a UX/CRO corrections document outlining critical findings from a recent audit, including payment flow adjustments, button transparency, and pricing clarity.
- Created a gamification document to outline user engagement strategies and the program evaluation model for the Kolay Tercih feature.
- Developed a vision document for TercihAI, detailing the product's positioning, revenue model, and MVP scope, aimed at providing AI-assisted preference guidance for students.
This commit is contained in:
bilalgursen
2026-08-06 02:27:34 +03:00
parent 9ea006ec22
commit 488845ae1f
4 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
# CTA çekmecesi tasarım algısı — "Sıralamanla nereye yerleşirsin? Saniyede gör."
Bu doküman, programatik SEO sayfalarındaki funnel CTA'sının (`src/components/cta-sira-form.tsx`)
alttan açılan çekmece (drawer) tasarımının arkasındaki algıyı ve kuralları belgeler.
Yeni bir funnel giriş noktası eklerken ya da bu bileşeni değiştirirken buradaki
ilkelere uy.
## 1. Temel algı: vaadi verdiğin yerde tahsil et
Eski davranış adayı ana sayfaya (`/`) gönderiyordu: "Saniyede gör" vaadi verip
saniyeler süren bir sayfa geçişi ve bağlam kaybı yaşatıyordu. Yeni algı şu:
- **Kart vaat eder** — SEO sayfasının içinde duran kart (`bg-primary/5`,
`border-primary/20`) merak uyandırır: "Sıralamanla nereye yerleşirsin?"
- **Çekmece tahsil eder** — CTA butonu sayfadan koparmadan alttan bir çekmece
açar; sıralama girişi, sihirbaz adımları ve tamamlama hepsi aynı bağlamda akar.
- **Ödül `/sonuc`'ta** — seçimler tamamlanınca profil yazılır, çekmece kapanır
ve aday doğrudan sonuç sayfasına gider. Sayfa geçişi yalnızca ödül anında olur.
Akış: **kart (vaat) → çekmece (sıralama) → sihirbaz (kişiselleştirme) → /sonuc (ödül)**.
Profilli adayda çekmece hiç devreye girmez: kayıtlı sıralamayla doğrudan
`/sonuc` linki gösterilir — sıralamasını girmiş adaya bir daha girmesini
söylemeyiz.
## 2. Neden çekmece, modal değil?
- Çekmece **sayfanın üstüne değil, altına eklenir** algısı verir: aday hâlâ
okuduğu üniversite/bölüm sayfasının üzerindedir, içerik kaybolmaz (overlay
hafif: `bg-black/10` + blur).
- Alttan gelen yüzey mobilde başparmak menzilinde; hedef kitle (YKS adayı)
ırlıkla mobilde.
- Swipe-to-dismiss (tutamaktan) ve overlay/Escape ile kaçış ucuz: "bir bakayım"
maliyeti düşük tutulur. `handleOnly` kullanılır ki form/sihirbaz içindeki
kaydırmalar çekmeceyi yanlışlıkla kapatmasın.
- Desktop'ta çekmece tam genişliğe yayılmaz: `sm:max-w-2xl` ile ortalanır,
`sm:border-x + sm:shadow-2xl` ile sayfadan yükselen bir panel gibi durur
(liste çekmecesiyle aynı reçete).
## 3. Görsel dil: yeni hiçbir şey icat etme
Çekmecedeki her parça sitede zaten var olan kanonik kaynaktan gelir:
| Parça | Kaynak / kural |
| --- | --- |
| Eyebrow rozeti ("Saniyede gör") | `SectionEyebrow` (`pixel-decor.tsx`) — elle pill yazılmaz |
| Kapatma çarpısı | `dialog.tsx`'teki kanonik set: `size-9`, `rounded-full`, `border-slate-200`, `size-4` X, hover `bg-slate-100`, `active:scale-[0.96]` |
| CTA butonları | Metin önce, sonda `ArrowRight` (`size-4`); yıldız/Sparkles yok; `bg-orange-500 → hover:bg-orange-600` |
| Puan türü çipleri | Hero formundaki radiogroup çipleriyle birebir aynı class seti |
| Sıralama girişi | Profil kapısındaki desen: sola `Trophy` ikonu, `h-12`, `pl-11` |
| Kanıt üçlüsü | Arama funnel kartıyla aynı üçlü: 24 tercihlik plan / Risk analizi / YÖK Atlas verisi (`ListChecks`, `ChartNoAxesCombined`, `Database`) |
| Başlık/kopya tipografisi | `font-heading` bold başlık, `text-slate-600` gövde, `text-slate-900` vurgu |
Algı hedefi: çekmece açıldığında aday "yeni bir yere geldim" değil, "aynı ürünün
bir katmanı kalktı" hissetmeli. Bu yüzden çekmeceye özgü hiçbir yeni renk,
rozet, buton varyantı tasarlanmaz.
## 4. İçerik tonu
- Öğrenci diliyle, ikinci tekil: "Sıralamanı yaz", "bu sayfadan ayrılmadan gör".
- Sürtünme kaldıran güvence her zaman görünür: **"Ücretsiz, üyelik gerekmez."**
- Kanıt üçlüsü süs değil, ürün vaadinin özetidir; metin etiketleri ikonsuz da
anlamlı olmalı (renk/ikon tek başına anlam taşımaz — ürünün risk renk dili
kuralıyla aynı ilke).
- Buton etiketleri eylemin sonucunu söyler: "Programları gör" (girdi adımı),
"Ücretsiz tablonu gör" / "Yapay Zeka listemi kur (3 kredi)" (sihirbaz sonu, girişe göre).
## 5. Davranış ve teknik algı
- **Statik kalır:** Kart RSC sayfalarında prerender edilir; oturum bilgisi
mount'ta değil, facet isteğiyle **paralel** çözülür (hero formundaki desen) —
landing başına gereksiz auth turu atılmaz.
- **Preload:** CTA butonuna `pointerenter`/`focus` ve sıralama inputuna `focus`
geldiğinde `preloadSihirbazAdimlar()` çalışır; sihirbaz açıldığında chunk
çoktan inmiştir. "Saniyede gör" vaadi teknik olarak da tutulur.
- **İki adım, tek yüzey:** çekmece içinde `sira → sihirbaz` adımları vardır;
erişilebilir ad sabittir (sr-only `DrawerTitle`/`DrawerDescription`), görünür
başlıklar adıma göre değişir.
- **Kapanış = sıfırlama, ama nazikçe:** çekmece kapanınca adım ve facet'ler
sıfırlanır; adayın yazdığı sıralama ve puan türü **korunur** (tekrar açarsa
baştan yazmasın).
- **Tamamlanınca:** `tercihProfiliYaz` → çekmece kapanır → `sonucHref` ile
`/sonuc` (girişliye `sihirbaz: "1"`, girişsize `hazir: "1"`). Giriş duvarı
sihirbazın hemen arkasında değildir; değer önce gösterilir.
- **Lenis:** çekmece içeriği ve kaydırma kabı `data-lenis-prevent` taşır;
sayfadaki smooth-scroll çekmece içi kaydırmayı ezmez.
## 6. Erişilebilirlik
- Sıralama alanı: `inputMode="numeric"`, binlik ayraçlı biçimleme
(85000 → 85.000), hata durumunda `aria-invalid` + `aria-describedby` +
`role="alert"`.
- Puan türü seçimi `role="radiogroup"` / `role="radio"` + `aria-checked`.
- Kapatma yolları: çarpı butonu, overlay, Escape, tutamaktan swipe.
- `prefers-reduced-motion` vaul/motion tarafında zaten sadeleşir; çekmeceye
özel ek animasyon eklenmedi.
## 7. Bu deseni ne zaman kullan / kullanma
**Kullan:** İçerik sayfasında duran ve adaydan tek kritik girdi (sıralama)
isteyen her funnel girişi. Adayın okuduğu bağlam değerliyse (bölüm, üniversite,
rehber) çekmece doğru araçtır.
**Kullanma:** Zaten modal/dialog içinde olan akışlar (arama modalındaki funnel
kartı gibi — modal üstüne çekmece açılmaz, oradaki kart mevcut kapı/dialog
akışını kullanır) ve profilli kısayollar (doğrudan link yeterli).

View File

@@ -0,0 +1,101 @@
# UX/CRO Kritik Düzeltmeler — Uygulama Takibi
UX denetiminden çıkan 🔴 kritik bulguların uygulama listesi.
Kaynak: 26 Temmuz 2026 tarihli UX/CRO denetimi.
## K1 — Ödeme sonrası teslimat
- [x] `/odeme/sonuc` başarı CTA'sı doğrudan `/listem`'e gitsin (ölü `/sonuc?acildi=1` yerine)
(sahte "paid" siparişle canlı doğrulandı: CTA → `/listem?acildi=1`)
- [x] `/listem` ödeme dönüşünde tek seferlik "kilit açıldı" deneyimi (banner + unblur)
- [x] Ücretli `/listem` başlık kopyası düzelsin (rozet "Paketin aktif", alt metin
"24 tercihinin tamamını gerekçe, risk analizi ve trendleriyle…")
## K2 — Buton dürüstlüğü (giriş duvarı sürprizi)
- [x] Hero sihirbazı son butonu girişsiz kullanıcıda girişi açıkça söylesin
("Giriş yap ve listeni gör"; girişliyse "Listemi oluştur (3 kredi)")
- [x] Hero akışı oturumu açık kullanıcıyı `/giris`'ten sektirmeyip doğrudan `/sonuc`'a götürsün
- [x] `/sonuc` sihirbazında girişsiz son buton "Listemi gör" yerine dürüst etiket taşısın
- [x] Değer önce: hero sihirbazı biten girişsiz kullanıcı `/giris`'e değil doğrudan
`/sonuc`'taki ücretsiz tabloya gitsin; AI CTA'sı oradan "5 deneme kredinle
AI listeni kur — giriş yap" olarak verilsin (panel + sabit alt kart);
girişten dönüşte kayıtlı seçimlerle otomatik üretim başlasın
## K3 — Fiyat şeffaflığı
- [x] Landing hero mikro-kopyasına paket fiyatı (299 TL) eklensin
- [x] FAQ "Fiyatlandırma nasıl çalışıyor?" cevabına rakamlar yazılsın
## K4 — Puan türü seçici
- [x] Hero formuna SAY/EA/SÖZ/DİL/TYT segment kontrolü (varsayılan SAY)
## K5 — Ücretsiz kullanıcıya AI sohbeti
- [x] `/listem`'de paketi olmayan kullanıcıya kalan kredileriyle sohbet açılsın
(fiyat kartının altında; mesaj gönderimi + kredi düşümü canlı doğrulandı)
- [x] Kredi bitince composer yerinde paket CTA'sı görünsün (0 krediyle canlı doğrulandı)
## K6 — Ödeme/AI hata mesajları
- [x] iyzico/Anthropic yapılandırma hataları kullanıcıya ham sızmasın (log'a detay, kullanıcıya sade mesaj)
(iyzico yolu canlı doğrulandı: "Ödeme şu anda başlatılamıyor; kartından çekim yapılmadı…")
- [x] `/paket` sayfası `?hata=token|siparis` parametresini okuyup banner göstersin
## Bonus
- [x] Hero rozetindeki "açıkk" yazım hatası düzeltilsin
---
# 🟠 Önemli
- [x] Ö1: `/listem` paywall ara kartı kopyası netleşsin (kilit ikonu + "aşağıdaki tüm
satırlar açık" çelişkisi giderilsin; CTA fiyatı söylesin)
(yeni kopya: "İlk 3 tercihte AI analizini gördün… Analizleri aç — 299 TL")
- [x] Ö2: İl seçimi mobilde aranabilir liste ile yapılabilsin; harita mobilde geri
çekilsin; harita illerine erişilebilir isim (aria-label) eklensin
(arama + çip birincil; harita ≥sm'de görsel destek; path'lerde aria-label/aria-pressed)
- [x] Ö3: "Listem" isim çakışması giderilsin (manuel liste "Seçtiklerim" olsun,
AI raporu /listem "Listem" kalsın)
- [x] Ö3b: Navbar'daki "Seçtiklerim" butonu liste boşken görünmesin — tabloya
ulaşmamış ziyaretçiye "0/24" gürültü; ilk program eklenince belirir,
liste boşalınca kaybolur (canlı doğrulandı)
- [x] Ö4: Güven sayfaları eklensin (gizlilik/KVKK, kullanım & iade koşulları,
iletişim) ve footer + giriş + paket sayfalarından bağlansın
(NOT: metinler MVP taslağı — yayın öncesi hukuki gözden geçirme gerekir)
- [x] Ö5: AI'ın ürettiği genel değerlendirme ve uyarılar /listem'de görünsün
(paketliye tam, paketsize kilitli önizleme — "Danışman özeti" kartı)
- [x] Ö6: Paketlinin gerçek revizyon akışı /listem'de çalışsın (geri bildirim
kutusu; başlıktaki "Revize et" oraya götürsün)
(`revizyon-kutusu.tsx``listeRevize` aksiyonu; kalan hak sayacıyla)
- [x] Ö7: Liste tepesine dilim özeti (hayal/dengeli/garanti dağılımı) ve tek
şehir uyarısı eklensin
- [x] Ö8: 2024/2025 verisi eksik satırda çelişkili trend rozeti gösterilmesin
(rozet iki yıl da doluysa çıkar; yoksa "Veri eksik")
- [x] Ö9: Magic link "gönderildi" ekranına yeniden gönder + e-postayı düzelt eklensin
(30 sn bekleme sayaçlı yeniden gönder + "E-postayı düzelt")
- [x] Ö10: Mobilde sohbete hızlı erişim (yüzen "Danışmana sor" kısayolu)
# 🛠 Dev araçları
- [x] Dev süperadmin paneli: yalnızca geliştirme ortamında sol altta "DEV"
butonu — anında giriş (magic link atlanır), kredi/paket/rapor senaryoları,
sahte "paid" siparişle ödeme başarı ekranı, tüm sayfalara hızlı bağlantılar
(`src/components/dev/dev-panel.tsx` + `src/lib/dev/actions.ts`;
layout NODE_ENV kontrolüyle monte eder, aksiyonlar sunucuda ayrıca korunur)
# 🟢 Güzel olur
- [x] G1: Sıralama girişinde canlı binlik ayracı + toast yerine input altı hata
- [x] G2: Sihirbaz adım göstergesi tamamlanan adımı işaretlesin; 1. adımda
"Geri" görünmesin
- [x] G3: Route-level loading / error / not-found boundary'leri eklensin
(kök loading/error/not-found + /sonuc ve /listem'e Skeleton'lı loading)
- [x] G4: Landing istatistik kartlarının yanında "yerleşme garantisi vermeyen
dürüst araç" konumlandırması cesur işlensin (koyu kart: "Yerleşme
garantisi vermiyoruz. Çünkü kimse veremez.")
- [x] G5: `sonButonEtiketi` şeffaflığı hero varyantına taşınsın (girişli:
"Listemi oluştur (3 kredi)"; girişsiz artık ücretsiz tabloya gittiği
için "Ücretsiz tablonu gör")

239
docs/urun/gamification.md Normal file
View File

@@ -0,0 +1,239 @@
# Kolay Tercih — Gamification ve Listeye Ekleme Kurgusu
> Durum: Ürün kararı
> Son güncelleme: 1 Ağustos 2026
## Ana fikir
Kolay Tercih'te bütün deneyim kullanıcının başarı sıralaması üzerine inşa
edilir. Amaç kullanıcıya yalnızca erişebileceği programları göstermek değil;
seçtiği programların sıralamasına, ilgi alanlarına ve önceliklerine ne kadar
uyduğunu açıklayarak tercihine ışık tutmaktır.
Gamification; puan, rozet veya yapay rekabet üzerinden değil, kullanıcının
belirsiz bir fikirden gerekçeli ve dengeli bir tercih listesine ilerlemesi
üzerinden çalışır.
## Değişmez ürün kuralları
1. Başarı sıralaması bütün hesaplamaların başlangıç noktasıdır.
2. Listeye yalnızca tekil bir program eklenir. Üniversitenin veya bölümün tamamı
listeye eklenmez.
3. Program satırlarında erişilebilir bir `+` düğmesi bulunur.
4. Kullanıcı sihirbazı doldurmadan ilk programı listesine ekleyemez.
5. Sihirbaz tamamlandıktan sonra `+` ile seçilen program doğrudan listeye
eklenir; uyumsuz programlar engellenmez.
6. Sistem kullanıcının yerine karar vermez. Çelişkileri görünür kılar, nedenini
ıklar ve son kararı kullanıcıya bırakır.
7. “Garanti kazanırsın” gibi kesinlik bildiren ifadeler kullanılmaz. Risk ve
uyum değerlendirmeleri geçmiş YÖK Atlas verilerine dayalı rehberliktir.
## Kullanıcı yolculuğu
### 1. Sıralamayı öğren
Kullanıcı başarı sıralamasını ve puan türünü girer. Sistem buna göre program
havuzunu, hayal/dengeli/güvenli aralıklarını ve kullanılabilir sihirbaz
seçeneklerini oluşturur.
### 2. Niyetini öğren
Kullanıcı ilk kez bir programdaki `+` düğmesine bastığında sihirbaz seçimleri
yoksa program hemen eklenmez. Tıklanan program “bekleyen program” olarak
korunur ve kısa sihirbaz açılır.
Sihirbaz en az şu bilgileri toplar:
- İlgi alanları
- Tercih edilen şehirler
- Devlet/vakıf tercihi
- Kariyer ve yaşam öncelikleri
Sihirbaz giriş mesajı:
> Önce seni biraz tanıyalım
>
> Sadece sıralamana uyan bir liste değil, ne istediğine de uyan bir tercih
> listesi kurmak istiyoruz. Birkaç kısa seçim yap; eklediğin programların sana
> ne kadar uyduğunu birlikte değerlendirelim.
Kısa alternatif:
> Tercihine ışık tutabilmemiz için önce ne istediğini öğrenelim.
Birincil eylem:
> Tercihlerimi belirle
İkincil eylem:
> Vazgeç
Sihirbaz zorunludur; “şimdilik atla ve ekle” seçeneği bulunmaz.
### 3. İlk programı ekle
Sihirbaz başarıyla tamamlandığında kullanıcının daha önce `+` ile seçtiği
bekleyen program otomatik olarak listeye eklenir. Kullanıcı aynı programı
yeniden bulmak veya tekrar `+` düğmesine basmak zorunda kalmaz.
Başarı bildirimi:
> Program listene eklendi. Sıralamana ve tercihlerine göre değerlendirdik.
### 4. Listeyi bilinçli biçimde geliştir
Sihirbaz tamamlandıktan sonraki `+` tıklamaları programı doğrudan ekler.
Sistem ekleme öncesinde onay modalı göstermez ve uyumsuz seçimleri engellemez.
Her programın değerlendirmesi listede görünür.
## Program değerlendirme modeli
Her eklenen program iki ayrı eksende değerlendirilir:
### Yerleşme riski
Kullanıcının başarı sıralaması ile programın güncel ve geçmiş taban
sıralamaları karşılaştırılır.
Örnek durumlar:
- Hayal
- Dengeli
- Daha güvenli
- Veri yetersiz
“Garanti” yerine mümkün olduğunda “daha güvenli” ifadesi tercih edilir.
### Tercih uyumu
Program, sihirbaz seçimleriyle karşılaştırılır. Uyum tek bir kapalı puan olarak
verilmek yerine anlaşılır gerekçelerle açıklanır.
Örnek olumlu sinyaller:
- İlgi alanlarınla uyumlu
- Tercih ettiğin şehirlerden birinde
- Devlet/vakıf tercihine uyuyor
- Kariyer önceliklerinle örtüşüyor
Örnek çelişki sinyalleri:
- Seçtiğin ilgi alanlarının dışında görünüyor
- Tercih ettiğin şehirlerin dışında
- Üniversite türü tercihinle uyuşmuyor
- Belirttiğin önceliklerle zayıf eşleşiyor
Dil yargılayıcı olmamalıdır. “Sana uygun değil” yerine “seçimlerinle
karşılaştırdığımızda şu noktada ayrışıyor” denir.
## Liste ekranı
Liste yalnızca seçilen programları depolayan bir favoriler alanı değildir.
Kullanıcının tercih stratejisini görünür kılan karar merkezidir.
Her satırda en az şu bilgiler bulunur:
- Program ve üniversite
- Güncel taban sıralaması
- Kullanıcının sıralamasına göre risk durumu
- Tercihlerle uyumlu noktalar
- Varsa çelişki veya dikkat notu
- Listeden çıkarma eylemi
Örnek uyumlu satır mesajı:
> İlgi alanın ve devlet üniversitesi tercihinle uyumlu. Sıralama açısından
> dengeli aralıkta.
Örnek çelişkili satır mesajı:
> Bu program listende kalabilir; ancak seçtiğin ilgi alanlarının ve tercih
> ettiğin şehirlerin dışında görünüyor.
Örnek risk mesajı:
> Geçen yılın taban sıralaması senin sıralamandan daha yukarıda. Hayal
> tercihlerinden biri olarak değerlendirebilirsin.
Birden fazla çelişki varsa sistem hepsini aynı anda bağırmaz. En önemli bir veya
iki gerekçe satırda gösterilir; ayrıntılar açılır alanda sunulur.
## İlerleme hissi
Deneyimin oyunlaştırma döngüsü şöyledir:
1. **Keşfet:** Sıralamana göre programları incele.
2. **Seç:** `+` ile ilgini çeken programı listene al.
3. **Anla:** Sistem risk ve tercih uyumunu açıklar.
4. **Dengele:** Hayal, dengeli ve daha güvenli dağılımını geliştir.
5. **Tamamla:** Gerekçeli 24 tercihlik listeye ulaş.
İlerleme göstergeleri:
- `3 / 24 tercih`
- Hayal / dengeli / daha güvenli dağılımı
- Tercihlerle güçlü uyum gösteren program sayısı
- Dikkat edilmesi gereken seçim sayısı
- Listenin eksik kalan tarafına yönelik tek ve uygulanabilir öneri
Örnek yönlendirmeler:
> Listen dengeli tercihlerde güçleniyor. Birkaç daha güvenli seçenek eklemek
> riski dağıtabilir.
> Seçtiklerinin çoğu aynı şehirde. Şehir konusunda esneksen alternatiflerini
> genişletebilirsin.
> 24 tercihe ulaştın. Şimdi dağılımı ve dikkat notlarını birlikte gözden geçir.
## `+` düğmesinin durumları
- **Varsayılan:** “Listeme ekle”
- **Sihirbaz gerekli:** Tıklama sihirbaz ön bilgilendirmesini açar
- **Ekleniyor:** Düğme geçici olarak devre dışı kalır
- **Eklendi:** `+` yerine onay işareti gösterilir, erişilebilir etiketi
“Listende” olur
- **Liste dolu:** Düğme devre dışıdır ve “Listen 24 tercihe ulaştı” açıklaması
sunulur
- **Hata:** Seçim kaybolmaz; kullanıcıya yeniden deneme eylemi verilir
İkon düğmesinin dokunma alanı en az 44×44 piksel olmalı ve yalnızca ikona bağlı
anlam bırakılmamalıdır. Görsel etiket veya erişilebilir ad bulunmalıdır.
## Sihirbaz seçimlerini değiştirme
Kullanıcı sihirbaz yanıtlarını daha sonra değiştirebilir. Değişiklik mevcut
programları listeden otomatik olarak çıkarmaz. Bütün satırların uyum
değerlendirmesi yeni yanıtlara göre yeniden hesaplanır ve değişen yorumlar
görünür biçimde güncellenir.
Örnek bildirim:
> Tercihlerin güncellendi. Listendeki programları yeni seçimlerine göre yeniden
> değerlendirdik; hiçbir programı silmedik.
## Kaçınılacak kalıplar
- Kullanıcıyı sihirbazı doldurmadığı için suçlayan dil
- Uyumsuz bir programın eklenmesini engellemek
- Sadece renk ile uyum veya risk anlatmak
- Kesin yerleşme vaadi vermek
- Her `+` tıklamasında modal veya onay adımı göstermek
- Rozet, puan ve seri gibi kararın ciddiyetini oyunlaştıran ödüller
- Kullanıcının sihirbazdan önce tıkladığı programı unutmak
- İlgi alanı uyumunu yerleşme ihtimaliyle aynı şeymiş gibi sunmak
## Başarı ölçütleri
- Sıralama sonucundan ilk `+` tıklamasına geçiş
- İlk `+` sonrasında sihirbaz tamamlama oranı
- Sihirbazdan sonra bekleyen programın başarıyla eklenme oranı
- Kullanıcı başına eklenen program sayısı
- 24 tercihe ulaşan kullanıcı oranı
- Uyarı görüldükten sonra programı koruma/çıkarma davranışı
- Sihirbaz tercihlerini güncelleme oranı
- Liste dağılımının zaman içinde daha dengeli hâle gelmesi
Bu metrikler kullanıcıyı daha çok tıklamaya zorlamak için değil, daha bilinçli
bir tercih listesi kurup kuramadığını anlamak için kullanılmalıdır.

94
docs/urun/vizyon.md Normal file
View File

@@ -0,0 +1,94 @@
# TercihAI (çalışma adı) — Cebindeki Tercih Danışmanı
> Durum: Fikir doğrulandı, MVP geliştirme aşamasında. Son güncelleme: 20 Temmuz 2026.
## Tek cümlelik tanım
YKS öğrencisine, insan tercih danışmanının 2.00010.000 TL'ye yaptığı işi
299499 TL'ye yapan AI destekli tercih asistanı.
## Neden bu niş? (Pazar araştırması özeti — Temmuz 2026)
- Türkiye B2C'de tüketicinin istisnai para harcadığı alanlar: oyun, fal/astroloji,
dating, **eğitim**. Eğitim, ailelerin en son kıstığı harcama.
- Fal nişi kanıtlanmış gelire sahip (Faladdin: 15M+ kullanıcı, ~$5M/yıl) ama
kurucusu Temmuz 2025'te gözaltına alındı, gelirler "yasa dışı kazanç" sayıldı
→ hukuki risk nedeniyle elendi.
- Mevcut "tercih robotları" (tercihrobotu.com.tr, Kariyer.net, YÖK Atlas sihirbazı)
tamamen ücretsiz **liste filtreleme** araçları — bu katman metalaşmış.
- Para, akıl verme katmanında: insan danışmanlar tercih döneminde 2.00010.000 TL
alıyor. Bu katmanı AI ile ciddi yapan kimse yok. **Boşluk burası.**
## Konumlandırma
"Puanına göre bölüm listeleyen robot" DEĞİL — "listeni birlikte kuran,
riskini açıklayan, sorularına cevap veren danışman."
- Sıralamana göre 24 tercihlik dengeli liste (hayal / dengeli / garanti dilimleri)
- Her tercih için gerekçe: son 4 yıl taban sıralaması trendi, kontenjan değişimi, doluluk
- Serbest soru-cevap: "X bölümü mü Y mi?", "Bu sıralamayla riskli mi?", iş imkanları
- Veli modu: sürece para veren kişi çoğu zaman veli — çıktılar veliye anlatılabilir olmalı
## Gelir modeli (kararlaştırıldı — 21 Temmuz 2026)
Tek seferlik ödeme + tükenen kredi modeli (abonelik yok, bilinçli):
- **Ücretsiz:** temel program arama + sıralama sorgusu (trafik mıknatısı + SEO)
- **Kayıt (Google login + e-posta magic link):** 35 deneme kredisi
+ rapor önizlemesi (ilk 5 tercih satırıık, gerisi blur)
- **Tek paket — 299 TL / 60 kredi:**
- Pakete DAHİL (kredi düşmez): kişisel 24'lük liste + risk raporu
+ PDF çıktı + 2 liste revizyonu hakkı
- Krediler sadece AI sohbet için: her mesaj = 1 kredi (60 soru hakkı)
- **Top-up:** krediler bitince 99149 TL'ye +30 kredi (sezon sonu panik-alımı)
- **Ödeme:** iyzico, tek çekim (başvuru hemen yapılmalı — onboarding 27 gün)
- Satış mesajı: "Listen + risk raporun + 60 soru hakkın — danışmanın 1/10 fiyatına"
- Sezon dışı genişleme (v2): KPSS/DGS/ALES tercihleri, yıl boyu AI sınav koçu
### Funnel
/sonuc (ücretsiz dilimler) → "Risk analizini gör" CTA → kayıt (deneme kredisi
+ blur önizleme) → 299 TL paywall → liste + rapor + sohbet → kredi bitince top-up.
## Veri kaynakları
- [yokatlas-py](https://github.com/saidsurucu/yokatlas-py) — YÖK Atlas'ın yeni
JSON API'sine karşı güncel (v0.6.0+); taban puan, başarı sırası, kontenjan, son 4 yıl.
YÖK Atlas Nisan 2026'da React SPA'ya geçti, eski HTML scraping öldü — bunu kullan.
- [yokatlas-dataset-2025](https://github.com/MorphaxTheDeveloper/yokatlas-dataset-2025) —
hazır CSV dump (bootstrap için)
- Strateji: veriyi kendi Postgres'imize alıp oradan servis etmek (API'ye bağımlı kalma)
## Stack ve mimari kararlar
- Next.js (App Router) + TypeScript + Tailwind + shadcn/ui (radix, nova preset)
- Postgres (program/puan verisi + kullanıcılar)
- AI katmanı: Claude API — sohbet + liste üretimi, YÖK Atlas verisiyle grounded
- Ödeme: iyzico veya PayTR (TL, tek seferlik ödeme)
- Deploy: Vercel. SEO için taban puan sayfaları SSR (organik trafik kanalı)
## MVP kapsamı (sezon hedefi: tercih dönemi bitmeden yayında)
1. ✅ Veri pipeline: YÖK Atlas CSV → SQLite (`npm run ingest`, 20212024 arşivi)
+ canlı API tazeleme (`npm run refresh`: POST /api/tercih-kilavuz/search,
2025 sıralama/puan/kontenjan, 23.610 program, 17.994'ünde 2025 sırası).
Az yerleşenli programlarda API sıralama vermez → NULL; sorgular
COALESCE(sira2025, sira2024) kullanır. Deploy'da Postgres/Turso'ya taşınacak.
2. ✅ Ücretsiz: sıralama gir → hayal/dengeli/garanti dilimleri (`/sonuc`,
puan türü seçimi, 2024→2025 trend göstergesi). SEO sayfaları yapılacak.
3. Ücretli: AI danışman sohbeti + 24'lük dengeli liste üretimi + PDF çıktı
4. Ödeme entegrasyonu (tek seferlik)
## Riskler
- **Sezonluk gelir:** yılın ~6 haftası pik. Kabul edildi (yan proje hedefi $15K MRR eşdeğeri).
- **ÖSYM takvimi:** tercih dönemi kısa; bu sezona yetişemezsek KPSS tercihleri (AğustosEylül)
ve gelecek YKS sezonu hedeflenir.
- **AI yanlış yönlendirme:** tercih hayati karar — her öneri gerçek YÖK Atlas verisine
dayanmalı, "garanti" dili yasak, sorumluluk reddi şart.
- **Rakiplerin AI eklemesi:** Kariyer.net vb. ekleyebilir; hız ve odak bizim avantajımız.
## Kurucular
- Bilal (geliştirme + ürün) — yazılımcı, yan proje kapasitesi günde 12 saat
- Claude (araştırma + geliştirme co-founder'ı)