# Kişiselleştirme araştırması: öğrenciden ne alırız, üniversiteyle nasıl eşleştiririz > 25 Eylül 2026. Bilal'in onayıyla kaydedildi. Karar: v1 (ana dal) küçük veri işleri, v2 dalı araç kullanımı (tool use) + profil. Aşağıdaki §0, §8 ve §9 onay sohbetinde eklendi. ## 0. Karar özeti (25 Eyl gece) - **Güncellik kuralı:** yılı gösterilemeyen ya da üç yıldan eski veri ürüne girmez. ÜNİ-VERİ (2014-2019 mezunları) bu kuralla elenir; "İş bulma kolaylığı" ve "Yüksek maaş" çipleri güncel kaynak bulunana kadar kalkar. TÜMA 2025, URAP ve YÖK Atlas API'si kalır. - **Düz LLM'e karşı farkımız:** program düzeyinde güncel YÖK Atlas verisi + öğrenciye ait yapılandırılmış, kalıcı profil. İkisi de ChatGPT'de yok; Dalga 1 ve 2 bu yüzden birlikte "biz olma" sebebi. - **v1 (main):** kız/erkek oranı üniversite sayfasında bilgi satırı olarak (yapıldı, 05402f9). - **v2 (dal `v2`):** Dalga 1 (API alanlarını saklama) + Dalga 2 (danışman araçları + `profil_guncelle`) + gizlilik metni güncellemesi. - **Sihirbaza soru eklenmez** (şimdilik): yeni tercihler önce danışmanda toplanır; sık sorulan sihirbaza sonra girer. - **Geçiş soran öğrenciye danışman açılmaz:** Ek Madde-1 hesabı ayrı sayfa olur (veri DB'de, SEO değeri var). DGS verisi yok, sonraya. ## Tek cümlelik teşhis Liste bugün kişisel görünmüyor, çünkü öğrenciden aldığımız 7 "öncelik" çipinin 6'sının arkasında veri yok: "İş bulma kolaylığı", "Yüksek maaş", "Yurtdışı imkânı", "Prestijli üniversite", "Akademik kariyer", "Sevdiğim işi yapmak" yalnızca yapay zekâya metin olarak gidiyor ve model tahmin ediyor. Yalnız "Kolay yerleşme" kodda bir şey değiştiriyor (`src/lib/tercih-degerlendirme.ts:59`). Doğrulama: `src/features/sihirbaz/sihirbaz-sabitler.ts:5` "öncelikler statik kalır (veriye bağlı değil)" diye not düşmüş; `scripts/refresh.ts:181` API'den gelen burs alanını `null` ile atıyor. ## 1. Bugün öğrenciden ne alıyoruz, neyle eşleştiriyoruz | Öğrenciden | Nerede kullanılıyor | Veri karşılığı | |---|---|---| | Sıra + puan türü | Havuz filtresi, dilimler | `programs.sira*` | | İlgi alanı (kategori) | Havuz filtresi (JS) | `src/lib/kategoriler.ts` | | İl (en çok 5) | Havuz filtresi (SQL) | `programs.il` | | Devlet / vakıf / fark etmez | Havuz filtresi | `programs.unitur` | | Öncelikler (7 çip) | Yalnız prompt metni | **Yok** (1 tanesi hariç) | Kaynak: `src/features/sihirbaz/sihirbaz-sabitler.ts`, `src/lib/rapor-havuzu.ts` (havuza giden satır: ad, üniversite, tür, il, dilim, sıra geçmişi, kontenjan — başka özellik yok). Ayrıca: "Vakıf (burslu olursa)" seçeneği var ama burs türü ve ücret DB'de yok; seçim burslu/ücretli ayırt etmiyor. ## 2. Üniversite/program tarafında elimizde olan ve eksik veri **Asıl bulgu:** YÖK Atlas'ın açık API'si (`/api/tercih-kilavuz/search`, zaten `scripts/refresh.ts` ile çekiyoruz) bizim atıp saklamadığımız çok değerli alanlar veriyor. 25 Eylül'de 200 kayıtla kontrol edildi: | Alan (API) | Anlamı | Doluluk (200 kayıtta) | Bizde | |---|---|---|---| | `ucret` | Vakıf yıllık ücreti (TL) | 121 | Yok → v2 | | `bursOraniAdi` | Burslu / %50 / %25 / Ücretli | 128 | Yok → v2 | | `ogrenimDiliAdi` | Türkçe / İngilizce … | 199 | Yok → v2 | | `ogrenimTuruAdi` | Örgün / İkinci / Uzaktan | 200 | Yok → v2 | | `akreditasyon`, `uniAkreditasyon` | MÜDEK, TEPDAD, YÖKAK… | 83 / 169 | Yok → v2 | | `prof`, `doc`, `dou`, `arGor` | Programın kadrosu | ~160-190 | Yok → v2 | | `kosulList` | Yerleşme koşulları (sağlık şartı, mülakat, yalnız kız/erkek alan program…) | 197 | Yok → v2 | | `minBasariSirasi` | Tercih için baraj sırası | 70 | Yok → v2 | | `ilceAdi` | Kampüs ilçesi | 199 | Yok → v2 | | `kpss1`, `tusktp`, `abayp` | Mezun sınav ortalamaları (anlamı **doğrulanmalı**) | 50 / 6 / 5 | Yok, alınmadı | Diğer kaynaklar: | Veri | Kaynak | Düzey | Durum | |---|---|---|---| | **Kız/erkek oranı** | YÖK İstatistik Excel (`data/kaynak/…ogrenci-sayilari-2025-2026.xls`, E/K sütunları) | Üniversite × örgün ön lisans+lisans | **v1'de yapıldı** (`kadinYuzdesi`, üniversite sayfası) | | Kız/erkek, program düzeyinde | Eski YÖK Atlas paneli | Program | **Yok** — yeni YÖK Atlas'ta panel kodu duruyor ama menüde değil; üçüncü taraf sitelere güvenilmez | | Öğrenci sayısı, öğretim üyesi başına öğrenci | YÖK İstatistik | Üniversite | Var (`src/lib/yok-istatistik.ts`) | | Araştırma sırası | URAP | Üniversite | Var (`src/lib/urap-siralama.ts`) | | Evden uzaklık | Koordinatlar | Üniversite/il | Var (`src/lib/uni-koordinatlar.ts`) | | Taban oynaklığı, dolmama | `programs` | Program | Var (`src/lib/trend.ts`) | | İş bulma süresi, istihdam, başlangıç ücreti | ÜNİ-VERİ | Bölüm | **Elendi** (2014-2019, güncellik kuralı) | | Öğrenci memnuniyeti | TÜMA 2025 (ÜniAr) | Üniversite, 200 kurum | Yok; yılda bir elle | | Şehir büyüklüğü | TÜİK il nüfusu | İl | Yok; 81 satır elle | | Erasmus / yurtdışı | — | — | Açık kaynak bulunamadı | | KYK yurt kapasitesi | KYGM | Şehir | Yok | ## 3. Öğrenciden nasıl alırız — üç kanal **A. Sihirbaz (herkes, girişsiz).** Şimdilik soru eklenmez (§0). Eklenecekse en fazla 2-3 soru, tek dokunuş, "fark etmez" varsayılanlı: evden uzaklık, vakıfta ödeyebileceği, İngilizce eğitim. Öncelik çipleri veriye bağlananlarla yenilenir: "Prestij" → URAP + taban sırası; "Kalabalık olmayan kampüs" → öğrenci sayısı; "Evden yakın" → km; "Akreditasyonlu" → API. "İş bulma" ve "Yüksek maaş" kalkar. Kız/erkek dengesi çip değil bilgi olarak kalır (§5). **B. Danışman sohbeti (tool use'un asıl yeri).** Öğrenci serbest konuşur: "İstanbul dışına çıkmam", "yıllık 300 bin üstü olmaz", "kalabalık okul istemem". İki tür araç: - **Sorgu araçları** (salt okunur): program ara/detay, üniversite profili (kız/erkek oranı dahil). Model sayı uydurmaz, veriden okur. - **`profil_guncelle` aracı:** model konuşmadan çıkardığı tercihi **kapalı listeli** alanlara yazar (§8). Öğrenciye "Şunu kaydettim" diye gösterilir, tek tıkla silinebilir. Bir sonraki liste bu profili kullanır. Yapay zekâ listeyi araçla kurmaz — liste üretimi deterministik havuzda kalır (havuz-dışına-çıkamama kuralı korunur). **C. Örtük sinyal (sonraya).** /sonuc'ta çıkarılan/eklenen satırlar, ziyaret edilen üniversite sayfaları. KVKK ve karmaşıklık yüzünden ilk turda yok. ## 4. Nasıl eşleştiririz — üç katman, puanı kod hesaplar 1. **Sert filtre (SQL):** sıra bandı, puan türü, il ya da km sınırı, üniversite tipi, dil, ücret üst sınırı, öğretim türü, öğrenciye uymayan yerleşme koşulu. 2. **Uyum puanı (0-100, kod):** her boyut için 0-1 arası alt puan × öğrencinin ağırlığı. **Verisi olmayan program cezalandırılmaz** (nötr puan, "veri yok" etiketi). Dilim (hayal/dengeli/güvenli) bu puandan etkilenmez. 3. **Yapay zekâ:** yalnız havuzdan seçer ve gerekçe yazar; gerekçeye kod üretimi "bu programı öne çıkaran veriler: 180 km, İngilizce, akreditasyonlu" satırı eklenir. Filtre gevşetme sırası değişirse `/meraklisina` şeması aynı işte güncellenir (AGENTS.md kuralı). ## 5. Kız/erkek oranı: nasıl sunulmalı - Üniversite sayfasında **bilgi** olarak (v1'de yapıldı): öğrenci karesinde "%54 kadın · %46 erkek", kaynak notunda üniversite düzeyi olduğu yazılı. - **Filtre ya da çip yapılmaz:** cinsiyet sormak gerekir, ayrımcı okunabilir ve oran üniversite düzeyinde. Danışman bu sınırı söyler (araç çıktısında not var). ## 6. Yatay / dikey geçiş - **Yatay (Ek Madde-1):** puan + hedef bölüm → başvurabileceği programlar bugünden hesaplanabilir. Karar: danışman kapısı açılmaz, ayrı sayfa. Kurallar: `docs/arastirma/2026-09-24-ogrenci-senaryolari/07-universite-yatay-gecis-selin.md`. - **Dikey (DGS):** ÖSYM Tablo-2 ve DGS taban puanı gerekir, ikisi de yok (`08-onlisans-dgs-emre.md`). Ayrı tur. ## 7. Dalgalar | Dalga | İş | Durum | |---|---|---| | 1 | API alanlarını (ücret, burs, dil, öğretim türü, akreditasyon, koşul, kadro, ilçe, baraj) `program_ozellik` tablosuna al | v2 dalı | | 2 | Danışmana sorgu araçları + `profil_guncelle`, profil görünür/silinebilir, gizlilik metni | v2 dalı | | 3 | Öncelik çiplerini veriye bağlama, uyum puanı + "neden bu program" satırı | Sonra | | 4 | TÜMA, il nüfusu; Ek Madde-1 sayfası; DGS Tablo-2 | Sonra | ## 8. KVKK: ne yapılır Bugün gizlilik metni (`src/app/gizlilik/page.tsx`, 2 Ağustos 2026) e-posta, sıra, sihirbaz seçimleri, sohbet mesajları, sipariş ve Anthropic'e yurt dışı aktarımı sayıyor. Kişiselleştirme için: 1. **Profil alanları kapalı liste.** `profil_guncelle` yalnız tanımlı alanlara yazar: azami km, yıllık ücret üstü, dil, öğretim türü, kampüs büyüklüğü, ağırlıklar. Serbest metin alanı yok. Aksi hâlde model sohbetten din, sağlık, aile durumu gibi özel nitelikli veriyi profile taşır. 2. **Sorulmayanlar:** cinsiyet, sağlık/engel, gelir. Ücret üst sınırı sorulur, gelir sorulmaz. Sağlık koşulu programın yanında gösterilir, öğrenciye durumu sorulmaz. 3. **Konum:** il (varsa ilçe), adres/koordinat değil; km il merkezinden. 4. **Öğrenci profili görür ve siler.** Her alan ekranda, tek tıkla silinir. 5. **Saklama süresi yazılır:** profil ve sohbet tercih dönemi bitiminden 12 ay sonra silinir/anonimleştirilir; silen betik olur. 6. **Aydınlatma metni güncellenir:** yeni alanlar + "sohbette söylediğin tercihleri yapılandırılmış bir profile kaydederiz; profil sana gösterilir ve silebilirsin"; yurt dışı aktarım paragrafı profili de kapsar. (Not: metin Anthropic diyor, kod OpenRouter/DeepSeek kullanıyor — düzeltilmeli.) 7. **Analitiğe profil gitmez:** Rybbit'e değer değil sayım. 8. **VERBİS:** çalışan/bilanço eşiğinin altındaysa muhtemelen yükümlülük yok; mali müşavire sorulur. ## 9. Başarı ölçüsü - Her satırdaki "neden bu program" cümlesi kod üretimi olur; erken benimseyiciye eski-yeni liste yan yana gösterilir. - Danışmanda hangi profil alanının ne sıklıkla dolduğu Rybbit'te sayım olarak izlenir (değer değil). ## Açık sorular (cevaplandı, 25 Eyl) 1. Dalga 1 ile başla → evet. 2. Sihirbaza soru → şimdilik hayır. 3. Geçiş soran öğrenciye danışman → hayır, ayrı sayfa. ## Kaynaklar - YÖK Atlas API alan taraması: 25 Eylül 2026, 21.493 kaydın ilk 200'ü. - [TÜMA 2025 (TEDÜ)](https://library.tedu.edu.tr/en/whats-happening-tedu/2025-turkish-university-satisfaction-survey-tuma-results), [ÜniAr](https://uniar.net/en/) - [YÖK Yükseköğretim İstatistikleri](https://veriyonetim.yok.gov.tr/tr/page/507) - Sohbet tabanlı öneri sistemlerinde yapılandırılmış profil: [arXiv 2502.14541](https://arxiv.org/html/2502.14541v1), [arXiv 2608.06632](https://arxiv.org/html/2608.06632v1)