Files
kolaytercih/docs/arastirma/2026-09-25-kisisellestirme/README.md

11 KiB
Raw Blame History

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