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:
106
docs/tasarim/cta-cekmece-tasarimi.md
Normal file
106
docs/tasarim/cta-cekmece-tasarimi.md
Normal 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ı)
|
||||
ağı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).
|
||||
101
docs/tasarim/ux-duzeltmeler.md
Normal file
101
docs/tasarim/ux-duzeltmeler.md
Normal 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
239
docs/urun/gamification.md
Normal 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
|
||||
açı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
94
docs/urun/vizyon.md
Normal 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.000–10.000 TL'ye yaptığı işi
|
||||
299–499 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.000–10.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):** 3–5 deneme kredisi
|
||||
+ rapor önizlemesi (ilk 5 tercih satırı açı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 99–149 TL'ye +30 kredi (sezon sonu panik-alımı)
|
||||
- **Ödeme:** iyzico, tek çekim (başvuru hemen yapılmalı — onboarding 2–7 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`, 2021–2024 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 $1–5K MRR eşdeğeri).
|
||||
- **ÖSYM takvimi:** tercih dönemi kısa; bu sezona yetişemezsek KPSS tercihleri (Ağustos–Eylü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 1–2 saat
|
||||
- Claude (araştırma + geliştirme co-founder'ı)
|
||||
Reference in New Issue
Block a user