Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
- 26 Eyl kararları: profil onayı ("kaydedeyim mi?" → evet) kredi harcamaz; model Türkiye'de barındırılacak (adaylar: turkiye-saglayici.md).
- 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_guncellearacı: 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
- 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.
- 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.
- 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'de yapıldı (c23910c) |
| 2 | Danışmana sorgu araçları + profil_guncelle, profil görünür/silinebilir, gizlilik metni; havuz profili süzer |
v2'de yapıldı (aa20517, 5a04db7); canlı model testi bekliyor |
| 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
Ayrıntılı hukuk ve rakip araştırması (25 Eyl gece): hukuk-ve-rakipler.md. Kritik bulgu: sürekli sohbet aktarımı için açık rıza yolu 2024'ten beri kapalı; sağlayıcıyla Kurul standart sözleşmesi ya da Türkiye'de model gerekiyor. Metindeki "Anthropic" ifadesi kodla (OpenRouter → DeepSeek) çelişiyor.
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:
- Profil alanları kapalı liste.
profil_guncelleyalnı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. - 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.
- Konum: il (varsa ilçe), adres/koordinat değil; km il merkezinden.
- Öğrenci profili görür ve siler. Her alan ekranda, tek tıkla silinir.
- Saklama süresi yazılır: profil ve sohbet tercih dönemi bitiminden 12 ay sonra silinir/anonimleştirilir; silen betik olur.
- 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.)
- Analitiğe profil gitmez: Rybbit'e değer değil sayım.
- 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)
- 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Ü), ÜniAr
- YÖK Yükseköğretim İstatistikleri
- Sohbet tabanlı öneri sistemlerinde yapılandırılmış profil: arXiv 2502.14541, arXiv 2608.06632