Files
kolaytercih/docs/ekip-raporlari/2026-09-22/02-sevk-yollari-ux.md
bilalgursen 2b350d0c5d content(rehber): gece vardiyasının 14 yeni yazısı + 2 düzeltme, ekip raporları ve kurallar
14 yeni rehber yazısı (hepsi editör denetiminden geçti, 46 yazıda 829 iç link
tarandı, 0 kırık hedef; 180+ DB rakamı yazıların kendi filtreleriyle yeniden
koşuldu):

  taban-siralamalari-alti-yilda-nasil-degisti · kac-net-ile-hangi-bolum ·
  siralama-bandlari-hangi-kapilar-acilir · ayni-bolum-farkli-universite-siralama-farki ·
  hangi-bolumlerin-kontenjani-azaldi · yeni-acilan-bolumler-nasil-degerlendirilir ·
  bilgisayar-mi-yazilim-muhendisligi-mi · kktc-universiteleri-okunur-mu ·
  yapay-zekaya-tercih-sordum-guvenilir-mi · ek-madde-1-puanim-yetiyor-mu ·
  universitede-ilk-hafta-ders-kaydi-muafiyet-kayit-dondurma · yks-2027-takvimi ·
  rehber-ogretmenler-icin-veri-kaynaklari · bolumumu-sevmedim-hangi-kapilar-var

İki canlı yazı düzeltildi:
- veliler-icin-tercih-rehberi: veli diliyle kapanış; altındaki "sıralamanı gir"
  kutusu artık veliye ölü uç değil
- bos-kontenjanlar-ne-anlatiyor: "birkaç yüz kişilik fark" aslında ~9 bin
  (ÖSYM 265.356 ↔ bizim 256.532); payda açıklaması tersti — ek kontenjan
  paydaya girseydi oran düşerdi. guncelleme alanı eklendi (sitemap lastmod).

Kurallar (AGENTS.md):
- Yayın sonrası arama motoru bildirimi: URL denetimi yalnız canlıda 200 dönen
  adrese; kota sayacı; mülk/hesap notu; sitemap grep kuralı
- Yıkıcı git komutları yasak: reset/checkout --/restore/clean/stash
- Tarayıcı açma: tasarımcı ve UX gerekli gördüğünde açabilir (yetenek için
  .claude/agents/tasarimci.md'ye tarayıcı araçları eklendi)

docs/gece-vardiyasi/2026-09-22/ — 34 rapor: CEO kararları ve kapanış turu,
marka/ödeme analizi, sıfır ödeme teşhisi, SEO konu planı, veri kalitesi,
editör denetimi, CTO şartnamesi, yazılımcı ve güvenlik raporları, SABAH-OZETI.

docs/ekip/YAYIN-KUYRUGU.md — Search Console bildirim kuyruğu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 23:25:34 +03:00

215 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 02 — Sevk yolları: ziyaretçiyi yapay zekâ listesine götüren yol haritası ve eleştirisi
Hazırlayan: Tasarımcı · 22 Eyl 2026 gündüz · Yöntem: **koddan denetim** (tarayıcı açılmadı, ekran ölçülmedi).
Sayısal kaynak: `docs/ekip-raporlari/2026-09-21/03-donusum.md` (Rybbit, 30g, iç trafik hariç).
Piksel/ekran tahminleri "koddan çıkarım" olarak işaretlendi; doğrulaması Bilal'de.
## Sade özet (5 satır)
1. **"Yapay zekâ" kelimesi, ziyaretçinin ilk gördüğü ekranların hiçbirinde geçmiyor.** Organik trafiğin indiği katalog sayfalarında funnel'ın tamamı (`cta-sira-form.tsx` kompakt satır → çekmece → sihirbaz) ürünü "Programları gör" / "Ücretsiz tablonu gör" diye satıyor; 24'lük yapay zekâ listesinden ilk kez `/sonuc`'un ~3. ekranında söz ediliyor. Ziyaretçi kapılardan geçerken ardında ne olduğunu **bilmiyor**.
2. **En büyük sıra kaynağı hiçbir yere gitmiyor.** `sira_girildi{kaynak:kapi}` 30 günde 14 olayla en büyük kaynak (03-donusum §3); bu yol (`+` toast'ı → profil kapısı) sihirbazın 3 adımını da doldurtuyor, sonra `profilTamamlandi` `null` döndürüyor (`use-tercih-profili.ts:346`) ve kullanıcı "Tercihlerin kaydedildi." toast'ıyla kataloğda kalıyor. **Liste için gereken her şey toplandı, liste teklif edilmedi.**
3. **Ürünün tek gerçek değer önizlemesi ölü bölgede.** `TadimlikSatiri` (gerçek LLM gerekçesi + risk + trend) yalnızca `/sonuc`'ta, 60 satırlık tablonun altında render ediliyor (`sonuc/page.tsx:117`); `tadimlik_goruntulendi` 30 günde **0**. Ana sayfada, katalogda, rehberde listenin çıktısı hiç gösterilmiyor — 3 kutu metin ve bir karşılaştırma tablosu var.
4. **`/sonuc` ödül sayfası olarak kurulmamış.** Sihirbazı bitiren kullanıcının gördüğü ilk şey, hiç kullanmadığı manuel listenin **boş gri placeholder'ı** (`manuel-harita.tsx:71-79`); yapay zekâ paneli ~3–4 ekran aşağıda (koddan çıkarım). Ölçüm bunu doğruluyor: panel 17 anonimin 6'sına göründü, 0 tık.
5. **Kapı sayısı fazla değil, kapıların sırası ve sessizliği sorun.** Girişsiz kullanıcı için listeye giden en kısa yol 4 kapı / 7 ekran / ~9 tık; kapılardan ikisi (sihirbaz, giriş) meşru, ama ikisi de **ne kazandıracağı söylenmeden** açılıyor.
---
## 1. Yol envanteri — listeye ulaşan her yol
Ortak kısaltma: **S** = sihirbaz (3 adım: alan → il → devlet/vakıf, `sihirbaz-adimlar.tsx:276, 296, 434`).
Kapılar: **K1** sıra girme · **K2** sihirbaz · **K3** Google girişi · **K4** kredi (üretim 3 kredi, yeni hesapta 5 deneme kredisi).
### Yol A — Ana sayfa (30g: 67 oturum → 11 sıra, %16,4; en iyi dönüşen yol)
| # | Ekran | Ne yapılıyor | Dosya |
|---|---|---|---|
| 1 | `/` hero | puan türü çipi + sıralama + "Yapay Zeka listemi kur" | `app/page.tsx:244` → `hero-form.tsx:188-196` |
| 2–4 | Dialog (S) | 3 adım, son buton girişsizde **"Ücretsiz tablonu gör"** | `hero-form.tsx:209-228`, etiket `:222` |
| 5 | `/sonuc?hazir=1` | harita placeholder → tablo → tadımlık → hazır panel | `hero-form.tsx:104`, `sonuc/page.tsx:102-126` |
| 6 | `/giris?callback=/listem?uret=1` | Google | `sihirbaz-cagri-karti.tsx:245` |
| 7 | `/listem?uret=1` | üretim (~20 sn tipik, 60 sn sunucu sınırı) | `liste-uretici.tsx:42-45` |
**7 ekran · ~9 tık · 4 kapı.** Girişli kullanıcıda 5. ekran boşa gider: `/sonuc` tam tabloyu render eder, sonra `router.replace("/listem?uret=1")` ile sekilir (`sihirbaz-cagri-karti.tsx:209-219`).
### Yol B — `/universite/[slug]` ve `/bolum/[slug]` üst kompakt satır (30g: 464 oturum → 12 sıra, %2,6)
1. Kompakt satır: başlık + özet paragrafının altında, tablo/istatistik ızgarasının üstünde (`universite-icerik.tsx:180, 290, 352`; `bolum-icerik.tsx:267`). CTA: **"Programları gör"** (`cta-sira-form.tsx:254`).
2. Gönderince çekmece **doğrudan sihirbaz adımıyla** açılır (`cta-sira-form.tsx:145-148`); kompakt varyantta çekmecenin tanıtım/kanıt ekranı (`SectionEyebrow "Saniyede gör"` + "24 tercihlik plan / Risk analizi / YÖK Atlas verisi" üçlüsü) **hiç render edilmez** — koşul `!kompakt && adim === "sira"` (`:296`).
3. S 3 adım → "Ücretsiz tablonu gör" (`:334`) → `/sonuc?hazir=1` (`:172`) → Yol A'nın 5–7. adımları.
**8 ekran · ~9 tık · 4 kapı.** Bu yolda ziyaretçi "yapay zekâ", "24 tercih", "risk analizi" ifadelerinin **hiçbirini** görmez (grep: `src/features/katalog/components/*.tsx` + kompakt dal → 0 eşleşme).
### Yol C — Katalog alt kartı (tablonun ve sayfalamanın altı)
`universite-icerik.tsx:381`, `bolum-icerik.tsx:297`. Kart varyantı: başlık + `KATALOG_CTA_ACIKLAMA` (`sayfalama.tsx:40`) + "Sıralamanı gir, programları gör" → çekmecenin **sıra adımı** açılır (kanıt üçlüsü burada görünür) → S → `/sonuc`. **9 ekran**, üstteki satırdan 1 tık fazla. 30g'de 20 satır/dilim × 3 dilim tablonun altında; mobilde ~1.500 px aşağıda (koddan çıkarım).
### Yol D — `+` (tabloya program ekleme) kapısı — **30g'deki en büyük sıra kaynağı: 14 olay**
1. Tablodaki `+` (`program-ekle-butonu.tsx:105`, `size-11` — dokunma hedefi doğru).
2. Profilsiz eklemede toast: "Seçtiklerine eklendi · Sıralamanı girersen bu programın risk seviyesini de gösteririz." + aksiyon "Sıralamamı gir" (`:69-83`).
3. Aksiyon `profilToplamaAc(null, true, "arti_toast")` → kapı **sıra adımıyla** açılır → S 3 adım.
4. **`hedef = null` → `profilTamamlandi` `null` döndürür → yönlendirme yok** (`use-tercih-profili.ts:327-346`). Kullanıcı "Tercihlerin kaydedildi." toast'ıyla (`tercih-profili-kapisi.tsx:238`) kataloğa geri düşer.
**Sonuç: 4 ekran, 2 kapı geçildi, liste teklif edilmedi.** Aynı ölü uç manuel liste çekmecesindeki "Sıralamamı gir" butonunda da var (`liste-cekmecesi.tsx:296-298`, aynı çağrı).
### Yol E — Navbar "Sıralama gir" (mobilde kalıcı, sticky 2. satır)
`katalog-arama.tsx:366` (mobil) / `:302` (lg+) → `sonucaGitIste({dogrudanSira:true})` → kapı (tanıtım adımı atlanır, doğru) → S → `hedef="sonuc"` → `sonucHref()` **parametresiz**. `/sonuc`'ta `hazir=1` olmadığı için hazır panel yerine genel panel ("24 tercihi tek tek elemek yerine, yapay zekâ kursun", `sihirbaz-cagri-karti.tsx:312-336`) çıkar — o da sayfanın en altında. **6 ekran · 3 kapı.**
### Yol F — Arama modalındaki funnel kartı
`arama-funnel-karti.tsx:132-139` → "Yapay Zeka listemi kur" → `profilToplamaAc("sihirbaz")` → kapı → S → `/sonuc?hazir=1` (girişsiz) / `?sihirbaz=1` (girişli). **Niyeti doğru taşıyan tek kısayol** — ama arama modalının arkasında, mobilde `size-9` ikon butonla açılıyor (`katalog-arama.tsx:379-386`).
### Yol G — Rehber (30g: 73 oturum → 5 sıra; %86 tek sayfa)
`rehber-makale.tsx:115` — CTA kartı **makalenin tamamının altında** (`mt-12`), `rehber/page.tsx:45` liste sayfasının altında. Yazı içinde funnel girişi yok.
### Yol H — `/listem` doğrudan (boş durum)
`/listem` giriş duvarlı (`listem-icerik.tsx:43` `verifySession`). Girişli + raporsuz kullanıcı: `Sparkles` + "Henüz Yapay Zeka listen yok" + profil yoksa CTA **ana sayfaya** atar (`listem-bos-cta.tsx:30`, `href="/"`) → kullanıcı Yol A'nın 1. adımına döner. Profil varsa doğrudan `?uret=1` — bu dal doğru.
### Yol I — `/universite/*/sayfa/N` (30g: 56 oturum → **0** sıra)
Üst satır burada da var (`universite-icerik.tsx:352`), ama sayfa metni "tablonun N. sayfası" bağlam cümlesi; listeye dair hiçbir vaat yok.
---
## 2. Her kapının hesabı
| Kapı | Şu anda gerekli mi? | Ardında ne olduğu ekranda söyleniyor mu? | Karar |
|---|---|---|---|
| **K1 · Sıra girme** | Evet — tablo da, havuz da sıralamayla hesaplanıyor (`liste-queries.ts`). Doğru kapı, doğru yerde. | Kısmen. Kompakt satır "Sıralaman {X} tabanlarının neresinde? Ücretsiz, üyelik gerekmez." diyor (`cta-sira-form.tsx:354-362`) — **tabloyu** vaat ediyor, listeyi değil. | Kalsın, **vaadi büyüt**. |
| **K2 · Sihirbaz (3 adım)** | Evet — havuzu kuran girdi (bkz. `/meraklisina` şeması, `huni-semasi.tsx:16-19`). Adım başına kayıp 1–3 kişi; sihirbazın kendisi sağlıklı. | **Hayır.** Girişsizde son buton "Ücretsiz tablonu gör" (`cta-sira-form.tsx:334`, `hero-form.tsx:222`). Kullanıcı 3 adım doldurup "tablo" vaat ediliyor; yapay zekâ listesinden söz eden tek yer girişlilere gösterilen "(3 kredi)" etiketi. | Kalsın, **etiket vaadi söylesin**. |
| **K3 · Google girişi** | Evet (liste kullanıcıya bağlı, kredi sayacı hesapta). 6/6 deneme başarılı — mekanizma sorunu yok. | Evet, iyi: `/giris` funnel dalında "Seçimlerin hazır — giriş yap, 5 deneme kredinle listen hemen üretilsin" (`giris-karti.tsx:52-58`). Kapının **kendisi** iyi; sorun oraya davet eden panelin görünmemesi. | Kalsın. |
| **K4 · Kredi (3/5)** | Evet ve zararsız: yeni hesapta 5 kredi var, ilk liste ücretsiz. | Kısmen — "5 deneme kredin hazır" yalnızca `/sonuc` panelinde ve `/giris`'te. Katalog yolunda hiç geçmiyor. | Kalsın. |
| **K0 · Profil kapısının tanıtım adımı** | **Hayır.** `+` dışındaki tüm girişler `dogrudanSira` ile bu adımı zaten atlıyor. Kalan dalda ekran şu: "Tercihine ışık tutabilmemiz için önce ne istediğini öğrenelim" + 4 satır paragraf + Vazgeç / Tercihlerimi belirle (`tercih-profili-kapisi.tsx:297-338`). Hiçbir girdi toplamıyor. | — | **Kaldırılabilir** (bkz. Öneri 1 notu). |
**Özet:** Gereksiz kapı yok; **gerekçesiz kapı** var. Kullanıcı K1 ve K2'yi "tablo görmek için" geçiyor, K3'e geldiğinde ilk kez yapay zekâ listesini duyuyor — ve o an sayfanın 3. ekranında.
---
## 3. Katalog köprüsü — 992a01a sonrası hâl yeterli mi?
**Yetersiz, üç sebeple.**
1. **Konum.** Satır, h1'in değil, 8–9 satırlık SEO özet paragrafının altında (`universite-icerik.tsx:287-290`). 375 px'te üst uç ≈ 570 px, gönder butonu ≈ 840 px (koddan çıkarım: sticky başlık ~96 px + breadcrumb ~36 + logo/h1 bloğu ~144 + paragraf 8×28 ≈ 224 + `mt-6`). Yani **buton ikinci ekranda**. `/bolum` tarafında paragraf kısa (2 satır), satır ilk ekranda (`bolum-icerik.tsx:265-268`) — iki sayfa aynı davranmıyor.
2. **"Kompakt" yalnızca `lg`'de kompakt.** `flex-col gap-3 lg:flex-row` (`cta-sira-form.tsx:195`) ve input/buton `flex-col sm:flex-row` (`:227`). 375 px'te: 5 puan türü çipi 2 satıra sarar (~66 px) + input 48 + buton 48 + başlık 2–3 satır → **~270 px**, yani mobilde tek satır değil, bir blok. Mobilin %74'ü tek sayfada çıkıyor; bu blok tek ekrana sığmıyor.
3. **Vaat eksik.** Kompakt dal kanıt üçlüsünü ve "Saniyede gör" eyebrow'unu render etmiyor (`:296` koşulu). Ziyaretçiye "tabloda nerede olduğunu göster" deniyor; ürünün kendisi (24'lük liste) anlatılmıyor. `docs/tasarim/cta-cekmece-tasarimi.md` §1'deki "kart vaat eder → çekmece tahsil eder" algısı kompakt varyantta **vaat kısmı düşerek** uygulanmış.
---
## 4. `/sonuc` ve `/listem` — sihirbazı bitiren ne görüyor?
**`/sonuc` sırası (`sonuc/page.tsx:102-126`):** ManuelHarita → SonucProgramTablosu → TadimlikBolumu → SonucSihirbazi → dipnot.
- **İlk ekran boş bir kutu.** Manuel liste boşken (yeni gelen herkeste boş) `aspect-[1050/447]` gri alan + "Tablodan + ile ekledikçe üniversiteler haritada belirir." (`manuel-harita.tsx:71-79`). 375 px'te ~143 px. Ödül sayfasının en üstünde, kullanıcının hiç kullanmadığı bir özelliğin boş durumu duruyor.
- **Tablo uzun.** Dilim başına 20 satır (`liste-queries.ts:43`), satır ~64 px → ~1.280 px (koddan çıkarım).
- **Tadımlık ~1.500 px'te**, yapay zekâ paneli **~2.200 px'te** (≈ 3,5 ekran). Ölçümle tutarlı: panel 17 anonimin 6'sına göründü, `tadimlik_goruntulendi` = 0.
- **"Kaç saniyede geliyor" hiçbir yerde yazmıyor.** Süre bilgisi yalnızca üretim başladıktan sonra, `/listem`'de görünüyor: "Bu işlem yarım dakika kadar sürebilir, sayfayı kapatma." (`liste-uretici.tsx:271`). Karar anında (panel, sihirbaz son butonu) süre vaadi yok.
- **Panel metni uzun.** 3 cümlelik tek paragraf + parantez içi kredi açıklaması (`sihirbaz-cagri-karti.tsx:286-291`); 375 px'te ~8 satır.
**`/listem` boş ekranı bir ilk kullanıcıya:** giriş duvarının arkasında olduğu için ilk kullanıcı buraya ancak giriş yaptıktan sonra düşer. Gördüğü: `Sparkles` + "Henüz Yapay Zeka listen yok" + tek paragraf + tek buton. Profil yoksa buton **ana sayfaya** atıyor (`listem-bos-cta.tsx:30`) — kullanıcı sıfır noktasına döner. Ekranda ne alacağını gösteren hiçbir görsel yok (örnek satır, iskelet, ekran görüntüsü).
---
## 5. Değer önizlemesi — üretmeden önce ne gösteriliyor?
| Yüzey | Önizleme var mı? |
|---|---|
| Ana sayfa | **Yok.** Bölümler: Sorun / Nasıl çalışır (3 metin kartı) / Karşılaştırma tablosu / Fiyat / SSS / final CTA (`app/page.tsx:267-660`). Listenin çıktısından tek bir satır bile gösterilmiyor. |
| Katalog (`/bolum`, `/universite`) | **Yok.** |
| Rehber | **Yok.** |
| `/meraklisina` | Kurallar + mermaid şeması + kendi sıralamasına göre güncellenen sayılar (`meraklisina-demo.tsx:105-130`) — süreç anlatımı, çıktı değil. |
| `/sonuc` | **Var ama görülmüyor:** `TadimlikSatiri` gerçek rapor formatında tek satır (gerekçe + risk rozeti + trend, `tadimlik-satiri.tsx:113-191`). `tadimlik_goruntulendi` 30g = **0**. |
**Önemli teknik imkân:** `tadimlikSec(sira, tur, kategoriSlug?, tip?)` (`lib/tadimlik-havuzu.ts:107`) kovaya göre çalışıyor ve her kovanın `temsiliSira` değeri sabit (`:24-32`). Yani **ziyaretçinin sıralamasını bilmeden de** ("örnek bir aday için" etiketiyle) gerçek bir tadımlık satırı render edilebilir; havuz canlıda dolu (522 satır). Yeni içerik üretimi, yeni LLM çağrısı, yeni bileşen gerekmiyor — mevcut `TadimlikSatiri` başka yüzeylere taşınabilir.
---
## 6. Tasarım önerileri (6)
> Ortak kural: hiçbir öneri yeni rozet/pill/çarpı/buton varyantı icat etmez. Rozet gerekirse `SectionEyebrow` (`pixel-decor.tsx`), CTA'da metin önce + sonda `<ArrowRight className="size-4" aria-hidden />`, çekmece/modal kapatma çarpısı `dialog.tsx` kanonik seti. `/meraklisina` şeması (`huni-semasi.tsx:16-30`) sihirbaz adım sayısını/sırasını ve havuz kurallarını belgeler; aşağıdaki önerilerin **hiçbiri** adım sayısını, sırasını, havuz kurallarını veya 24'lük dağılımı değiştirmiyor → şema senkronu gerekmiyor (Öneri 1'de yalnızca sihirbaz **sonrası** yönlendirme değişiyor, şemada o yok).
### Ö1 — Kapı azaltma: sihirbazı bitiren herkes listeye çıksın (ölü uçları kapat)
**(a) Ne değişiyor:** `+` toast'ındaki "Sıralamamı gir" (`program-ekle-butonu.tsx:82`) ve liste çekmecesindeki eşi (`liste-cekmecesi.tsx:298`) `profilToplamaAc(null, …)` yerine `profilToplamaAc("sihirbaz", …)` çağırsın; navbar girişi (`katalog-arama.tsx:115`, `sonucaGitIste` → `hedef:"sonuc"`) de `"sihirbaz"` hedefine geçsin. Ayrıca `profilTamamlandi`'nin `hedef == null` dalı (`use-tercih-profili.ts:346`) `sonucHref({ hazir: "1" })` döndürsün — sihirbazı bitirmiş hiç kimse "kaydedildi" toast'ıyla yerinde bırakılmasın. `tercih-profili-kapisi.tsx:238`'deki başarı toast'ı bu dalda gereksizleşir (akış devam ediyor, bitmiyor).
**(b) Neden:** 30g'de en büyük sıra kaynağı `kapi` (14 olay) ve `duzenle` (5) bu ölü uçta bitiyor; ikisi birlikte tüm sıra girişlerinin ~%55'i. Kullanıcı K1 ve K2'yi geçmiş, tek eksik ona listeyi teklif etmek. Bu, **liste yolunu 3 ekran kısaltır** (kataloğa dönüp tekrar funnel'a girmek yerine doğrudan ödül ekranı).
**(c) Büyüklük:** S (davranış; `src/` içinde 4–5 satır).
**(d) Kural uyumu:** görsel değişiklik yok; şema etkilenmez. Ölçüm: `sira_girildi{kaynak:kapi}` → `sonuc_goruntulendi` zinciri ilk kez kurulur.
*Not (ayrı, opsiyonel):* profil kapısının tanıtım adımı (`tercih-profili-kapisi.tsx:297-338`) hiçbir girdi toplamıyor ve `dogrudanSira` ile zaten çoğu yolda atlanıyor. `ilkAdim`'ı her zaman `"sira"` yapmak bir ekran daha siler. **S.**
### Ö2 — Mobil tek ekran: katalog üst satırı başlığın altına, gerçekten tek satıra
**(a) Ne değişiyor:** `/universite/[slug]`'da `ustSiraSatiri` SEO özet paragrafının **üstüne**, `h1`'in hemen altına alınsın (`universite-icerik.tsx:287-290` → `:285` öncesi; `/bolum` zaten böyle). Kompakt varyantın mobil düzeni: (i) puan türü çipleri varsayılan "Sayısal" seçili tek satırda yatay kaydırmalı şeride (`flex-nowrap overflow-x-auto` + `-mx-4 px-4`) alınsın ya da başlangıçta gizlenip "Puan türü: Sayısal · değiştir" satırıyla açılsın; (ii) input + buton mobilde de yan yana (`flex-row`, buton `shrink-0`, yalnız ikon değil kısa metin: "Gör"→**hayır**, metin "Programları gör" kalsın, gerekirse buton alt satırda tam genişlik kalsın ama çipler tek satıra insin). Hedef: bloğun toplam yüksekliği ~270 px'ten ~150 px'e insin ve üst uç ~380 px'e çıksın → **375×667'de input + buton ilk ekranda**.
**(b) Neden:** Katalog 464 oturum → 12 sıra (%2,6); mobil bounce %74. 992a01a satırı yukarı taşıdı ama `/universite`'de paragrafın altında ve mobilde tek satır değil (bkz. §3).
**(c) Büyüklük:** M.
**(d) Kural uyumu:** mevcut çip class seti (hero formuyla birebir) korunur; CTA deseni değişmez; yeni pill yok. Yatay kaydırmalı şeride geçilirse kaydırma göstergesi metinle desteklenmeli, çipler `role="radio"` kalmalı.
### Ö3 — Değer önizlemesi kapıdan önce: tadımlık satırını kataloğa ve ana sayfaya taşı
**(a) Ne değişiyor:** Mevcut `TadimlikSatiri` bileşeni (yeni bileşen değil) iki yeni yerde render edilsin:
· **Katalog:** üst sıra satırının hemen altında, `SectionEyebrow`'u "Yapay zekâdan örnek satır" olarak, üstünde tek cümle: "Sıralamanı girince listendeki 24 satır böyle görünür." Sıra bilinmiyorsa `kovaBul().temsiliSira` ile "örnek bir aday için" etiketli hâli (`tadimlik-havuzu.ts:24-32, 107`); bölüm sayfasında bölümün kategorisi `kategoriSlug` olarak verilebilir.
· **Ana sayfa:** "Nasıl çalışır?" bölümünün 3 kartının altına, `steps` metinlerinin karşılığı olarak tek gerçek satır (`app/page.tsx:340-358` sonrası).
Çekmecenin sıra adımındaki kanıt üçlüsü kompakt dalda da gösterilsin (`cta-sira-form.tsx:296` koşulunun kompakt dalı).
**(b) Neden:** Ürünün çıktısı hiçbir yerde üretilmeden önce gösterilmiyor (§5); tek örnek `/sonuc`'un dibinde ve 30 günde 0 kez görüldü. "Bu kapının ardında ne var?" sorusunun cevabı budur.
**(c) Büyüklük:** M (yerleştirme + sırasız/kova varyantı; içerik hattı hazır).
**(d) Kural uyumu:** `SectionEyebrow` kanonik rozet; risk rozeti zaten metin etiketli (`RISK_ETIKET`, `lib/risk.ts:9`) — renk tek başına anlam taşımıyor. Tadımlık CTA'sı mevcut ok desenini kullanıyor (`tadimlik-satiri.tsx:186-188`).
### Ö4 — `/sonuc`'u ödül sayfası yap: sıralamayı tersine çevir
**(a) Ne değişiyor:** `sonuc/page.tsx:102-126` sırası şu olsun: **(1)** kısa ödül başlığı + yapay zekâ paneli (hazır panel / genel panel) → **(2)** tadımlık (girişsizde) → **(3)** program tablosu → **(4)** manuel harita, ve harita **boşken hiç render edilmesin** (`manuel-harita.tsx:69-80` boş dalı `null` dönsün; CLS riski yok çünkü tablonun üstünde değil altında). Panel metni 3 cümleden 1 cümleye insin: başlık "Seçimlerin hazır — listen bir adım uzakta", gövde "Google ile 5 saniyede giriş yap; 5 deneme kredinle 24 tercihlik listen ~30 saniyede kurulur." (süre ilk kez karar anında söylenir, kaynak `liste-uretici.tsx:42-44`).
**(b) Neden:** Anonim kullanıcı `/sonuc`'ta medyan 33 sn kalıyor ve panele inmiyor; panel 6/17 gösterim, 0 tık. Ödül sayfasının ilk ekranı şu an kullanılmamış bir özelliğin boş durumu.
**(c) Büyüklük:** M.
**(d) Kural uyumu:** panel bileşeni ve CTA deseni aynen kalır; yalnız sıra ve metin değişir. "Ücretsiz tablo her zaman açık" güvencesi panelde tek cümleyle korunmalı (vaatsizlik).
### Ö5 — `/sonuc` mobil sabit alt çubuk (anonim + seçimleri hazır)
**(a) Ne değişiyor:** Yeni bileşen değil: `sihirbaz-cagri-karti.tsx`'in `girisBekliyor` dalına, yalnız `max-sm`'de görünen sticky bir satır. İçerik: "Listeni kaybetme — Google ile kaydet" + `<ArrowRight className="size-4" aria-hidden />`, hedef `girisUrl`, olay `giris_cta_tiklandi{kaynak:"sonuc_cubuk"}`. Teknik gereklilikler: `position: sticky; bottom: 0` (fixed değil — klavye açılınca zıplamasın), yükseklik ≥ 56 px, `pb-[max(0.75rem,env(safe-area-inset-bottom))]`, sayfa altına eşdeğer `scroll-padding`/boşluk ki dipnot çubuğun altında kalmasın, `prefers-reduced-motion`'da giriş animasyonu yok.
**(b) Neden:** Panel mobilde 3,5 ekran aşağıda; anonim mobil oturumların medyan kalış süresi 33 sn. Çubuk görünürlüğü %100'e çıkarır.
**(c) Büyüklük:** S–M.
**(d) Kural uyumu:** CTA deseni (metin önce, sonda ok) birebir; yeni renk/pill yok; layout'taki `pb-28` (`app/layout.tsx:95`) ile çakışma kontrol edilmeli.
### Ö6 — Dil birliği: kapının ardındaki ödülü her etikette söyle
**(a) Ne değişiyor:** Üç etiket:
· Sihirbaz son butonu, girişsiz: "Ücretsiz tablonu gör" → **"Listeme geç — ücretsiz tablon + yapay zekâ listen"** ya da kısa hâli **"Devam et — listeni gör"** (`cta-sira-form.tsx:334`, `hero-form.tsx:222`, `sihirbaz-cagri-karti.tsx:348`).
· Kompakt satır başlığı: "Sıralaman {X} tabanlarının neresinde?" + **"Ücretsiz, üyelik gerekmez"** cümlesine ikinci cümle: "Sıralamanı girince yapay zekâ 24 tercihlik listeni de kurabilir." (`cta-sira-form.tsx:354-362`).
· `/listem` boş durumda profil yokken CTA ana sayfaya atmasın; aynı sayfada profil kapısını açsın (`profilToplamaAc("sihirbaz")`) — `listem-bos-cta.tsx:30`.
**(b) Neden:** Kullanıcı "tablo" vaadiyle 3 kapı geçiyor, ürünü `/sonuc`'un dibinde öğreniyor (§2). Boş `/listem` CTA'sı kullanıcıyı huninin başına geri atıyor.
**(c) Büyüklük:** S.
**(d) Kural uyumu:** yalnız metin + bir `href`; CTA ok deseni korunur. Yeni metinler vaat içermez ("kurabilir", "gör" — "yerleşirsin" değil).
---
## 7. Yan bulgular — tek kaynak / erişilebilirlik ihlalleri (öneri dışı, ucuz)
| Dosya:satır | Kural / sorun | Kullanıcıya etkisi | Düzeltme | Büyüklük |
|---|---|---|---|---|
| `sihirbaz-cagri-karti.tsx:269` | AGENTS.md CTA deseni: `<Link href="/listem">Listeni gör</Link>` — sondaki `ArrowRight` **yok** | Raporu olan kullanıcının gördüğü tek CTA sitedeki diğerlerinden farklı duruyor | `Listeni gör<ArrowRight className="size-4" aria-hidden />` | S |
| `sira-gerekli.tsx:61-62` | CTA deseni: `Trophy` ikonu **metnin başında** ("başta ikon yok") | Aynı eylem iki farklı biçimde | İkonu kaldır, sonda `ArrowRight` | S |
| `liste-uretici.tsx:220-221` | CTA deseni: `RefreshCcw` metnin başında ("Tekrar dene") | Hata ekranındaki tek buton desen dışı | İkon sona ya da kaldırılsın | S |
| `liste-cekmecesi.tsx:297, 307` | `<ArrowRight data-icon="inline-end" />` — `aria-hidden` yok, kanonik `className="size-4" aria-hidden` değil (`listem-govde.tsx:290,371` aynı yazım ama `aria-hidden`'lı) | Aynı ok üç farklı yazımda | Tek yazıma indir | S |
| `tercih-profili-kapisi.tsx:393-398` | Aynı eleman iki stilde: puan türü burada `Select`, hero/CTA formunda `role="radiogroup"` çipler (`hero-form.tsx:143-164`, `cta-sira-form.tsx:199-220`) | Kullanıcı aynı soruyu iki farklı arayüzle cevaplıyor | Çip radiogroup'a birle (tek kaynak) | M |
| `katalog-arama.tsx:343, 366, 379` | Mobilde funnel'ın kalıcı girişi `h-9` / `size-9` = **36 px** dokunma hedefi (< 44 px) | Trafiğin %90'ı mobil; ana funnel girişi ve arama küçük | `h-11`/`size-11`'e çıkar (ya da dokunma alanını `::before` ile büyüt) | S |
| `arama-funnel-karti.tsx:28, 42` | Vaat/korku dili: "Doğru strateji, doğru yerleşme.", "Boş kalan tercih, kaçan fırsattır." — ürünün "yerleşme garantisi vermiyoruz" duruşuyla (`app/page.tsx:393`) çelişiyor | Güven mesajını zayıflatıyor | İki satırı çıkar ya da yeniden yaz | S |
| `arama-funnel-karti.tsx:105, 125` | Palet dışı yüzey: `bg-[#0b1f3a]` + `text-cyan-300`; sitenin funnel yüzeyi `bg-primary` + `PixelField` (`sihirbaz-cagri-karti.tsx:275`, `liste-cekmecesi.tsx:269`) | Aynı işlevli panel iki ayrı marka dilinde | **[BİLAL]** — renk paleti kararı | S |
| `arama-funnel-karti.tsx:63` vs `cta-sira-form.tsx:49` | Aynı kanıt üçlüsü iki farklı etiketle ("24 tercih" / "24 tercihlik plan") ve iki renkte | Küçük ama ölçülebilir tutarsızlık | Tek sabit hâline getir | S |
---
## 8. Bilal'in gözle kontrol etmesi gereken ekranlar (375 px, mobil)
1. `/universite/<uzun-adli-bir-üniversite>` — kompakt sıra satırının üst ucu ilk ekranda mı, gönder butonu görünüyor mu; çipler kaç satıra sarıyor.
2. `/bolum/hemsirelik` — aynı satır (burada paragraf kısa; iki sayfa arasındaki fark ne kadar büyük).
3. `/sonuc` (sıralama girmiş, girişsiz) — ilk ekranda boş gri harita kutusu görünüyor mu; yapay zekâ paneline kaç kaydırma gerekiyor; tadımlık görünüyor mu.
4. Katalog tablosunda `+` → toast → "Sıralamamı gir" → sihirbazı sonuna kadar doldur — **ekran nerede kalıyor** (Ö1'in kanıtı).
5. Navbar'daki "Sıralama gir" pill'i — parmakla ilk denemede isabet ediyor mu (36 px).
6. `/listem` (girişli, listesiz) — boş ekran ve CTA'nın gittiği yer.
## 9. Bilal'den istenen (en fazla 3)
1. Yukarıdaki 6 ekranı telefonda sırayla aç, 3 ve 4 numaralıların ekran görüntüsünü ekibe bırak — **10 dk**.
2. Ö1'i (sihirbazı bitiren herkes `/sonuc`'a çıksın) onayla ya da reddet; en büyük sıra kaynağını huniye bağlayan tek değişiklik bu — **2 dk**.
3. Arama funnel kartının koyu lacivert/cyan yüzeyi kalsın mı, `bg-primary` funnel diline mi dönsün — marka kararı — **2 dk**.