diff --git a/.agents/skills/prototype/PICKER.md b/.agents/skills/prototype/PICKER.md
new file mode 100644
index 0000000..aaa88c0
--- /dev/null
+++ b/.agents/skills/prototype/PICKER.md
@@ -0,0 +1,197 @@
+# The Picker
+
+The picker's appearance is **not a design decision** — it is this spec. Copy the markup, CSS, and wiring below verbatim; the only values that change per run are the variant names and count. It stays identical across every project so it always reads as harness chrome, never as part of the design being judged. Do not restyle it with the project's tokens, fonts, or colors.
+
+It is a floating dark pill, bottom-center. Dark glass works on top of any page — light or dark — which is why it is not theme-aware.
+
+## Markup
+
+The sliding highlight span first, one button per variant, a hairline divider, then the replay button (only when at least one variant has motion to re-trigger):
+
+```html
+
+```
+
+In a framework, keep the class names and structure; only the rendering syntax changes.
+
+## Styles
+
+```css
+.proto-picker {
+ position: fixed;
+ bottom: 24px;
+ left: 50%;
+ transform: translateX(-50%);
+ z-index: 2147483647;
+ display: flex;
+ align-items: center;
+ gap: 2px;
+ padding: 4px;
+ border-radius: 999px;
+ background: rgba(10, 10, 10, 0.82);
+ -webkit-backdrop-filter: blur(12px) saturate(1.4);
+ backdrop-filter: blur(12px) saturate(1.4);
+ box-shadow:
+ 0 0 0 1px rgba(255, 255, 255, 0.08) inset,
+ 0 8px 24px rgba(0, 0, 0, 0.24),
+ 0 2px 6px rgba(0, 0, 0, 0.12);
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
+ font-size: 13px;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ user-select: none;
+ -webkit-user-select: none;
+}
+
+.proto-picker-highlight {
+ position: absolute;
+ top: 4px;
+ left: 0;
+ height: 28px;
+ border-radius: 999px;
+ background: rgba(255, 255, 255, 0.12);
+ will-change: transform;
+}
+
+/* The slide is enabled only after first paint (data-ready), so load doesn't animate. */
+.proto-picker[data-ready] .proto-picker-highlight {
+ transition:
+ transform 250ms cubic-bezier(0.23, 1, 0.32, 1),
+ width 250ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .proto-picker[data-ready] .proto-picker-highlight { transition: none; }
+}
+
+.proto-picker-item {
+ position: relative; /* sits above the highlight */
+ display: flex;
+ align-items: center;
+ height: 28px;
+ padding: 0 12px;
+ border: 0;
+ border-radius: 999px;
+ background: transparent;
+ color: rgba(255, 255, 255, 0.55);
+ font: inherit;
+ cursor: pointer;
+ transition: color 150ms ease-out;
+}
+
+.proto-picker-item:hover {
+ color: rgba(255, 255, 255, 0.85);
+}
+
+.proto-picker-item:active {
+ transform: scale(0.97);
+}
+
+.proto-picker-item:focus-visible {
+ outline: 2px solid rgba(255, 255, 255, 0.4);
+ outline-offset: 2px;
+}
+
+.proto-picker-item[data-active] {
+ color: #fff;
+}
+
+.proto-picker-divider {
+ width: 1px;
+ height: 16px;
+ margin: 0 4px;
+ background: rgba(255, 255, 255, 0.12);
+}
+
+.proto-picker-replay {
+ padding: 0 10px;
+ font-size: 14px;
+}
+
+.proto-picker[data-position="top"] {
+ bottom: auto;
+ top: 24px;
+}
+```
+
+## Rules
+
+- **Verbatim.** These values are the spec. No project fonts, no brand colors, no theme switching, no extra shadows or borders.
+- **The highlight slides; the variant swap stays instant.** The active pill animates between buttons (250ms, strong ease-out) as spatial feedback on the picker itself — but the variant being previewed still switches with no transition. The `width` transition is a deliberate exception to the transform/opacity rule: the element is 28px tall, absolutely positioned, and has no layout dependents, so the paint cost is negligible.
+- **One allowed modification:** if a variant occupies the bottom-center of the screen (a toast stack, a bottom sheet, a dock), set `data-position="top"` so the picker never covers the work. Nothing else about it may move or change.
+- **Replay is conditional.** Render the replay button and its divider only when at least one variant has an entrance or state animation worth re-triggering; a static comparison gets a shorter pill.
+
+## Behavior contract
+
+The contract is fixed regardless of how the harness renders:
+
+- Number keys `1–N` and `←`/`→` switch variants; `R` replays. Ignore key events when focus is in an input, textarea, select, or contenteditable, or when a modifier is held.
+- Clicking an item switches to it; exactly one item carries `data-active` and `aria-current="true"` at all times, and the highlight slides to it.
+- Selection persists across reload via a URL param (`?v=2`), falling back to variant 1. The highlight takes its initial position without animating (`data-ready` is added after first paint).
+- Switching re-mounts the variant (so entrance animations re-run); the replay key re-mounts without switching.
+
+## Reference wiring
+
+Verbatim for the standalone-HTML branch; in a framework, keep the same behavior but express it idiomatically (state instead of `innerHTML`, a keyed re-mount instead of `requestAnimationFrame`, refs + a layout effect for the highlight measurement).
+
+```js
+// `variants` is an array of render functions, one per variant, in picker order.
+const stage = document.getElementById('stage');
+const picker = document.querySelector('.proto-picker');
+const highlight = picker.querySelector('.proto-picker-highlight');
+const items = [...picker.querySelectorAll('.proto-picker-item:not(.proto-picker-replay)')];
+const replay = picker.querySelector('.proto-picker-replay');
+let current = 0;
+
+function moveHighlight() {
+ const el = items[current];
+ highlight.style.width = el.offsetWidth + 'px';
+ highlight.style.transform = `translateX(${el.offsetLeft}px)`;
+}
+
+function mount(i) {
+ stage.innerHTML = '';
+ // Clear first, render next frame, so entrance animations re-run.
+ requestAnimationFrame(() => { stage.innerHTML = variants[i](); });
+}
+
+function setActive(i) {
+ if (i < 0 || i >= variants.length) return;
+ current = i;
+ items.forEach((el, j) => {
+ el.toggleAttribute('data-active', j === i);
+ if (j === i) el.setAttribute('aria-current', 'true');
+ else el.removeAttribute('aria-current');
+ });
+ moveHighlight();
+ const url = new URL(location);
+ url.searchParams.set('v', i + 1);
+ history.replaceState(null, '', url);
+ mount(i);
+}
+
+items.forEach((el, i) => el.addEventListener('click', () => setActive(i)));
+replay?.addEventListener('click', () => mount(current));
+window.addEventListener('resize', moveHighlight);
+
+document.addEventListener('keydown', (e) => {
+ if (/^(INPUT|TEXTAREA|SELECT)$/.test(e.target.tagName) || e.target.isContentEditable) return;
+ if (e.metaKey || e.ctrlKey || e.altKey) return;
+ const num = parseInt(e.key, 10);
+ if (num >= 1 && num <= variants.length) setActive(num - 1);
+ else if (e.key === 'ArrowRight') setActive((current + 1) % variants.length);
+ else if (e.key === 'ArrowLeft') setActive((current - 1 + variants.length) % variants.length);
+ else if (e.key === 'r' || e.key === 'R') mount(current);
+});
+
+setActive((parseInt(new URLSearchParams(location.search).get('v'), 10) || 1) - 1);
+// Enable the slide only after first paint, so load doesn't animate.
+requestAnimationFrame(() => requestAnimationFrame(() => picker.setAttribute('data-ready', '')));
+```
diff --git a/.agents/skills/prototype/SKILL.md b/.agents/skills/prototype/SKILL.md
new file mode 100644
index 0000000..9fb230a
--- /dev/null
+++ b/.agents/skills/prototype/SKILL.md
@@ -0,0 +1,90 @@
+---
+name: prototype
+description: Build multiple genuinely different versions of a UI piece you describe, rendered behind a visual picker so you can flip through them live and promote the one that feels right. Only runs when explicitly invoked; it does not trigger on its own.
+disable-model-invocation: true
+---
+
+# Prototyping Variants
+
+A divergence skill. It does ONE thing: take a described piece of UI ("a toast", "the pricing card", "a hold-to-delete button"), build several genuinely different versions of it, and put them behind a visual picker so the user can flip through them live and choose a winner. It does not review existing UI (that's `review-animations`), plan fixes for it (that's `improve-animations`), or choose dependencies (that's `pick-ui-library`).
+
+## Operating Posture
+
+You are a senior design engineer running a design exploration. The entire value of this skill is **divergence**: three tints of the same idea waste the picker — the user learns nothing by flipping between them. Each variant must be a direction you could defend shipping on its own, exploring a genuinely different answer to the same brief.
+
+Divergence is not an excuse to drop the craft bar. Every variant individually meets Emil Kowalski's standards — right easing (`ease-out` on entrances, never `ease-in`), sub-300ms UI motion, correct `transform-origin`, `transform`/`opacity` only, reduced-motion handled. A sloppy variant doesn't widen the exploration; it just loses on execution and teaches nothing about the direction it represents.
+
+## Hard Rules
+
+1. **Never touch production code during exploration.** Everything lives in an isolated prototype surface (see Phase 4). Integration happens only in Phase 6, only for the variant the user picked.
+2. **Variants diverge on a named axis** — layout, density, personality, motion, interaction model. Before building, you must be able to state each variant's axis in a phrase. Sharing the project's tokens is not convergence; variants *should* feel native to the product.
+3. **Every variant fully works.** Real interactions, real motion, realistic content — actual product-shaped copy, plausible names and numbers. No lorem ipsum, no dead buttons, no "imagine this part".
+4. **The picker is chrome, not a contestant.** Its exact markup, styles, and behavior are specified in [PICKER.md](PICKER.md) — copy them verbatim. Its look is not a design decision and never adapts to the project.
+5. **Clean up after the choice.** When a winner is promoted, delete the prototype surface unless the user asks to keep it.
+
+## Workflow
+
+### Phase 1 — Scope
+
+One thing per run. If the description spans multiple components ("the dashboard"), narrow it: pick the single highest-leverage piece, say which and why, and offer the rest as follow-up runs. Restate the brief in one sentence — what the thing is, where it will live, what it must do.
+
+### Phase 2 — Recon
+
+Before designing anything, map the ground the variants must stand on:
+
+- **Stack**: framework, styling system (Tailwind, CSS modules, vanilla), motion library if any.
+- **Tokens**: colors, radii, spacing, fonts, easing/duration variables. Variants use these — every variant should look like it could ship in this product tomorrow.
+- **Personality**: playful consumer app or crisp dashboard? This bounds how far the boldest variant may go.
+- **Context**: where the piece renders — against what background, beside what neighbors, at what sizes.
+
+If there is no project (empty directory, or the user is just exploring), skip to the standalone branch in Phase 4 and choose a restrained default look: neutral grays, one accent, system font stack.
+
+### Phase 3 — Choose directions
+
+Default **3 variants**; up to 5 when the user asks or the design space is genuinely wide. More than 5 dilutes the comparison.
+
+Before writing any code, list the set: a name and an axis for each. Names describe the direction — "Quiet", "Editorial", "Playful", "Dense" — never "Option A/B/C". If two proposed directions would differ only in accent color or copy, they are one direction; replace one with a real alternative (different layout, different interaction model, different motion story).
+
+**Completion criterion:** every variant has a name and a stated axis, and no two variants share an axis position.
+
+### Phase 4 — Build the picker harness
+
+Two branches, by what exists:
+
+- **In a project with a dev server** — an isolated route or page (`/prototypes/
belirli bir diplomaya
bağlı mı?"}
+ A -- "evet: tıp, diş, eczacılık,
hukuk, öğretmenlik..." --> B("Önce BÖLÜM
sonra şehir
en son üniversite adı")
+ A -- "hayır: mühendislik,
işletme, sosyal bilimler..." --> C{"Bölümün
kafanda net mi?"}
+ C -- "net" --> D("Önce o bölümün KADROSU
ve akreditasyonu
sonra şehir")
+ C -- "net değil" --> E("Önce GENİŞ ÜNİVERSİTE:
çift anadal, yatay geçiş,
bölüm çeşitliliği")
+ B --> F{"Şehir ve barınma
maliyeti 4 yıl boyunca
karşılanabilir mi?"}
+ D --> F
+ E --> F
+ F -- "evet" --> G("Satır listeye girer")
+ F -- "hayır" --> H("Satırı yazma:
yerleşirsen kayıt
yaptıramazsın")
+
+ classDef uyari fill:#fef3c7,stroke:#f59e0b,color:#92400e
+ classDef garanti fill:#d1fae5,stroke:#10b981,color:#065f46
+ classDef hayal fill:#fee2e2,stroke:#ef4444,color:#991b1b
+ class B,D,G garanti
+ class C,E,F uyari
+ class H hayal
+```
+
+## 1) Bölümün diploma kilidi var mı?
+
+Bazı meslekleri **yalnızca o diplomayla** yapabilirsin. [Tıp](/bolum/tip), [Diş Hekimliği](/bolum/dis-hekimligi), [Eczacılık](/bolum/eczacilik), [Hukuk](/bolum/hukuk), [Hemşirelik](/bolum/hemsirelik), [Fizyoterapi ve Rehabilitasyon](/bolum/fizyoterapi-ve-rehabilitasyon), öğretmenlik programları böyledir. Bu alanlarda tartışma biter: **bölüm birinci sıradadır.** Sıralaman iki programa da yetiyorsa aralarında üniversiteye göre seçersin, ama "iyi üniversitede başka bölüm" bu grupta bir alternatif değildir — çünkü diploma mesleğin kapısıdır.
+
+Diploma kilidi olmayan alanlarda ise mezuniyet sonrası yollar çatallanır. [İşletme](/bolum/isletme), [İktisat](/bolum/iktisat), [Sosyoloji](/bolum/sosyoloji), [Uluslararası İlişkiler](/bolum/uluslararasi-iliskiler) mezunlarının gittiği yer büyük ölçüde stajlar, ikinci diller ve üniversitenin ağıyla belirlenir. Burada üniversitenin ağırlığı gerçekten artar.
+
+## 2) Üniversiteyi "marka" olarak değil, "o bölümdeki hâli" olarak oku
+
+Bir üniversite bir bölümünde çok güçlü, diğerinde vasat olabilir. Marka ismi yerine şunlara bak:
+
+- **Bölümün öğretim üyesi sayısı ve unvan dağılımı.** Üniversitenin bölüm sayfasındaki akademik kadro listesi bunu doğrudan gösterir. Beş kişilik kadroyla yürüyen bir mühendislik bölümüyle otuz kişilik kadro aynı şey değildir.
+- **Akreditasyon.** Mühendislikte MÜDEK, eğitim fakültelerinde EPDAD gibi program akreditasyonları, o bölümün belirli bir eğitim standardını sağladığının dışarıdan onayıdır. Üniversitenin bölüm sayfasında yazar.
+- **Ders katalogu.** Neredeyse her üniversitenin Bologna/ders kataloğu sayfası vardır; dört yıl boyunca hangi dersleri alacağını orada satır satır okuyabilirsin. Aynı adlı iki bölümün müfredatı şaşırtıcı derecede farklı olabilir.
+- **Taban sıralamanın söyledikleri.** Bir programın tabanı, piyasanın o programa biçtiği değerin toplamıdır. İki üniversite arasında kararsızsan tabanlar sana toplumun ortalama kanaatini söyler — ama bunu tek başına değil, yukarıdaki üç maddeyle birlikte oku. [Taban sıralamalar yıldan yıla nasıl değişir](/rehber/taban-siralamalar-nasil-degisir) yazısı bu okumanın sınırlarını anlatıyor.
+
+## 3) Şehir bir "tercih kriteri" değil, bir "geçerlilik filtresi"
+
+Şehri en sona bıraktık ama en zayıf kriter olduğu için değil — **eleyici** olduğu için. Şehir şu üç şeyi belirler:
+
+1. **Toplam maliyet.** Kira, yurt, ulaşım ve yemek dört yıla vurulduğunda okulun kendisinden büyük bir kalem olur. [Yurt, burs ve yıllık maliyet](/rehber/yurt-burs-ve-yillik-maliyet) yazısında bunu satır satır hesaplıyoruz.
+2. **Staj ve yarı zamanlı iş erişimi.** Mühendislik, [Mimarlık](/bolum/mimarlik), medya, [Gazetecilik](/bolum/gazetecilik) gibi alanlarda sektörün fiziksel olarak bulunduğu şehir, öğrencilik yıllarında ciddi bir avantajdır.
+3. **Dört yıl orada yaşayacak olman.** İklimi, eve uzaklığı, sosyal hayatı sana uymayan bir şehirde okulu bırakma ihtimali gerçek bir risktir.
+
+Şehri "istediğim şehirde okumak istiyorum" diye en başa koyarsan, listeni gereksiz yere daraltırsın. En sona koyarsan da bütçeyi patlatırsın. Doğru yeri **filtre**: bölüm ve üniversite sıralamanı yaptıktan sonra, karşılayamayacağın şehirdeki satırları listeden çıkar.
+
+## Sık düşülen üç tuzak
+
+- **"Puanım boşa gitmesin" tuzağı.** Sıralaman yetiyor diye istemediğin bir bölümü listenin üstüne yazmak, en pahalı hatadır: ÖSYM seni yerleşebildiğin **en üst** tercihe koyar, o satır tutarsa aşağıdaki gerçek tercihlerin hiç okunmaz. [Merkezi yerleştirme nasıl çalışır](/rehber/merkezi-yerlestirme-nasil-calisir) yazısı bu mekanizmayı anlatıyor.
+- **"Sonra yatay geçerim" tuzağı.** Yatay geçiş gerçek bir yoldur ama garanti değildir — koşulları ve kontenjanı vardır. Planını üstüne kurma; [yatay geçiş, ÇAP ve yandal](/rehber/yatay-gecis-cap-yandal) yazısı gerçekçi sınırları çiziyor.
+- **"Üniversitenin adı beni taşır" tuzağı.** Köklü bir üniversitenin zayıf bir bölümünde dört yıl geçirmek, mezuniyette beklediğin kapıyı açmayabilir. Marka değil, **o bölümün o üniversitedeki hâli** taşır.
+
+Sıralamana hangi bölüm–üniversite–şehir kombinasyonlarının düştüğünü tek ekranda görmek için [tercih robotuna](/tercih-robotu) sıralamanı gir; şehir ve devlet/vakıf filtreleriyle üç ekseni ayrı ayrı deneyebilirsin.
diff --git a/content/rehber/bolumun-is-imkanini-nasil-arastirirsin.md b/content/rehber/bolumun-is-imkanini-nasil-arastirirsin.md
new file mode 100644
index 0000000..6e5ded9
--- /dev/null
+++ b/content/rehber/bolumun-is-imkanini-nasil-arastirirsin.md
@@ -0,0 +1,73 @@
+---
+baslik: Bir Bölümün İş İmkânını Nasıl Araştırırsın? (Duyduklarına Değil, Kaynağa Bakma Rehberi)
+aciklama: Bu bölüm iş bulur mu sorusunun cevabı forumda değil. Bir bölümün mezuniyet sonrasını beş adımda kendin araştırma yöntemi — tek şemada.
+tarih: 2026-07-28
+---
+
+"Bu bölüm iş bulur mu?" tercih döneminin en çok sorulan, en kötü cevaplanan sorusu. Forumlarda gördüğün cevaplar birkaç kişinin kendi hikâyesidir; akrabaların söyledikleri on yıl öncesinin piyasasıdır. İyi haber şu: bu soruyu **kendin araştırabilirsin** ve gereken kaynakların hepsi açık. Bu yazı yöntemi veriyor — hangi bölüm olursa olsun işleyen bir yöntem.
+
+## Beş adımlı araştırma
+
+```mermaid
+%% aria: Bölüm araştırma yöntemi şeması, beş adım. Birinci adım mesleğin kapısının nasıl açıldığını anlamaktır: diploma tek başına yetiyor mu, üstüne bir sınav mı gerekiyor, yoksa serbest bir alan mı. İkinci adım o kapının darlığını ölçmektir: sınav varsa kaç kişi giriyor kaç kişi geçiyor, kontenjan ne kadar. Üçüncü adım bölümün müfredatını okumaktır: üniversitenin ders kataloğunda dört yıl boyunca alacağın dersler satır satır yazar. Dördüncü adım arz tarafına bakmaktır: bu bölümden Türkiye genelinde yılda kaç kişi mezun oluyor ve kontenjan artıyor mu azalıyor mu. Beşinci adım gerçek insanlarla konuşmaktır: mezunların gittiği yerleri incelemek ve iki üç mezunla konuşmak. Bu beş adımın sonunda karar duyduklarına değil kaynağa dayanır.
+%% altyazi: Sıra önemli: önce mesleğin kapısı, en son insan hikâyeleri.
+flowchart TD
+ A1("1. Kapı nasıl açılıyor?
diploma tek başına mı,
üstüne sınav mı,
serbest alan mı") --> A2("2. Kapı ne kadar dar?
kaç kişi giriyor,
kaç kişi geçiyor")
+ A2 --> A3("3. Müfredatı oku
üniversitenin ders katalogu
4 yılda ne öğreneceksin")
+ A3 --> A4("4. Arz tarafı
yılda kaç mezun veriliyor,
kontenjan artıyor mu")
+ A4 --> A5("5. İnsanla konuş
mezunlar nereye gitmiş,
2-3 kişiyle görüş")
+ A5 --> S{"Beş adımın sonunda"}
+ S -- "cevaplar tutarlı" --> K("Karar kaynağa dayanıyor")
+ S -- "hâlâ belirsiz" --> B("Belirsizlik gerçek:
listeye alternatif de koy")
+
+ classDef uyari fill:#fef3c7,stroke:#f59e0b,color:#92400e
+ classDef garanti fill:#d1fae5,stroke:#10b981,color:#065f46
+ class K garanti
+ class S,B uyari
+```
+
+## Adım 1: Mesleğin kapısı nasıl açılıyor?
+
+Bölümler mezuniyet sonrası açısından üçe ayrılır ve bu ayrım her şeyden önemlidir:
+
+- **Diploma doğrudan yetki verir.** [Tıp](/bolum/tip), [Diş Hekimliği](/bolum/dis-hekimligi), [Eczacılık](/bolum/eczacilik), [Hemşirelik](/bolum/hemsirelik), [Veteriner](/bolum/veteriner), [Fizyoterapi ve Rehabilitasyon](/bolum/fizyoterapi-ve-rehabilitasyon) gibi. Mesleği yapmak için diploma gereklidir; uzmanlaşma veya kamuda çalışma için ayrıca sınav olabilir.
+- **Diplomanın üstüne bir kapı sınavı var.** [Hukuk](/bolum/hukuk) mezunu için staj ve baro süreci, öğretmenlik programları için atama sınavı, kamuda çalışmak isteyen [Kamu Yönetimi](/bolum/kamu-yonetimi) veya [İktisat](/bolum/iktisat) mezunu için merkezi sınavlar gibi. Burada kritik soru bölümün kendisi değil, **o kapının genişliğidir.**
+- **Kapı serbest, ölçü senin portföyün.** [Bilgisayar Mühendisliği](/bolum/bilgisayar-muhendisligi), [Yazılım Mühendisliği](/bolum/yazilim-muhendisligi), [İşletme](/bolum/isletme), [Radyo, Televizyon ve Sinema](/bolum/radyo-televizyon-ve-sinema) gibi alanlarda diploma bir başlangıçtır; işveren staja, projeye, portföye bakar.
+
+Bu üç grubun "iş imkânı" sorusuna cevabı bambaşkadır. İkinci gruptaki bir bölümü değerlendirirken bölümün kalitesine değil, **atama/geçiş oranlarına** bakman gerekir.
+
+## Adım 2: Kapı ne kadar dar?
+
+Sınavla açılan bir kapı varsa sayıları ara: o alanda yılda kaç kişi sınava giriyor, kaç kişi geçiyor, kaç kadro açılıyor? Bu veriler ilgili kurumun (bakanlık, meslek odası, sınavı yapan kurum) kendi duyurularında yayımlanır ve genelde yıllara göre karşılaştırılabilir.
+
+Burada dikkat: **rakamı bul, yorumu sonra yap.** "Atama yok" ile "geçen yıl şu kadar kadro açıldı, şu kadar mezun vardı" arasında dağlar kadar fark var. İkincisi karar verilebilir bir bilgidir.
+
+## Adım 3: Müfredatı gerçekten oku
+
+Neredeyse her üniversitenin ders kataloğu (Bologna bilgi paketi) açıktır. Bölüm sayfasından "ders planı" veya "müfredat" bağlantısını bul ve **sekiz yarıyılın dersini de oku.** Bu on beş dakika, bölüm hakkında forumlarda geçireceğin on saatten fazlasını anlatır.
+
+Bakman gerekenler:
+
+- Derslerin ağırlığı beklentine uyuyor mu? Adı aynı olan iki bölümden biri ağırlıklı matematik, diğeri ağırlıklı tasarım olabilir.
+- Zorunlu staj var mı, kaç gün?
+- Seçmeli ders havuzu ne kadar geniş? Geniş havuz, alan içinde yön değiştirme imkânı demektir.
+- Bölümün akreditasyonu var mı? Mühendislikte MÜDEK, eğitimde EPDAD gibi program akreditasyonları üniversitenin bölüm sayfasında ilan edilir.
+
+## Adım 4: Arz tarafına bak
+
+Bir alanın doygunluğunu anlamanın en sade yolu: **Türkiye genelinde o bölümden yılda kaç kişi mezun oluyor?** Kontenjan tarafı bunun iyi bir göstergesidir — aynı bölümün kaç üniversitede açık olduğuna ve toplam kontenjanına bakabilirsin. Kontenjanı hızla artan bir bölümde, bugünün mezun sayısıyla dört yıl sonrakinin aynı olmayacağını hesaba kat.
+
+Tabanların yıllar içindeki seyri de bu tabloyu okur: bir bölümün tabanı birkaç yıl üst üste gevşiyorsa, talep tarafında bir şey değişiyor demektir. [Taban sıralamalar yıldan yıla ne kadar değişir](/rehber/taban-siralamalar-nasil-degisir) yazısı bu okumanın nasıl yapılacağını ve sınırlarını anlatıyor.
+
+## Adım 5: İnsanla konuş — ama doğru soruyu sorarak
+
+En son adım bu, çünkü ilk dördü olmadan sorduğun sorular yüzeysel kalır. İki kaynak:
+
+- **Mezunların gittiği yerler.** Meslek ağlarında üniversite + bölüm araması yapıp mezunların bugün ne iş yaptığına bakmak, tek tek hikâyelerden çok daha sağlıklı bir dağılım verir.
+- **İki-üç mezunla konuşmak.** "Memnun musun?" diye sorma; şunları sor: *İlk işini nasıl buldun? Okuduğun derslerden hangisi işine yaradı? Bugün yeniden seçsen ne değiştirirdin?* Bu üç soru, on dakikada gerçek bilgi verir.
+
+## Cevap belirsiz kaldıysa ne yapmalı?
+
+Bazı alanlarda dört yıl sonrası dürüstçe belirsizdir — ve bu, o bölümü kötü yapmaz. Belirsizlikle baş etmenin tercih listesindeki karşılığı şu: **listeye alternatif de koy.** İstediğin bölümü üst bloğa yaz, ama alt bloğa da seni memnun edecek ikinci ve üçüncü seçenekleri diz. [Tercih listesi nasıl yapılır](/rehber/tercih-listesi-nasil-yapilir) yazısındaki hayal–dengeli–garanti dağılımı tam olarak bu belirsizliği yönetmek için var.
+
+Bir de bölümlerin kendi sayfalarına bak: [bölüm kataloğunda](/bolumler) her bölümün hangi üniversitelerde açık olduğunu, taban sıralamalarını ve program sayısını görebilir, araştırmanın dördüncü adımını dakikalar içinde tamamlayabilirsin. Sıralamana hangi bölümlerin düştüğünü görmek içinse [tercih robotuna](/tercih-robotu) sıralamanı gir.
diff --git a/content/rehber/hazirlik-sinifi-ve-ogretim-dili.md b/content/rehber/hazirlik-sinifi-ve-ogretim-dili.md
new file mode 100644
index 0000000..6e07d87
--- /dev/null
+++ b/content/rehber/hazirlik-sinifi-ve-ogretim-dili.md
@@ -0,0 +1,65 @@
+---
+baslik: Hazırlık Sınıfı ve Öğretim Dili — (İngilizce), (%30 İngilizce) Ne Demek?
+aciklama: Program adının yanındaki dil etiketi ne anlatıyor, hazırlık zorunlu mu, atlanabilir mi, bir yıl uzar mı? Dil kararının tamamı tek şemada.
+tarih: 2026-07-31
+---
+
+Tercih tablosunda aynı bölümü üç farklı etiketle görürsün: *Bilgisayar Mühendisliği*, *Bilgisayar Mühendisliği (İngilizce)*, *Bilgisayar Mühendisliği (%30 İngilizce)*. Bu etiket **öğretim dilini** anlatır; burs ya da kalite bilgisi değildir. Ama okuma sürene, hazırlık yılına ve mezuniyetteki dil seviyene doğrudan etki eder — yani listede yerini bilerek belirlemen gerekir.
+
+## Etiketten hazırlığa: karar akışı
+
+```mermaid
+%% aria: Öğretim dili ve hazırlık sınıfı akış şeması. Program adının yanındaki etiket önce okunur. Tamamen İngilizce programlarda derslerin tamamı İngilizcedir ve hazırlık sınıfı genellikle zorunludur. Yüzde otuz İngilizce programlarda derslerin bir kısmı İngilizcedir ve hazırlık üniversiteye göre zorunlu veya isteğe bağlı olabilir. Türkçe programlarda hazırlık genelde isteğe bağlıdır. Hazırlık zorunluysa yıl başında yapılan yeterlik yani muafiyet sınavına girilir. Sınav geçilirse doğrudan birinci sınıftan başlanır. Geçilemezse bir yıl hazırlık okunur ve bu yıl normal öğrenim süresine dahil değildir. Hazırlık sonunda yine başarısız olunursa üniversitenin yönetmeliğine göre ek süre veya Türkçe eşdeğer programa geçiş gündeme gelir; bu koşullar okuldan okula değiştiği için kılavuzdan ve üniversitenin yönetmeliğinden doğrulanmalıdır.
+%% altyazi: Dil etiketi süreyi değiştirir: hazırlık yılı normal öğrenim süresine dahil değildir.
+flowchart TD
+ E{"Program adının
yanındaki etiket"}
+ E -- "İngilizce" --> I("Dersler tamamen İngilizce
hazırlık genelde ZORUNLU")
+ E -- "%30 İngilizce" --> O("Derslerin bir kısmı İngilizce
hazırlık okula göre değişir")
+ E -- "etiket yok" --> T("Türkçe program
hazırlık genelde İSTEĞE BAĞLI")
+ I --> M{"Yıl başındaki yeterlik
muafiyet sınavı"}
+ O --> M
+ M -- "geçtin" --> B("Doğrudan 1. sınıf
süre uzamaz")
+ M -- "geçemedin" --> H("1 yıl hazırlık
normal süreye dahil DEĞİL")
+ H --> S{"Hazırlık sonu
başarı"}
+ S -- "başardın" --> B
+ S -- "başaramadın" --> U("Üniversitenin yönetmeliğine göre:
ek süre veya Türkçe
eşdeğer programa geçiş")
+
+ classDef uyari fill:#fef3c7,stroke:#f59e0b,color:#92400e
+ classDef garanti fill:#d1fae5,stroke:#10b981,color:#065f46
+ classDef hayal fill:#fee2e2,stroke:#ef4444,color:#991b1b
+ class B,T garanti
+ class M,S,H,O uyari
+ class U hayal
+```
+
+## Etiketler ne anlatıyor?
+
+- **(İngilizce):** Programdaki derslerin tamamına yakını İngilizce işlenir. Bu programlarda hazırlık sınıfı çoğunlukla zorunludur; yeterlik sınavını geçemezsen bir yıl hazırlık okursun.
+- **(%30 İngilizce):** Derslerin belirli bir bölümü İngilizce, geri kalanı Türkçedir. Hazırlığın zorunlu mu isteğe bağlı mı olduğu üniversiteden üniversiteye değişir — bunu ÖSYM kılavuzundaki program koşullarından ve üniversitenin kendi yönetmeliğinden doğrulaman gerekir.
+- **Etiketsiz program:** Türkçe öğretim yapılır. Çoğu üniversitede isteğe bağlı hazırlık imkânı yine de vardır.
+- **UOLP / ortak program:** Yurt dışındaki bir üniversiteyle yürütülen ortak programdır. Dil etiketinden ayrı bir şeydir; kendi koşulları, kendi ücretlendirmesi ve genelde yurt dışında geçirilecek dönemleri vardır. Kılavuzdaki açıklama maddelerini satır satır okumadan bu satırları listeye yazma.
+
+Kritik nokta: **etiket bir kalite göstergesi değildir.** Aynı üniversitenin Türkçe ve İngilizce programı arasındaki taban farkı, çoğu zaman eğitim kalitesi farkını değil, adayların dil tercihini yansıtır.
+
+## Hazırlık yılı süreyi uzatır mı?
+
+Hazırlık sınıfı **normal öğrenim süresine dahil değildir.** Yani dört yıllık bir lisans programında hazırlık okursan toplam beş yıl kampüste olursun, ama azami öğrenim süren dört yıl üzerinden işlemeye hazırlıktan sonra başlar. Pratik sonuç: hazırlık, mezuniyetini bir yıl öteler.
+
+Bu bir yıl kayıp mı? Cevap tamamen sana bağlı:
+
+- **Dilin zaten iyiyse** yeterlik sınavını geçip doğrudan birinci sınıftan başlarsın; hiçbir şey uzamaz. Bu sınav yıl başında yapılır ve girmek ücretsizdir — kaybedecek bir şeyin yok.
+- **Dilin zayıfsa ve hedefin dilin ağır bastığı bir alansa** ([Bilgisayar Mühendisliği](/bolum/bilgisayar-muhendisligi), [Yazılım Mühendisliği](/bolum/yazilim-muhendisligi), [Uluslararası İlişkiler](/bolum/uluslararasi-iliskiler), [Endüstri Mühendisliği](/bolum/endustri-muhendisligi)) hazırlık yılı büyük ihtimalle hayatındaki en verimli yatırımlardan biridir. Bu alanlarda kaynakların, dokümantasyonun ve iş ilanlarının çoğu İngilizcedir.
+- **Dilin zayıfsa ve alanın ağırlıklı olarak Türkçe yürüyorsa** ([Hukuk](/bolum/hukuk), [Sınıf Öğretmenliği](/bolum/sinif-ogretmenligi), [Türkçe Öğretmenliği](/bolum/turkce-ogretmenligi), sağlık meslek programlarının çoğu) hazırlığı zorunlu kılan bir programı sırf etiket için tercih etmenin getirisi sınırlıdır.
+
+## Hazırlıkta başarısız olursam?
+
+Bu, tercih öncesinde en az konuşulan ama en çok korkulan konu. Genel çerçeve şu: hazırlık sonunda yeterlik sağlanamazsa üniversitenin yönetmeliği devreye girer. Bazı üniversiteler ek süre veya yaz okulu tanır; bazılarında ise Türkçe eşdeğer bir programa geçiş imkânı gündeme gelir. **Bu koşullar okuldan okula ciddi biçimde değişir** — tercih etmeyi düşündüğün üniversitenin "Yabancı Diller Yüksekokulu" veya "Hazırlık Sınıfı Yönetmeliği" sayfasını açıp okumak on dakika sürer ve seni yıllarca ilgilendirir.
+
+## Listede nasıl konumlanır?
+
+- İngilizce ve Türkçe programı **ayrı satır** olarak düşün: ayrı kontenjan, ayrı taban, ayrı program kodu.
+- İkisini de istiyorsan ikisini de yaz; hangisini daha çok istiyorsan üste koy. Aralarındaki taban farkı sıralamana bağlı olarak ikisini de erişilebilir kılabilir.
+- İngilizce programı **yalnızca hazırlık yılını göze alıyorsan** yaz. "Nasıl olsa muafiyet sınavını geçerim" varsayımıyla yazıp geçemezsen, yine de o yılı okursun.
+- %30 İngilizce programlarda hazırlığın zorunlu olup olmadığını **program bazında** kontrol et; aynı üniversitenin iki bölümünde bile farklı olabilir.
+
+Sıralamanla hangi dil varyantlarının açık olduğunu yan yana görmek için [tercih robotuna](/tercih-robotu) sıralamanı gir; aynı bölümün Türkçe ve İngilizce satırlarını tek listede karşılaştırabilirsin.
diff --git a/content/rehber/ozel-kosullu-programlar.md b/content/rehber/ozel-kosullu-programlar.md
new file mode 100644
index 0000000..8233e7d
--- /dev/null
+++ b/content/rehber/ozel-kosullu-programlar.md
@@ -0,0 +1,72 @@
+---
+baslik: Özel Koşullu Programlar — Sağlık Raporu, Mülakat, Boy-Kilo ve Özel Yetenek
+aciklama: Bazı programlara sadece sıralaman yetmez. Kılavuzdaki koşul maddeleri, sağlık raporu isteyen bölümler ve özel yetenek sınavı — tek şemada.
+tarih: 2026-08-02
+---
+
+Tercih tablosunda bazı program satırlarının yanında küçük madde numaraları görürsün. Bunlar süs değil: o programa yerleşmek için **sıralamanın dışında** sağlanması gereken koşulları anlatır. Sağlık kurulu raporu, boy-kilo ölçüsü, mülakat, güvenlik soruşturması, belirli bir lise türünden mezuniyet... Bu koşulu sağlayamayan bir aday yerleşse bile kaydı yapılmaz. Bu yazı, o satırları tercih etmeden önce nasıl okuyacağını anlatıyor.
+
+## Bir programın önündeki üç kapı
+
+```mermaid
+%% aria: Özel koşullu programlar şeması. Bir programa yerleşmenin önünde üç ayrı kapı olabilir. Birinci kapı sıralamadır: taban sıralaması ve varsa başarı sıralaması barajı. İkinci kapı kılavuzdaki koşul maddeleridir: sağlık kurulu raporu, boy ve kilo ölçüsü, mülakat, güvenlik soruşturması, belirli bir lise türünden mezun olma veya yaş sınırı gibi. Üçüncü kapı özel yetenek sınavıdır ve bu programlar merkezi yerleştirmeye dahil değildir; konservatuvar, spor bilimleri ve güzel sanatlar programlarına üniversitenin kendi düzenlediği sınavla girilir, tercih listesine yazılmaz. Bir programı listeye yazmadan önce koşul maddelerinin okunması ve sağlanamayan koşul varsa satırın yazılmaması gerekir; koşul sağlanmazsa yerleşme iptal edilir ve o yıl kaybedilir.
+%% altyazi: Sıralaman yetse bile koşul sağlanmıyorsa kayıt yapılmaz — madde numaralarını tercihten önce oku.
+flowchart TD
+ P("Programa yerleşmek") --> K1{"1. Kapı: sıralama
taban ve varsa
başarı sıralaması barajı"}
+ K1 -- "yetmiyor" --> R1("Satır hayal bloğunda
ya da hiç yazılmaz")
+ K1 -- "yetiyor" --> K2{"2. Kapı: kılavuzdaki
koşul maddeleri"}
+ K2 -- "sağlık raporu, boy-kilo,
mülakat, lise türü..." --> D{"Koşulu
sağlıyor musun?"}
+ D -- "evet, belgeli" --> Y("Satır listeye yazılabilir")
+ D -- "emin değilim" --> A("Önce belgeyi/ölçüyü doğrula
sonra yaz")
+ D -- "hayır" --> H("Yazma:
yerleşsen de kayıt yapılmaz,
yıl kaybedilir")
+ K2 -- "koşul yok" --> Y
+ P --> K3("3. Kapı: özel yetenek
konservatuvar, spor bilimleri,
güzel sanatlar
merkezi yerleştirmeye dahil DEĞİL")
+
+ classDef uyari fill:#fef3c7,stroke:#f59e0b,color:#92400e
+ classDef garanti fill:#d1fae5,stroke:#10b981,color:#065f46
+ classDef hayal fill:#fee2e2,stroke:#ef4444,color:#991b1b
+ class Y garanti
+ class K1,K2,D,A,K3 uyari
+ class H,R1 hayal
+```
+
+## Kapı 1: Sıralama ve barajlar
+
+Bazı bölümlere yerleşmek için taban sıralamasını geçmek yetmez; ayrıca **başarı sıralaması barajını** da geçmen gerekir. Tıp, diş hekimliği, eczacılık, hukuk, mimarlık, mühendislik ve öğretmenlik programlarında bu barajlar uygulanır ve barajın altındaki adaylar o programı **tercih edemez**. Güncel eşikler [baraj ve başarı sıralaması şartları](/rehber/siralama-sartlari-2026) yazısında.
+
+## Kapı 2: Kılavuzdaki koşul maddeleri
+
+ÖSYM kılavuzunda her program satırının yanındaki numaralar, kılavuzun **"Koşullar ve Açıklamalar"** bölümündeki maddelere karşılık gelir. En sık karşılaşılanlar:
+
+- **Sağlık kurulu raporu.** Bazı programlar, tam teşekküllü bir hastaneden alınacak sağlık kurulu raporu ister; raporda "bu programda öğrenim görmesinde sakınca yoktur" ifadesi aranır. Denizcilik, pilotaj, itfaiyecilik, bazı sağlık ve teknik programlar bu grupta olabilir. Renk körlüğü, işitme, denge gibi belirli sağlık koşullarını kapsayan maddeler de vardır.
+- **Boy ve kilo ölçüsü.** [Pilotaj](/bolum/pilotaj) ve bazı güvenlik/denizcilik programlarında belirli boy ve kilo aralıkları aranır.
+- **Mülakat / güvenlik soruşturması.** Bazı programlarda merkezi yerleştirmenin ardından ek bir değerlendirme aşaması vardır.
+- **Belirli lise türünden mezuniyet.** Bazı önlisans programları yalnızca ilgili meslek lisesi mezunlarına, bazıları ise sınavsız/ek kontenjanla açıktır.
+- **Yaş sınırı.** Özellikle havacılık ve güvenlik alanındaki programlarda üst yaş sınırı bulunabilir.
+- **Yatılılık, üniforma, staj zorunluluğu.** Öğrencilik hayatını doğrudan etkileyen ama tercih anında atlanan maddelerdir.
+- **Ücretli/ikinci öğretim, uzaktan öğretim bilgisi.** Programın işleyişini değiştirir; koşul maddesinde belirtilir.
+
+**Nasıl kontrol edilir?** Listeye yazmayı düşündüğün her program için: kılavuzda satırın yanındaki madde numaralarını not al, kılavuzun koşullar bölümünden o maddeleri **tek tek oku**. Bu iş program başına iki dakika sürer ve tercih döneminde yapılabilecek en yüksek getirili iştir.
+
+Kritik uyarı: koşulu sağlamadığın hâlde yerleştiysen **kaydın yapılmaz ve yerleşme hakkın iptal edilir.** Bu durumda o yılki [ek yerleştirme](/rehber/ek-yerlestirme-2026) süreci dışında elinde bir şey kalmaz.
+
+## Kapı 3: Özel yetenek sınavıyla öğrenci alan programlar
+
+Konservatuvarlar, spor bilimleri fakülteleri ve güzel sanatlar programlarının önemli bir kısmı **merkezi yerleştirmeye dahil değildir.** Yani bu programlar tercih listene yazılmaz; üniversitelerin kendi düzenlediği özel yetenek sınavlarına ayrı ayrı başvurursun.
+
+İşleyişi:
+
+- Genellikle belirli bir **TYT puanı** şartı aranır; bu eşik üniversiteden üniversiteye ve programdan programa değişir.
+- Başvuru takvimini, sınav içeriğini ve değerlendirme formülünü **her üniversite kendi ilan eder.** Aynı hafta içinde birkaç okulun sınavına girmek mümkündür ama takvimler çakışabilir.
+- Yerleştirme, üniversitenin kendi hesapladığı yerleştirme puanına göre yapılır; bu puanda TYT puanı, özel yetenek sınavı sonucu ve bazen orta öğretim başarı puanı birlikte kullanılır.
+
+Pratik sonuç: özel yetenek hedefliyorsan **iki paralel süreç** yürütürsün — bir yandan merkezi tercih listeni hazırlarsın, bir yandan özel yetenek sınavı başvurularını takip edersin. Bu ikisi birbirini engellemez.
+
+## Listeye nasıl yansıtılır?
+
+- Koşulunu **belgeyle doğruladığın** özel koşullu programları normal satır gibi, istek sırana göre diz.
+- Koşulundan emin olmadığın bir programı listeye yazmadan önce doğrula: sağlık raporu gerektiren bir programda "büyük ihtimalle uygun çıkarım" varsayımıyla ilerlemek risklidir.
+- Koşulunu sağlamadığın programı hiç yazma. Bu satır, [ölü tercihten](/rehber/olu-tercih-nedir) daha kötüdür: ölü tercih sadece yer kaplar, koşulu sağlanmayan tercih ise yerleşirsen yılını götürür.
+- Özel yetenek programlarını merkezi listene yazmaya çalışma; ayrı süreçtir.
+
+Kılavuz koşullarını okuduktan sonra sıralamana hangi programların gerçekten açık olduğunu görmek için [tercih robotuna](/tercih-robotu) sıralamanı gir; listeyi kurarken [tercih listesi nasıl yapılır](/rehber/tercih-listesi-nasil-yapilir) yazısındaki hayal–dengeli–garanti dağılımını temel al.
diff --git a/content/rehber/veliler-icin-tercih-rehberi.md b/content/rehber/veliler-icin-tercih-rehberi.md
new file mode 100644
index 0000000..4fb564e
--- /dev/null
+++ b/content/rehber/veliler-icin-tercih-rehberi.md
@@ -0,0 +1,60 @@
+---
+baslik: Veliler İçin Tercih Rehberi — Nerede Yardım Etmeli, Nerede Geri Durmalı?
+aciklama: Tercih listesini kim doldurmalı, veli hangi konuda gerçekten faydalı olur? Görev dağılımı ve o meşhur anlaşmazlık — tek şemada.
+tarih: 2026-08-02
+---
+
+Tercih dönemi evde iki farklı endişenin çarpıştığı iki haftadır. Öğrenci "istediğim bölümü okuyamayacağım" diye endişelenir; veli "yanlış karar verip yıllarını kaybedecek" diye. İkisi de haklı bir yerden bakıyor, ama aynı işi yapmaya çalıştıklarında liste bozulur. Bu yazı, **hangi işin kimde olduğunu** ayırıyor.
+
+## Görev dağılımı
+
+```mermaid
+%% aria: Veli ve öğrenci görev dağılımı şeması. Tercih sürecindeki işler üçe ayrılır. Öğrencinin kararı: hangi bölümü okumak istediği, listenin sırası ve hayal tercihleri. Velinin gerçek katkısı: bütçe gerçeği, barınma ve yurt araştırması, şehir güvenliği ve ulaşım, ailedeki ve çevredeki meslek sahipleriyle görüşme ayarlamak. Ortak karar: bütçenin tutmadığı satırların listeden çıkarılması ve nihai listenin birlikte gözden geçirilmesi. Veliye düşmeyen iş: listeyi öğrencinin yerine doldurmak veya sıralamayı değiştirmek, çünkü dört yıl okulu okuyacak olan öğrencidir.
+%% altyazi: Bölüm kararı öğrencinin, bütçe ve barınma gerçeği velinin; liste ikisinin birlikte okuduğu son metin.
+flowchart TD
+ T("Tercih süreci") --> O("ÖĞRENCİDE:
hangi bölüm,
listenin sırası,
hayal tercihleri")
+ T --> V("VELİDE:
bütçe gerçeği,
yurt ve barınma,
şehir ve ulaşım,
meslek sahibiyle görüşme")
+ T --> Y("VELİYE DÜŞMEYEN:
listeyi doldurmak,
sıralamayı değiştirmek")
+ O --> B{"Bütçe bu satırı
4 yıl taşır mı?"}
+ V --> B
+ B -- "evet" --> L("Satır listede kalır")
+ B -- "hayır" --> C("Birlikte konuşulur,
satır çıkarılır
veya burslu eşdeğeri aranır")
+ Y --> R("Sonuç: öğrenci sahiplenmez,
ilk zorlukta okul bırakılır")
+
+ classDef uyari fill:#fef3c7,stroke:#f59e0b,color:#92400e
+ classDef garanti fill:#d1fae5,stroke:#10b981,color:#065f46
+ classDef hayal fill:#fee2e2,stroke:#ef4444,color:#991b1b
+ class O,V,L garanti
+ class B,C uyari
+ class Y,R hayal
+```
+
+## Velinin gerçekten fark yarattığı dört alan
+
+Bölüm seçiminde ısrar etmek yerine, bu dört başlıkta veli katkısı doğrudan işe yarar:
+
+1. **Bütçe gerçeğini net söylemek.** "Bakarız, hallederiz" en riskli cümledir. Vakıf üniversitelerinde indirimli programların dört-altı yıllık toplam maliyetini, devlet üniversitelerinde ise şehrin kira ve yaşam giderini **listeyi vermeden önce** açıkça konuşun. Yerleştikten sonra ortaya çıkan "ödeyemeyiz" durumu bir yıl kaybettirir. [Devlet mi vakıf mı](/rehber/devlet-mi-vakif-mi) yazısı burs varyantlarının nasıl okunacağını anlatıyor.
+2. **Barınmayı önceden araştırmak.** Yurt kapasitesi, öğrenci evi kiraları ve kampüsün şehir merkezine uzaklığı velinin rahat araştırabileceği, öğrencinin ise tercih telaşında atladığı konulardır. [Yurt, burs ve yıllık maliyet](/rehber/yurt-burs-ve-yillik-maliyet) yazısındaki kalemleri şehir şehir doldurmak iyi bir veli işidir.
+3. **Doğru insanla konuşturmak.** "Bence doktor ol" demek yerine, çevrenizdeki bir hekimle, mühendisle, öğretmenle yarım saatlik bir görüşme ayarlamak on kat etkilidir. Öğrenci mesleği sizden değil, o mesleği yapan birinden duysun.
+4. **Süreci takip etmek.** Tercih işlemi tarihleri, kayıt belgeleri, e-Devlet adımları — bunlar sıkıcı ama kritik. [Tercih takvimi](/rehber/yks-tercih-takvimi-2026) ve [kayıt rehberi](/rehber/universite-kayit-rehberi-2026) yazılarındaki tarihleri takvime işlemek tam bir veli görevidir.
+
+## Listeyi neden öğrenci doldurmalı?
+
+Çünkü dört yıl o sıraları okuyacak olan o. Bunun ötesinde pratik bir sebep de var: **ÖSYM seni yerleşebildiğin en üst tercihe koyar.** Yani listenin sırası bir istek beyanıdır, taktik değil. Öğrenci gerçekten istediği sırayı yazmazsa, sistem ona istemediği bir yeri verir ve bu tamamen kendi listesinden kaynaklanır. [Merkezi yerleştirme nasıl çalışır](/rehber/merkezi-yerlestirme-nasil-calisir) yazısı bu mantığı adım adım gösteriyor.
+
+Velinin listeyi "düzeltmesi" genelde şuraya varır: üst sıralara ailenin prestijli bulduğu bölümler girer, öğrencinin gerçek isteği aşağı iner. Sıralama tutarsa öğrenci sahiplenmediği bir bölümde başlar; ilk dönem sonunda devamsızlık, sonraki yıl ise ya yeniden sınav ya da okulu bırakma gelir. Kazanılan bir şey yoktur.
+
+## Anlaşmazlık çıktığında: üç adımlı yol
+
+Öğrenci bir bölümü çok istiyor, siz riskli buluyorsunuz. Tartışmak yerine:
+
+- **Adım 1 — İddiaları yazıya dökün.** "Bu bölüm iş bulamaz" ya da "bu bölüm harika" cümlelerinin ikisi de kanıtsız. İkiniz de iddianızı somut bir kaynağa dayandırın: ders katalogu, akreditasyon, mezunların gittiği yerler. [Bir bölümün iş imkânını nasıl araştırırsın](/rehber/bolumun-is-imkanini-nasil-arastirirsin) yazısı bunun yöntemini veriyor.
+- **Adım 2 — Listede ikisine de yer açın.** 24 satırlık liste tam da bunun için var. Öğrencinin çok istediği bölüm üst bloğa, sizin daha güvenli bulduğunuz alternatifler alt bloğa girebilir. İkisi çatışmaz, sıralanır. [Tercih listesi nasıl yapılır](/rehber/tercih-listesi-nasil-yapilir) yazısındaki hayal–dengeli–garanti dağılımı bu pazarlığın zeminidir.
+- **Adım 3 — Kararı öğrenciye bırakın, gerekçenizi bir kez söyleyin.** Bir kez. Tekrar etmek ikna etmez, sadece kararı duygusallaştırır.
+
+## Son iki hatırlatma
+
+- **Kendi dönemini referans almayın.** Yirmi yıl önce güçlü olan bir bölüm bugün öyle olmayabilir, tersi de doğru. Tabanlar ve müfredatlar değişti; karar bugünün verisiyle verilmeli.
+- **Boş satır bırakmayın, ama zorla da doldurmayın.** Kayıt yaptırmayacağınız bir programı "garanti olsun" diye yazmak, [ölü tercihten](/rehber/olu-tercih-nedir) daha kötüdür: yerleşirseniz ek yerleştirme hakkı da yanar.
+
+Öğrencinizin sıralamasıyla hangi bölümlerin ve şehirlerin gerçekten masada olduğunu birlikte görmek için [tercih robotuna](/tercih-robotu) sıralamayı girip listeyi ekranda yan yana inceleyebilirsiniz.
diff --git a/content/rehber/yatay-gecis-cap-yandal.md b/content/rehber/yatay-gecis-cap-yandal.md
new file mode 100644
index 0000000..0a67bb7
--- /dev/null
+++ b/content/rehber/yatay-gecis-cap-yandal.md
@@ -0,0 +1,79 @@
+---
+baslik: İstemediğim Bölüme Yerleşirsem? Yatay Geçiş, ÇAP ve Yandal Gerçekte Nasıl İşler?
+aciklama: Sonra yatay geçerim cümlesinin arkasında ne var? Üniversiteye başladıktan sonraki dört yol ve gerçek koşulları — tek şemada.
+tarih: 2026-07-30
+---
+
+Tercih döneminde en çok kurulan cümlelerden biri: "Şimdilik buraya yazayım, sonra yatay geçerim." Bu cümle tamamen yanlış değil — üniversiteye başladıktan sonra gerçekten birkaç çıkış yolu var. Ama her birinin koşulu, takvimi ve kontenjanı var. Bu yazı, o yolları **planlanabilir** hâle getiriyor: hangisi neye bağlı, hangisi ne zaman açılıyor.
+
+## Başladıktan sonraki dört yol
+
+```mermaid
+%% aria: Üniversiteye başladıktan sonraki geçiş yolları şeması. Kayıtlı olduğun bölümden memnun değilsen dört yol vardır. Birincisi merkezi yerleştirme puanıyla yatay geçiş, kısaca Ek Madde 1: kayıt olduğun yıldaki YKS puanın hedef programın aynı yıldaki taban puanına eşit veya ondan yüksekse başvurabilirsin, not ortalaması şartı aranmaz ve bu haktan yalnızca bir kez yararlanılır. İkincisi not ortalamasıyla yatay geçiş: genellikle lisansta üçüncü ve beşinci yarıyıl başında, eşdeğer programlara, kontenjan dahilinde yapılır ve not ortalaması şartı vardır. Üçüncüsü çift anadal ve yandal: mevcut bölümü bırakmadan ikinci bir programın derslerini almaktır, not ortalaması ve sınıf başarı sırası şartı aranır. Dördüncüsü yeniden sınava girmektir; bu her zaman açık olan yoldur ama bir yıl maliyeti vardır. Hiçbir yolun garanti olmadığı için tercih listesi bu yollara güvenilerek kurulmamalıdır.
+%% altyazi: Dört yol da gerçek, hiçbiri garanti değil — liste bu yolların üstüne kurulmaz.
+flowchart TD
+ A("Bölümden memnun değilim") --> Y1{"Kayıt yılındaki YKS puanın
hedef programın o yılki
tabanına yetiyor mu?"}
+ Y1 -- "evet" --> E1("Ek Madde 1
merkezi puanla yatay geçiş
not şartı yok, 1 kez")
+ Y1 -- "hayır" --> Y2{"Not ortalaman
yüksek mi?"}
+ Y2 -- "evet, bölümü bırakacağım" --> E2("Not ortalamasıyla yatay geçiş
3. ve 5. yarıyıl
kontenjan sınırlı")
+ Y2 -- "evet, bölümü bırakmayacağım" --> E3("Çift anadal / yandal
ikinci diploma veya sertifika")
+ Y2 -- "hayır" --> E4("Yeniden YKS
her zaman açık,
1 yıl maliyeti var")
+
+ classDef uyari fill:#fef3c7,stroke:#f59e0b,color:#92400e
+ classDef garanti fill:#d1fae5,stroke:#10b981,color:#065f46
+ classDef hayal fill:#fee2e2,stroke:#ef4444,color:#991b1b
+ class E1,E3 garanti
+ class Y1,Y2,E2 uyari
+ class E4 hayal
+```
+
+## 1) Merkezi yerleştirme puanıyla yatay geçiş (Ek Madde 1)
+
+En çok merak edilen ve en yanlış bilinen yol. Mantığı basit: **kayıt olduğun yıldaki YKS puanın**, geçmek istediğin programın **aynı yıldaki taban puanına** eşit ya da ondan yüksekse başvurabilirsin.
+
+Bilmen gereken çerçeve:
+
+- **Not ortalaması şartı aranmaz.** Değerlendirmede yalnızca yerleştiğin yıldaki merkezi yerleştirme puanların dikkate alınır.
+- **Puan türü tutmalı.** Hedef programın puan türünde bir puanın olmalı ve o puan hedefin tabanını geçmeli.
+- **Bu haktan bir kez yararlanılır.**
+- **Her üniversite kendi duyurusunu yayımlar.** Başvuru takvimi, istenen belgeler ve varsa ek koşullar okulun öğrenci işleri sayfasında ilan edilir. "Ek Madde 1" veya "merkezi yerleştirme puanıyla yatay geçiş" başlığıyla ararsın.
+
+Pratik sonuç: bu yol, **puanı yettiği hâlde listeyi yanlış kurduğu için aşağı bir programa düşenler** için gerçek bir ikinci şanstır. Puanı zaten yetmeyenler için bir şey değiştirmez. Yani "sonra yatay geçerim" cümlesi, ancak puanın hedefe zaten yetiyorsa anlamlıdır — ki o durumda en baştan doğru listeyi kurmak çok daha kolaydı. [Tercih listesi nasıl yapılır](/rehber/tercih-listesi-nasil-yapilir) yazısı bu hatayı baştan önlemek için var.
+
+## 2) Not ortalamasıyla yatay geçiş
+
+Klasik yatay geçiş. Genel çerçevesi şöyle: lisans programlarında **üçüncü ve beşinci yarıyıl** başında, önlisansta ise ikinci ve üçüncü yarıyılda, **eşdeğer programlar** arasında, **kontenjan dahilinde** yapılır. Not ortalaması şartı vardır ve başvurular genel not ortalamasına göre sıralanır.
+
+Kritik farklar:
+
+- **Kurum içi geçiş genelde daha kolaydır.** Üniversiteden memnunsan ama bölümden değilsen, aynı okul içinde geçiş şartları çoğunlukla daha esnektir.
+- **Kontenjan azdır.** Popüler programlara yatay geçiş kontenjanı bazen tek hanelidir; başvuranlar arasında en yüksek ortalamalar kazanır.
+- **Ders intibakı sürprizli olabilir.** Geçtiğin bölümdeki derslerin hangilerinden muaf sayılacağına ilgili fakültenin muafiyet ve intibak komisyonu karar verir. Muaf sayılmayan dersler mezuniyetini uzatabilir.
+- **Hazırlık sınıfı yarıyıl sayılmaz.** Hazırlıkta yatay geçiş yapılmaz; en az bir yarıyıl lisans eğitimi tamamlaman gerekir. [Hazırlık sınıfı ve öğretim dili](/rehber/hazirlik-sinifi-ve-ogretim-dili) yazısında hazırlığın süreye etkisi anlatılıyor.
+
+## 3) Çift anadal (ÇAP) ve yandal
+
+Bunlar "kaçış" değil, **ekleme** yollarıdır: mevcut bölümünü bırakmadan ikinci bir programın derslerini alırsın.
+
+- **Çift anadal:** İki ayrı diplomayla mezun olursun. Genellikle belirli bir genel not ortalaması ve kendi sınıfında belirli bir başarı dilimi şartı aranır; iki programın toplam ders yükü ciddi bir tempodur.
+- **Yandal:** Diploma değil, sertifika alırsın. Şartları çift anadaldan hafiftir, ders yükü daha azdır.
+
+Eşik değerler ve hangi bölümler arası açıldığı **üniversitenin kendi yönetmeliğinde** yazar ve okuldan okula değişir. Kararı verirken şuna bak: [İşletme](/bolum/isletme) okuyup [Bilgisayar Mühendisliği](/bolum/bilgisayar-muhendisligi) ÇAP'ı yapmak gibi kombinasyonlar ancak o üniversitede açıksa mümkündür. Tercih aşamasında merak ediyorsan üniversitenin "çift anadal programları" listesine bak — bu, geniş üniversitelerin sessiz avantajıdır.
+
+## 4) Yeniden sınava girmek
+
+Her zaman açık olan yol. Ama şu üç şeyi baştan bil:
+
+- Bir yıl maliyeti vardır ve bu yıl geri gelmez.
+- Bir yükseköğretim programına kayıtlıysan, ertesi yıl yerleştiğinde eski kaydın silinir; ayrıca kayıtlı olmanın OBP ve bazı programların koşulları açısından sonuçlarını [tercih takvimi](/rehber/yks-tercih-takvimi-2026) ve kılavuz üzerinden kontrol etmelisin.
+- Sıralamanın ikinci yılda otomatik olarak yükseleceği garantisi yoktur.
+
+[Yerleşemedim ya da istemediğim bölüme yerleştim](/rehber/yerlesemedim-ne-yapmaliyim) yazısı bu kararı bütün seçenekleriyle birlikte ele alıyor.
+
+## Peki liste kurulurken bu yollar nasıl hesaba katılır?
+
+Tek cümleyle: **hesaba katılmaz.** Listeyi, "buraya yerleşirsem burada okurum" varsayımıyla kur. Yatay geçiş, ÇAP ve yeniden sınav, listeyi gevşetmek için değil, iş ters giderse elinde kalan yollar için vardır.
+
+Somut kural: kayıt yaptırmayacağın bir programı "nasıl olsa geçerim" diye listeye yazma — bu tam olarak [ölü tercih](/rehber/olu-tercih-nedir) mantığındaki hatadır ve yerleşirsen ek yerleştirme hakkın da yanar.
+
+Sıralamanın gerçekten nereye yettiğini görüp listeyi baştan doğru kurmak için [tercih robotuna](/tercih-robotu) sıralamanı gir; hayal, dengeli ve garanti bloklarını tek ekranda görürsün.
diff --git a/content/rehber/yurt-burs-ve-yillik-maliyet.md b/content/rehber/yurt-burs-ve-yillik-maliyet.md
new file mode 100644
index 0000000..0decb06
--- /dev/null
+++ b/content/rehber/yurt-burs-ve-yillik-maliyet.md
@@ -0,0 +1,72 @@
+---
+baslik: Yurt, Burs ve Yıllık Maliyet — Tercih Listesinin Görünmeyen Kolonu
+aciklama: Tercih tablosunda maliyet kolonu yok, ama listeyi asıl eleyen o. Barınma, burs ve dört yıllık toplam hesabı — tek şemada.
+tarih: 2026-07-29
+---
+
+Tercih tablosunda kontenjan var, taban var, tür var — ama **maliyet kolonu yok.** Oysa her yıl binlerce öğrenci yerleştiği yere maliyet yüzünden kayıt yaptıramıyor ya da ikinci dönem şehir değiştirmek zorunda kalıyor. Bu yazı o eksik kolonu doldurmak için: barınma, burs ve dört yıllık gerçek hesap.
+
+## Bir satırın gerçek maliyeti
+
+```mermaid
+%% aria: Tercih satırının gerçek maliyeti şeması. Bir programın yıllık maliyeti üç kalemden oluşur. Birincisi öğrenim ücreti: devlet üniversitesi birinci öğretimde normal sürede ücret yoktur, ikinci öğretimde ve süre aşımında katkı payı çıkar; vakıf üniversitesinde burslu programlarda ücret yok, indirimli ve ücretli programlarda ücret vardır. İkincisi barınma: aile yanında kalınıyorsa maliyet en düşüktür, devlet yurdunda orta, özel yurt veya öğrenci evinde en yüksektir. Üçüncüsü yaşam giderleri: yemek, ulaşım, kırtasiye ve şehre gidiş gelişler. Bu üç kalemin toplamı yıllık maliyettir ve öğrenim süresiyle çarpılır. Çıkan sayı ailenin karşılayabileceği tutarın üstündeyse satır listeye yazılmaz veya burslu eşdeğeri aranır. Altındaysa satır listede kalır.
+%% altyazi: Ücret kaleminin sıfır olması maliyetin sıfır olduğu anlamına gelmiyor — asıl fark barınmada.
+flowchart TD
+ P("Bir tercih satırı") --> U("1. Öğrenim ücreti
devlet 1. öğretim: yok
vakıf burslu: yok
indirimli / ücretli: var")
+ P --> B("2. Barınma
aile yanı en düşük
devlet yurdu orta
özel yurt / ev en yüksek")
+ P --> Y("3. Yaşam
yemek, ulaşım,
kırtasiye, şehir arası yol")
+ U --> T("Yıllık toplam
x öğrenim süresi")
+ B --> T
+ Y --> T
+ T --> K{"Aile bütçesi
bu tutarı taşır mı?"}
+ K -- "evet" --> L("Satır listede kalır")
+ K -- "sınırda" --> S("Burslu / yurdu güçlü
eşdeğerini de listeye ekle")
+ K -- "hayır" --> C("Satırı yazma:
yerleşirsen kayıt
yaptıramazsın")
+
+ classDef uyari fill:#fef3c7,stroke:#f59e0b,color:#92400e
+ classDef garanti fill:#d1fae5,stroke:#10b981,color:#065f46
+ classDef hayal fill:#fee2e2,stroke:#ef4444,color:#991b1b
+ class L garanti
+ class K,S,T uyari
+ class C hayal
+```
+
+## Kalem 1: Öğrenim ücreti
+
+- **Devlet üniversitesi, birinci öğretim:** Normal öğrenim süresi içinde öğrenim ücreti alınmaz. Süreyi aşarsan veya ikinci öğretimde okursan katkı payı/öğrenim ücreti gündeme gelir. Uzaktan öğretim programlarının kendi ücretlendirmesi vardır.
+- **Vakıf üniversitesi:** Aynı bölümün burslu, %50 indirimli, %25 indirimli ve ücretli varyantları **ayrı programlardır**; ayrı kontenjan, ayrı taban, ayrı fiyat. Burslu programda öğrenim ücreti yoktur. [Devlet mi vakıf mı](/rehber/devlet-mi-vakif-mi) yazısı bu tabloyu okumayı anlatıyor.
+- **Bursun sürme koşulu:** Vakıf burslarının çoğu giriş bursudur ve süresizdir, ama bazı okullarda not ortalaması şartı vardır. Üniversitenin **burs yönergesini** tercih etmeden önce oku — bu tek belge dört yıllık planını değiştirebilir.
+- **Hazırlık yılı:** Hazırlık okuyacaksan bu yılın ücret ve barınma maliyetini de hesaba kat. [Hazırlık sınıfı ve öğretim dili](/rehber/hazirlik-sinifi-ve-ogretim-dili) yazısı hangi programlarda hazırlığın zorunlu olduğunu anlatıyor.
+
+## Kalem 2: Barınma — asıl fark burada
+
+Devlet üniversitesi + büyükşehir kirası, bazen vakıf burslusu + yurt kombinasyonundan pahalıya gelir. İki satırı karşılaştırırken ücrete değil, **toplam yıllık çıkışa** bak.
+
+Barınma seçenekleri ve tercih aşamasında bakman gerekenler:
+
+- **Devlet yurdu (KYK):** Başvurular yerleştirme sonuçları açıklandıktan sonra e-Devlet üzerinden alınır; burs ve öğrenim kredisi başvuruları ise ayrı bir takvimde açılır. Tarihler her yıl Gençlik ve Spor Bakanlığı tarafından duyurulur, sabit değildir — sonuç açıklandığında resmî duyuruyu takip et. **Yerleştirilme garanti değildir**, öncelik kriterleri vardır.
+- **Üniversitenin kendi yurdu:** Özellikle vakıf üniversitelerinde kampüs içi yurt kapasitesi ve fiyatı okulun sitesinde yazar. Kapasite küçükse birinci sınıfta yer bulmak zorlaşır.
+- **Özel yurt / öğrenci evi:** En pahalı ve en değişken kalem. Aynı şehirde kampüse yürüme mesafesindeki fiyatla, 40 dakika uzaktaki fiyat arasında ciddi fark olur.
+- **Aile yanı:** Kendi şehrindeki bir üniversiteyi tercih etmenin ekonomik ağırlığı budur. Bu seçenek elindeyse, listedeki diğer satırların "prim"ini bunun üstüne koyarak düşün: bu program, yılda şu kadar ek maliyeti hak ediyor mu?
+
+Pratik bir kontrol: **kampüsün şehir merkezine uzaklığı**. Şehir dışı kampüslerde kira ucuz ama ulaşım ve zaman maliyeti yüksektir; merkezdeki kampüslerde tam tersi.
+
+## Kalem 3: Yaşam giderleri
+
+Yemek, ulaşım, kırtasiye ve — sık unutulan — **eve gidiş geliş**. Memleketine ayda bir gidecek bir öğrenci için otobüs/uçak parası yılda ciddi bir kalem olur. Şehir seçerken ulaşım hattının varlığına da bak.
+
+## Dört yıllık toplamı çıkarmanın en hızlı yolu
+
+Listeye ciddi olarak yazacağın her satır için üç sayı yaz: **yıllık öğrenim ücreti + yıllık barınma + yıllık yaşam.** Toplamı öğrenim süresiyle (hazırlık varsa +1 yıl) çarp. [Tıp](/bolum/tip) gibi altı yıllık programlarda bu çarpan tek başına belirleyici olabilir.
+
+Sonuç üç kutudan birine düşer:
+
+- **Rahat taşınıyor:** Satır listede kalır.
+- **Sınırda:** Satırı listede tut ama aynı bölümün burslu ya da yurdu güçlü bir eşdeğerini de listeye ekle. Böylece iki senaryoya da hazırlıklı olursun.
+- **Taşımıyor:** Satırı yazma. "Yerleşirsem bir çaresine bakarız" en pahalı cümledir: yerleştiğin an [ek yerleştirme](/rehber/ek-yerlestirme-2026) hakkın da yanar ve elinde kayıt yaptıramayacağın bir program kalır.
+
+## Bu konuşmayı listeyi vermeden önce yap
+
+Maliyet konuşması tercih listesinin **girdisidir**, sonucu değil. Sonuçlar açıklandıktan sonra yapılan "biz bunu ödeyemeyiz" konuşması bir yıl kaybettirir. [Veliler için tercih rehberi](/rehber/veliler-icin-tercih-rehberi) yazısında bu konuşmanın nasıl yapılacağı ve görev dağılımı var.
+
+Sıralamana düşen programları devlet/vakıf ve şehir filtreleriyle daraltıp maliyet senaryolarını yan yana görmek için [tercih robotuna](/tercih-robotu) sıralamanı girebilirsin.
diff --git a/data/app.db b/data/app.db
index 54927f3..14ae88f 100644
Binary files a/data/app.db and b/data/app.db differ
diff --git a/docs/urun/prd-kapi1-ucretsiz-funnel.md b/docs/urun/prd-kapi1-ucretsiz-funnel.md
new file mode 100644
index 0000000..e96e437
--- /dev/null
+++ b/docs/urun/prd-kapi1-ucretsiz-funnel.md
@@ -0,0 +1,189 @@
+# Kapı 1 Güçlendirme PRD — Ücretsiz Değerden Ücretli Akışa
+
+> Durum: Taslak v1 · Sahip: Bilal · Tarih: 6 Ağustos 2026
+> Gösterim: 🔶 Varsayım (makul ama doğrulanmamış) · 🔵 Açık soru (keşif gerekiyor)
+
+## 1. Yönetici Özeti
+
+Sıralamasını girip `/sonuc`'u gören anonim YKS öğrencisine, giriş yapmadan önce ürünün asıl farklılaştırıcı değerini (yapay zekâ gerekçeli tercih satırı) tattıran ve harcadığı emeği (manuel liste + sihirbaz profili) "kaydet, kaybetme" gerekçesiyle girişe bağlayan bir deneyim kuruyoruz. Amaç **Kapı 1 dönüşümünü (sıra girişi → giriş)** artırmak; kapı ölçümleri ve kredi-bitti e-posta dönüşüyle döngüyü kapatmak. Fiyat ve kredi kurgusu (299 TL paket, 5 deneme kredisi, 3 kredi/liste) bu PRD'de sabittir.
+
+## 2. Problem Tanımı
+
+### Problemi kim yaşıyor?
+Sıralamasını girip ücretsiz tabloyu gören ama giriş yapmayan anonim öğrenciler (ve ödemeyi çoğu zaman onaylayan velileri).
+
+### Problem ne?
+1. **Ürünün asıl değeri kapıdan önce görünmüyor.** Anonim kullanıcı `/sonuc`'ta yalnızca ham YÖK tablosunu görüyor; "yapay zekâ gerekçeli liste"nin nasıl bir şey olduğunu giriş yapıp 3 kredi harcayana kadar hiç tatmıyor. `?hazir=1` panelinin ikna gücü tamamen metne dayanıyor (`src/app/sonuc/sihirbaz-cagri-karti.tsx:262-292`).
+2. **Kullanıcı emeği uçucu.** Manuel 24'lük liste ve sihirbaz profili yalnızca localStorage'da (`src/components/manuel-liste/store.ts:16`, `src/lib/sihirbaz.ts:36`); cihaz/tarayıcı değişince kayboluyor ve "listeni kaydet" doğal giriş gerekçesi olarak kullanılmıyor.
+3. **Kapılarda ölçüm yok.** `hazir=1` panel gösterimi, paywall/kilit satır görüntülenmesi ve kredi bitişi için event yok (`src/lib/analitik.ts:14-25`'teki union'da karşılıkları yok). Hangi kapıda ne kadar döküldüğü bilinmiyor.
+4. **Kredisi biten kullanıcı çıkmaz sokakta.** 5 deneme kredisi tam 1 liste + 2 soruya yetiyor; sonrasında ödeme yoksa kullanıcıyı geri çağıran hiçbir mekanizma yok.
+
+### Neden acı verici?
+- **Kullanıcı:** Tercih dönemi kısa ve stresli; değer görmeden hesap açmak ekstra sürtünme. Emeğinin kaybolması güveni zedeliyor.
+- **İş:** Kapı 1 funnel'ın en kalabalık geçişi — burada kaybedilen her kullanıcı, alttaki ödeme dönüşümüne hiç ulaşmıyor. Ölçüm olmadığı için iyileştirme de doğrulanamıyor.
+
+### Kanıt
+- Kod: maskeleme sunucuda, anonim tarafta hiç AI çıktısı yok (`src/lib/rapor-maske.ts`); liste/profil client-only; event listesi eksik.
+- 🔶 Kapı 1 dönüşümünün düşük olduğu varsayımdır — baseline yok. (Bu, ölçüm iş paketinin kendisini gerekçelendiriyor: İP-A önce baseline kurar.)
+- 🔵 Rybbit'te mevcut `sira_girildi` → `giris_denendi` oranına bakılarak kaba bir baseline bugün çıkarılabilir mi?
+
+## 3. Hedef Kullanıcılar ve Personalar
+
+### Birincil: Sıralı Öğrenci
+- YKS sonucu açıklanmış, elinde sıralaması var; tercih penceresi ~2 hafta.
+- Mobil ağırlıklı, hızlı ve güven veren bir cevap arıyor; hesap açmaya karşı sürtünme eşiği yüksek.
+- Davranış: sıralamasını girer, tabloyu karıştırır, birkaç program ekler, sekmesini kapatır — geri gelmesi garantili değil.
+
+### İkincil: Veli
+- Ödemenin fiili onaycısı; "danışman 2.000–10.000 TL, bu 299 TL" karşılaştırmasına duyarlı.
+- Çocuğunun kurduğu listeyi görmek ve güvenilirlik sinyali (gerekçe, risk notu) ister.
+
+## 4. Stratejik Bağlam
+
+- **İş hedefi:** Tek seferlik 299 TL'lik ürünün geliri doğrudan Kapı 1 hacmiyle çarpılır; funnel'ın en üst geçişini iyileştirmek alttaki her adıma bileşik etki yapar.
+- **Neden şimdi:** Ürün sezonluk — yoğunluk tercih döneminde. Sezon öncesi funnel'ın oturması gerekiyor; sezon içinde büyük değişiklik riskli.
+- **Rekabet:** İnsan danışmanlar (2.000–10.000 TL) ve ücretsiz robotlar. Farklılaştırıcı, gerekçeli + risk analizli liste; bu değer şu an kapının arkasında saklı.
+
+## 5. Çözüm Özeti — 4 İş Paketi
+
+> Sıralama bilinçli: önce ölç (A), sonra değeri göster (B), emeği bağla (C), teaser'ı parlat (D).
+
+### İP-A · Kapı ölçümü (temel)
+Funnel'ın üç kapısına gösterim/sonuç event'leri eklenir; Kapı 1 baseline'ı kurulur.
+- Yeni event'ler (`OlayAdi` union'ına): `hazir_panel_goruntulendi`, `giris_cta_tiklandi` (prop: `kaynak`), `kilit_goruntulendi` (paywall satırı/kartı viewport'a girince), `kredi_bitti` (KREDI hatası panelinde).
+- Gösterim event'leri viewport-temelli ve oturum başına 1 kez; `siraKovasi` dışında ham veri gönderilmez (mevcut gizlilik deseni korunur).
+
+### İP-B · Girişsiz yapay zekâ tadımlığı
+Anonim kullanıcı `/sonuc`'ta, kendi sıra kovası + alan tercihine uyan **1 örnek tercih satırını gerçek ürün formatında** (gerekçe + risk notu + trend özeti) görür; hemen altında "24 satırın tamamı için giriş yap — 5 deneme kredin hazır" CTA'sı durur.
+- **Maliyet/istismar tasarımı:** Tadımlık canlı AI çağrısıyla değil, **önceden üretilmiş havuzdan** servis edilir (sıra kovası × alan kombinasyonları için batch üretim; `src/lib/rapor-havuzu.ts` altyapısıyla ilişkisi 🔵 incelenecek). Anonim istek başına LLM maliyeti sıfır, prompt-injection yüzeyi yok.
+- Tadımlık satır, gerçek rapor bileşeniyle (`rapor-listesi.tsx` satır formatı) birebir aynı görünür — "demo" değil "ürünün kendisi" hissi.
+- 🔶 Tek satır yeterli tatma sağlar; 2+ satır ücretsiz değeri fazla büyütüp Kapı 1'i zayıflatabilir (guardrail metriğiyle izlenecek).
+- 🔵 Tadımlık satırın programı nasıl seçilecek? (Kullanıcının manuel listesindeki ilk program mı, kovadaki en popüler program mı?)
+
+### İP-C · Liste kaydetme = giriş gerekçesi
+Manuel liste ve sihirbaz profili girişte sunucuya taşınır; anonim kullanıcıya emeği büyüdükçe "listen yalnızca bu tarayıcıda — kaydet" tetikleyicileri gösterilir.
+- Şema: `savedLists` (userId unique, items JSON, profil JSON) — mevcut `reports` deseniyle aynı upsert yaklaşımı.
+- Girişte merge: localStorage listesi sunucudakiyle birleşir (çakışmada localStorage kazanır, 24 sınırı korunur 🔶).
+- Tetikleyiciler: liste 3+ programa ulaştığında bir kez gösterilen yumuşak banner; "Seçimlerim" panelinde kalıcı satır. Agresif exit-intent popup **yok**.
+- Giriş sonrası dönen kullanıcı listesini her cihazda bulur — ürün "kaydettiğin yer" kimliği kazanır.
+
+### İP-D · Teaser zenginleştirme (ikincil metrik: ödeme dönüşümü)
+Maskeli rapor deneyiminde kilidin "ne sakladığı" daha somutlaştırılır:
+- `uyarilar` tamamen boşaltılmak yerine **1 uyarı açık, kalanı "N uyarı daha kilitli"** göstergesi (`src/lib/rapor-maske.ts:41` değişir; maskeleme sunucuda kalır).
+- Kilit satırı (`rapor-listesi.tsx:331-337`) satır sayısı + kişiye özel içerik iması taşır ("21 satırda senin sıralamana özel gerekçe ve risk notu hazır").
+- Açık satır sayısı `ACIK_SATIR = 3` sabit kalır 🔶 (değiştirme kararı ölçüm sonrası ayrı deney).
+
+### Kullanıcı akışı (hedef durum)
+```
+sıra girildi → /sonuc: ham tablo + TADIMLIK AI SATIRI (B)
+ → manuel liste büyüdükçe "kaydet" tetikleyicisi (C)
+ → sihirbaz biter → hazir=1 paneli [ölçülüyor] (A)
+ → giriş (5 kredi) → liste üretimi → maskeli rapor (zengin teaser, D)
+ → ödeme 299 TL
+ ↳ kredi bitti [ölçülüyor] → 48 saat sonra hatırlatma e-postası (A)
+```
+
+## 6. Başarı Metrikleri
+
+### Birincil
+**Kapı 1 dönüşümü:** `sira_girildi` (tekil oturum) → başarılı giriş oranı.
+- Mevcut: bilinmiyor → İP-A ilk 2 hafta baseline kurar.
+- 🔶 Hedef: baseline'a göre **göreli +%30** (baseline netleşince revize edilir).
+
+### İkincil
+- `hazir_panel_goruntulendi` → `giris_cta_tiklandi` tıklama oranı.
+- Giriş → `liste_olusturuldu` aktivasyon oranı.
+- `kilit_goruntulendi` → `odeme_baslatildi` (İP-D'nin metriği).
+- Kredi-bitti e-postası → geri dönüş oturumu oranı.
+
+### Korkuluk (guardrail)
+- **Ödeme dönüşümü düşmemeli:** tadımlık, ücretsiz katmanı "yeterli" hissettirip paketi kanibalize etmemeli.
+- **AI maliyeti artmamalı:** tadımlık batch-üretim; anonim trafik LLM'e istek atmaz.
+- `/sonuc` LCP/performans gerilemez; ham tablo "her zaman ücretsiz" vaadi korunur.
+
+## 7. Kullanıcı Hikâyeleri ve Gereksinimler
+
+### Epik hipotezi
+Anonim kullanıcıya gerçek ürün formatında bir yapay zekâ tadımlığı gösterip emeğini kaydetme gerekçesiyle girişe bağlarsak, Kapı 1 dönüşümü artar; çünkü kullanıcı bugün ne alacağını görmeden ve emeğini korumak için hiçbir neden olmadan hesap açmaya itiliyor. Başarıyı `sira_girildi → giriş` oranıyla ölçeceğiz.
+
+### Hikâyeler
+
+**A1 — Kapı event'leri.** Ürün sahibi olarak funnel'ın her kapısında gösterim ve sonuç sayısını görmek istiyorum.
+- [ ] `hazir_panel_goruntulendi`, `giris_cta_tiklandi(kaynak)`, `kilit_goruntulendi(yer)`, `kredi_bitti` event'leri `OlayAdi` union'ına eklendi ve ilgili bileşenlerde ateşleniyor.
+- [ ] Gösterim event'leri IntersectionObserver ile, oturum başına en fazla 1 kez.
+- [ ] Ham sıra gönderilmiyor; `siraKovasi` deseni korunuyor.
+
+**A2 — Kredi-bitti dönüş e-postası.** Kredisi biten kullanıcı olarak, listemin beni beklediğini hatırlatan bir e-posta almak istiyorum.
+- [ ] `kredi_bitti` durumuna düşen kullanıcıya 48 saat sonra tek seferlik e-posta (Resend, `eposta.ts` şablon dili).
+- [ ] E-posta `/listem`'e deep-link verir; ödeme baskısı ikinci planda, "3 açık satırın hazır" birinci planda.
+- [ ] 🔵 Gönderim zamanlaması için altyapı: cron/queue mu, giriş anında lazy-check mi?
+- [ ] 🔵 KVKK: işlemsel hatırlatma mı pazarlama izni gerektiren ileti mi — hukuki sınıflandırma netleşecek.
+
+**B1 — Tadımlık satır.** Anonim kullanıcı olarak, sıralamama uygun bir programın yapay zekâ gerekçesini giriş yapmadan görmek istiyorum.
+- [ ] `/sonuc`'ta, sıra kovası + (varsa) sihirbaz alan tercihine uyan 1 tadımlık satır gerçek rapor satırı formatında render edilir.
+- [ ] İçerik önceden üretilmiş havuzdan gelir; anonim istek LLM'e gitmez.
+- [ ] Satırın altında giriş CTA'sı: metin sonunda `ArrowRight`, `Sparkles` yok (CTA kuralı).
+- [ ] Havuzda uygun içerik yoksa bileşen hiç render edilmez (boş/generic tadımlık gösterilmez).
+- [ ] 🔵 Havuz üretim kapsamı: kova × alan kombinasyon sayısı ve tazeleme sıklığı.
+
+**C1 — Liste sunucuya taşınır.** Giriş yapan kullanıcı olarak, anonimken kurduğum listeyi hesabımda bulmak istiyorum.
+- [ ] Girişte localStorage listesi + sihirbaz profili sunucuya merge edilir (çakışmada client kazanır, 24 sınırı aşılmaz).
+- [ ] Farklı cihazdan girişte liste sunucudan yüklenir; localStorage ile iki yönlü senkron kuralı belgelenir.
+- [ ] Merge idempotent — çift giriş çift kayıt üretmez.
+
+**C2 — Kaydet tetikleyicisi.** Anonim kullanıcı olarak, listem büyüdüğünde kaybolabileceğini öğrenmek istiyorum.
+- [ ] Liste 3. programa ulaştığında bir kez yumuşak banner: "Listen yalnızca bu tarayıcıda — giriş yap, kaydet."
+- [ ] "Seçimlerim" panelinde kalıcı "listeni kaydet" satırı.
+- [ ] Banner kapatılabilir; kapatma oturumda kalıcı. Exit-intent popup yok.
+
+**D1 — Zengin teaser.** Maskeli raporu gören kullanıcı olarak, kilidin arkasında ne olduğunu somut görmek istiyorum.
+- [ ] `uyarilar`dan 1 tanesi açık, kalanı "N uyarı daha kilitli" sayacıyla gösterilir; maskeleme sunucuda kalır.
+- [ ] Kilit satırı kişiselleştirilmiş metin taşır (kalan satır sayısı + "senin sıralamana özel").
+- [ ] `?acildi=1` unblur akışı bozulmaz.
+
+### Kısıtlar
+- Maskeleme ve tadımlık seçimi **her zaman sunucuda** — kilitli gerçek içerik client'a asla inmez.
+- Badge/eyebrow, kapatma çarpısı ve CTA ok deseni proje kurallarına uyar (`AGENTS.md`).
+- Sihirbaz/liste mimarisinde davranış değişirse `/meraklisina` şeması aynı commit'te güncellenir (`src/app/meraklisina/huni-semasi.tsx`).
+
+## 8. Kapsam Dışı
+
+- Fiyat, paket yapısı, kredi miktarları (sabit — kullanıcı kararı).
+- Abonelik, ara paket, referral programı.
+- Canlı AI tadımlığı (anonim kullanıcıya gerçek zamanlı LLM çağrısı).
+- Exit-intent popup ve agresif e-posta dizileri.
+- `ACIK_SATIR` sayısını değiştirme (ölçüm sonrası ayrı deney).
+- Mobil uygulama, push notification.
+
+## 9. Bağımlılıklar ve Riskler
+
+### Bağımlılıklar
+- **E-posta:** Resend + `eposta.ts` şablonları hazır; yalnızca yeni şablon + tetikleme mekanizması gerekir.
+- **Tadımlık havuzu:** `rapor-havuzu.ts` mevcut altyapısının kapsamı incelenecek 🔵; batch üretim script'i gerekebilir.
+- **Şema değişikliği:** `savedLists` tablosu (drizzle migration).
+- **`/meraklisina` şema senkronu:** İP-B ve İP-C davranış değiştiriyor → şema + anlatım metni aynı PR'da güncellenir.
+
+### Riskler
+- **Kanibalizasyon:** Tadımlık + zengin teaser ücretsiz deneyimi "yeterli" hissettirebilir. → Korkuluk metriği; tadımlık 1 satırda sabit başlar.
+- **Baseline'sız iterasyon:** A'dan önce B/C/D'ye başlanırsa etki ölçülemez. → İP-A her zaman önce gider; B/C/D en az 2 hafta baseline'dan sonra açılır 🔶.
+- **Merge karmaşası (C1):** İki cihazda farklı listeler → sessiz veri kaybı algısı. → Çakışma kuralı basit ve tek yönlü tutulur, edge case'ler kabul kriterlerinde.
+- **Sezon zamanlaması:** Yoğun dönemde funnel değişikliği riskli. → Sezon öncesi yayın; sezon içi yalnızca metin/ölçüm ayarı.
+- **KVKK/e-posta:** Hatırlatma e-postasının hukuki sınıfı belirsiz 🔵 → netleşene dek A2 yalnızca işlemsel dille yazılır.
+
+## 10. Açık Sorular
+
+1. 🔵 Rybbit'teki mevcut event'lerden bugün kaba bir Kapı 1 baseline'ı çıkarılabilir mi (`sira_girildi` vs `giris_denendi` tekil oranı)?
+2. 🔵 Tadımlık satırın program seçimi: manuel listedeki ilk program mı, kova için önceden seçilmiş popüler program mı?
+3. 🔵 `rapor-havuzu.ts` bugün ne yapıyor; tadımlık havuzu onun üstüne mi kurulur?
+4. 🔵 Kredi-bitti e-postası için zamanlama altyapısı (cron vs lazy-check) ve KVKK sınıfı.
+5. 🔵 `savedLists` mi yoksa mevcut `reports.params` üzerinde genişletme mi — şema kararı.
+6. 🔶 +%30 göreli hedef baseline sonrası revize edilecek.
+
+---
+
+## Öz Değerlendirme (şablon gereği)
+
+- **En güçlü bölüm:** Problem tanımı — kod referanslarıyla somut.
+- **En zayıf bölüm:** Başarı metrikleri — baseline yok; hedefler İP-A tamamlanana dek varsayımsal.
+- **Önce doğrulanacak varsayımlar:** (1) Kapı 1 dönüşümünün gerçekten düşük olduğu, (2) tek satır tadımlığın kanibalize etmeden ikna ettiği.
+- **Önerilen ilk adım:** İP-A'yı uygula (küçük, risksiz, 1-2 gün) + Rybbit'ten retrospektif baseline denemesi; 2 hafta veriyle B/C önceliği netleştir.
diff --git a/package.json b/package.json
index d920f6a..aff1f2b 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,9 @@
"ingest": "tsx scripts/ingest.ts",
"refresh": "tsx scripts/refresh.ts",
"detay": "tsx scripts/detay.ts",
- "logolar": "tsx scripts/logo-indir.ts"
+ "logolar": "tsx scripts/logo-indir.ts",
+ "db:push": "drizzle-kit push",
+ "tadimlik": "tsx scripts/tadimlik-uret.ts"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.112.4",
diff --git a/scripts/tadimlik-uret.ts b/scripts/tadimlik-uret.ts
new file mode 100644
index 0000000..f9d2ec0
--- /dev/null
+++ b/scripts/tadimlik-uret.ts
@@ -0,0 +1,263 @@
+/**
+ * Tadımlık havuzu batch üretimi: kova × puan türü × (kategori + "genel")
+ * kombinasyonları için 1'er örnek tercih satırı (gerekce/riskNotu/trendOzeti)
+ * üretip app.db'deki tadimlik_havuzu tablosuna yazar.
+ *
+ * pnpm tadimlik # boş anahtarları doldurur (idempotent)
+ * pnpm tadimlik --force # mevcut satırları da yeniden üretir
+ * pnpm tadimlik --kova=10-50k --tur=say --kategori=muhendislik-teknoloji
+ * pnpm tadimlik --mock # anahtar olsa da mock metin (dev/test)
+ * pnpm tadimlik --bekleme=13000 # LLM çağrıları arası bekleme (ms)
+ *
+ * AI anahtarı yoksa (dev) mock metin üretir — akış uçtan uca test edilebilir.
+ * Gemini ücretsiz katmanı dakikada ~5 istek kabul eder; gerçek üretimde
+ * --bekleme=13000 gibi bir tempo kullan.
+ * Anonim trafik LLM'e asla istek atmaz; tek maliyet bu script'in koşusudur.
+ */
+import { randomUUID } from "node:crypto";
+import { existsSync, readFileSync } from "node:fs";
+import { z } from "zod";
+import { appDb, schema } from "../src/lib/appdb";
+import { dilimAra, type DilimKey, type Program, type PuanTuruKey, PUAN_TURLERI } from "../src/lib/db";
+import { KATEGORILER, kategoriEslesir } from "../src/lib/kategoriler";
+import { havuzuKompaktJson, turLabel } from "../src/lib/rapor-havuzu";
+import { GENEL_KATEGORI, KOVALAR, kategoriSlugBul } from "../src/lib/tadimlik-havuzu";
+import { anahtarVar } from "../src/lib/ai/client";
+import { yapilandirilmisUret } from "../src/lib/ai/cagri";
+
+// Next dışında koşuyoruz; .env dosyalarını elle yükle (mevcut env kazanır).
+function envYukle(dosya: string): void {
+ if (!existsSync(dosya)) return;
+ for (const satir of readFileSync(dosya, "utf8").split("\n")) {
+ const m = satir.match(/^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/);
+ if (m && process.env[m[1]] === undefined) {
+ process.env[m[1]] = m[2].replace(/^"(.*)"$/, "$1").trim();
+ }
+ }
+}
+envYukle(".env.local");
+envYukle(".env");
+
+const TadimlikSchema = z.object({
+ gerekce: z.string(),
+ riskNotu: z.string(),
+ trendOzeti: z.string(),
+});
+
+// rapor.ts'teki SISTEM kurallarının tek satırlık versiyonu.
+const SISTEM = `Sen KolayTercih'in kıdemli YKS tercih danışmanısın. Sana GERÇEK
+YÖK Atlas verisiyle TEK bir program ve temsili bir aday tanımı verilecek; bu
+program için tercih listesi satırı metinleri üreteceksin.
+
+KURALLAR (kesin):
+- METİN DİYETİ: her alan TEK kısa cümle, dolgu söz yok.
+- gerekce: bu programın bu aday için neden mantıklı olduğu (TEK cümle,
+ en fazla ~15 kelime, Türkçe).
+- riskNotu: yerleşme ihtimali değerlendirmesi (TEK kısa cümle). ASLA "garanti",
+ "kesin", "yüzde yüz" deme; "yüksek/orta/düşük ihtimal" dili kullan.
+- trendOzeti: son 4 yılın taban sıralaması hareketi, TEK cümle (ör. "2022'den
+ beri taban 45B'den 38B'ye indi, bölüm zorlaşıyor").
+- Adayın sıralaması yaklaşıktır; kesin sıra telaffuz etme, banda göre konuş.`;
+
+function mockAktif(): boolean {
+ if (process.argv.includes("--mock")) return true;
+ return process.env.NODE_ENV !== "production" && !anahtarVar();
+}
+
+function mockMetin(p: Program, temsiliSira: number, kategori: string | null) {
+ return {
+ gerekce: `(Dev mock) ${p.isim}, ${kategori ? `${kategori} ilgisiyle ve ` : ""}~${temsiliSira.toLocaleString("tr-TR")} bandındaki sıralamanla uyumlu bir aday.`,
+ riskNotu:
+ "(Dev mock) Taban sıralaması senin civarında; orta-yüksek ihtimalle yerleşilebilir.",
+ trendOzeti:
+ "(Dev mock) Son 4 yılda taban sıralaması görece stabil seyretti.",
+ };
+}
+
+/** rapor.ts programBilgisi ile aynı snapshot şekli. */
+function programBilgisi(p: Program) {
+ const gecmis = [p.sira2021, p.sira2022, p.sira2023, p.sira2024, p.sira2025];
+ return {
+ isim: p.isim,
+ universite: p.universite,
+ il: p.il,
+ unitur: p.unitur,
+ efektifSira: p.sira2025 ?? p.sira2024,
+ siraGecmisi: gecmis.some((s) => s != null) ? gecmis : undefined,
+ };
+}
+
+/**
+ * Deterministik program seçimi: kovanın temsili sırası için "dengeli" dilimden
+ * (boşsa "garanti") kategoriye uyan, 2025'te en çok yerleşen alan program.
+ * Tanınır/dolu programlar tadımlıkta daha ikna edici.
+ */
+function programSec(
+ temsiliSira: number,
+ tur: PuanTuruKey,
+ kategori: string | null,
+): { program: Program; dilim: DilimKey } | null {
+ for (const dilim of ["dengeli", "garanti"] as const) {
+ const { programlar } = dilimAra(temsiliSira, tur, dilim, { limit: 60 });
+ const uygunlar = kategori
+ ? programlar.filter((p) => kategoriEslesir(p.isim, [kategori]))
+ : programlar;
+ if (uygunlar.length === 0) continue;
+ const secilen = [...uygunlar].sort(
+ (a, b) => (b.yerlesen2025 ?? -1) - (a.yerlesen2025 ?? -1),
+ )[0];
+ return { program: secilen, dilim };
+ }
+ return null;
+}
+
+async function metinUret(
+ p: Program,
+ dilim: DilimKey,
+ temsiliSira: number,
+ tur: PuanTuruKey,
+ kategori: string | null,
+): Promise
+ {hasPaket + ? "Liste üretimi 3 kredi. +30 kredi yüklediğinde listen ve sohbet geçmişin duruyor, kaldığın yerden devam edersin." + : "Liste üretimi 3 kredi. Tercih Dönemi Paketi'yle 60 kredi, tam liste, PDF ve revizyon hakları birlikte gelir."} +
+ ++ {durum.mesaj} +
+ + {profil ? ( ++ Seçimlerin kayıtlı —{" "} + + sonuç sayfasına dönebilirsin + + . +
+ ) : null} ++ {URETIM_MESAJLARI[mesajIdx]} +
++ Bu işlem yarım dakika kadar sürebilir, sayfayı kapatma. +
+