init
Release Please / release-please (push) Failing after 4m2s
Web CI / web typecheck + build (push) Successful in 3m39s
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 1h1m49s
CodeQL Analysis / Analyze (go) (push) Failing after 1h1m49s

This commit is contained in:
redlineo committed 2026-07-13 10:14:00 +03:00
commit d295c7f139
1527 files changed
+270726

No files matched your search

+118
View File
@@ -0,0 +1,118 @@
# career-ops — Türkçe Modlar (`modes/tr/`)
Bu klasör, Türkiye iş piyasasında iş arayanlar veya Türkçe ilanlarla çalışanlar için career-ops modlarının Türkçe çevirilerini içerir.
## Ne Zaman Kullanılır?
Aşağıdaki koşullardan en az biri geçerliyse `modes/tr/` kullan:
- Ağırlıklı olarak **Türkçe iş ilanlarına** başvuruyorsun (Kariyer.net, Yenibiris.com, Secretcv.com, LinkedIn TR)
- **CV dilinin** Türkçe olmasını veya ilana göre TR/EN arasında geçiş yapmayı istiyorsun
- **Doğal Türkçe** yanıtlar ve ön yazılar gerekiyor — makine çevirisi değil
- **Türkiye'ye özgü sözleşme maddeleriyle** uğraşman gerekiyor: kıdem tazminatı, ihbar süresi, SGK, net/brüt maaş farkı, yemek kartı, TÜFE zammı
İlanların çoğu İngilizce ise standart `modes/` klasörünü kullanmaya devam et.
## Nasıl Etkinleştirilir?
### Yol 1 — Oturum bazında, komutla
Oturumun başında Claude'a açıkça söyle:
> "Bundan sonra `modes/tr/` altındaki Türkçe modları kullan."
veya
> "Değerlendirme ve başvuruları Türkçe yap — `modes/tr/_shared.md` ve `modes/tr/is-ilani.md` kullan."
### Yol 2 — Kalıcı olarak, profil üzerinden
`config/profile.yml` dosyasına dil tercihini ekle:
```yaml
language:
primary: tr
modes_dir: modes/tr
```
Ardından ilk oturumda Claude'a bu ayarı hatırlat ("profile.yml'e baktım, `language.modes_dir` ayarlanmış"). Bundan sonra Claude otomatik olarak Türkçe modları kullanır.
## Mevcut Modlar
| Dosya | Kaynak | Amaç |
|-------|--------|------|
| `_shared.md` | `modes/_shared.md` (EN) | Paylaşılan bağlam, arketipler, global kurallar, Türkiye piyasa özelinde terimler |
| `is-ilani.md` | `modes/oferta.md` (ES) | Tek bir ilanın tam değerlendirmesi (Bloklar A-G) |
| `basvuru.md` | `modes/apply.md` (EN) | Başvuru formu için canlı asistan |
| `pipeline.md` | `modes/pipeline.md` (ES) | URL gelen kutusu / biriktirilmiş ilanlar için ikinci beyin |
Diğer modlar (`scan`, `batch`, `pdf`, `tracker`, `auto-pipeline`, `deep`, `contacto`, `ofertas`, `project`, `training`) İngilizce/İspanyolca orijinalleriyle çalışmaya devam eder — içerikleri büyük ölçüde araç komutları, dosya yolları ve yapılandırma talimatlarından oluştuğundan dilden bağımsız kalmaları tercih edilmiştir.
## Türkiye'ye Özgü Piyasa Kapsamı
`_shared.md` dosyası aşağıdaki Türkiye'ye özgü kavramları kapsar:
- **SGK** — Sosyal güvenlik primleri ve brüt/net maaş hesabı
- **Kıdem tazminatı** — Her hizmet yılı için yasal tazminat
- **İhbar süresi** — Kanuni bildirim süreleri (2-8 hafta, kıdeme göre)
- **Deneme süresi** — Yasal maksimum 2 ay
- **Yıllık izin** — Kıdeme göre 14-26 gün yasal minimum
- **Prim/Bonus** — Performans primleri
- **Yemek kartı** — Ticket Restaurant, Sodexo, Multinet gibi kartlar
- **Özel sağlık sigortası** — SGK'ya ek sigorta (premium yan hak)
- **Servis** — İşveren ulaşımı
- **TÜFE zammı** — Enflasyona endeksli yıllık zam
- **İş Kanunu No. 4857** — Temel iş kanunu referansı
## Türkçe Olmayan Terimler
Kasıtlı olarak çevrilmedi — standart teknik kelime dağarcığı:
- `cv.md`, `pipeline`, `tracker`, `report`, `score`, `archetype`, `proof point`
- Araç adları (`Playwright`, `WebSearch`, `WebFetch`, `Read`, `Write`, `Edit`, `Bash`)
- Takipçideki durum değerleri (`Evaluated`, `Applied`, `Interview`, `Offer`, `Rejected`)
- Kod parçacıkları, dosya yolları, komutlar
Modlar, İstanbul ve Ankara'daki gerçek mühendislik ekiplerinde konuşulduğu gibi Türkçe teknik dil kullanır: Türkçe akıcı metin, yaygın kullanımda yerleşmiş İngilizce teknik terimler. "Pipeline" kelimesinin zorla "boru hattı"na çevrilmesi gibi uygulamalardan kaçınılmıştır.
## Kelime Kılavuzu
Modları özelleştirirken veya genişletirken bu kelime dağarcığına uy — tutarlı bir ton sağlar:
| İngilizce | Türkçe (bu kod tabanında) |
|-----------|--------------------------|
| Job posting | İş ilanı |
| Application | Başvuru |
| Cover letter | Ön yazı |
| Resume / CV | Özgeçmiş |
| Salary | Maaş / Ücret |
| Compensation | Tazminat |
| Skills | Beceriler |
| Interview | Mülakat |
| Hiring manager | İşe alım yöneticisi / Hiring Manager |
| Recruiter | İK uzmanı / Recruiter |
| Requirements | Gereksinimler |
| Career history | İş deneyimi |
| Notice period | İhbar süresi |
| Probation | Deneme süresi |
| Annual leave | Yıllık izin |
| Severance pay | Kıdem tazminatı |
| Gross / Net salary | Brüt / Net maaş |
| Social security | SGK |
| Permanent employment | Belirsiz süreli sözleşme |
| Fixed-term employment | Belirli süreli sözleşme |
| Remote / Hybrid | Uzaktan / Hibrit |
| Meal card | Yemek kartı |
| Private health insurance | Özel sağlık sigortası |
| Company shuttle | Servis |
| Inflation adjustment | TÜFE zammı / Enflasyon zammı |
## Katkı
Bir çeviriyi iyileştirmek veya başka bir modu Türkçeleştirmek istersen:
1. `CONTRIBUTING.md`'ye göre bir Issue aç
2. Yukarıdaki kelime kılavuzuna uy — tutarlı ton için
3. Kelimesi kelimesine çeviri değil, anlam ve deyim bakımından doğal çeviri yap
4. Yapısal öğeleri (Blok A-G, tablolar, kod blokları, araç talimatları) aynen koru
5. PR açmadan önce gerçek bir Türkçe ilan (Kariyer.net veya Yenibiris.com) üzerinde test et
+276
View File
@@ -0,0 +1,276 @@
# Ortak Bağlam -- career-ops (Türkçe)
<!-- ============================================================
BU DOSYA OTOMATİK GÜNCELLENEBİLİR. Buraya kişisel veri ekleme.
Özelleştirmeler modes/_profile.md dosyasına gider (hiçbir zaman
otomatik güncellenmez). Bu dosya sistem kurallarını, puanlama
mantığını ve her sürümde gelişen araç yapılandırmasını içerir.
============================================================ -->
## Temel Kaynaklar (Her değerlendirmeden önce MUTLAKA okunacak)
| Dosya | Konum | Ne zaman |
|-------|-------|----------|
| cv.md | `cv.md` (proje kök dizini) | Her zaman |
| article-digest.md | `article-digest.md` (varsa) | Her zaman — ayrıntılı kanıtlar |
| profile.yml | `config/profile.yml` | Her zaman — kişisel bilgiler ve hedef roller |
| _profile.md | `modes/_profile.md` | Her zaman — kullanıcı arketipleri, anlatı, müzakere |
**KURAL: Kanıt noktalarındaki ölçüm değerlerini ASLA sabit kodlama.** Değerlendirme sırasında bunları cv.md + article-digest.md dosyalarından oku.
**KURAL: Makale/proje metrikleri için `article-digest.md`, `cv.md`'ye göre önceliklidir.**
**KURAL: `_profile.md`'yi bu dosyadan SONRA oku. Kullanıcının `_profile.md`'deki özelleştirmeleri buradaki varsayılanları geçersiz kılar.**
---
## Puanlama Sistemi
Değerlendirme 6 blok (A-F) üzerinden yapılır ve 1-5 arası global bir puan verilir:
| Boyut | Ne ölçülüyor |
|-------|-------------|
| CV Eşleşmesi | Beceriler, deneyim ve kanıt noktalarının örtüşmesi |
| North Star Uyumu | Rolün hedef arketiplerle uyumu (`_profile.md`'den) |
| Ücret | Teklifin piyasa konumu (5=üst çeyrek, 1=çok altında) |
| Kültürel Sinyaller | Şirket kültürü, büyüme, istikrar, uzaktan çalışma politikası |
| Kırmızı Bayraklar | Engelleyiciler ve uyarılar (negatif düzeltme) |
| **Global** | Yukarıdakilerin ağırlıklı ortalaması |
**Puan yorumu:**
- 4,5+ → Güçlü eşleşme, hemen başvur
- 4,0-4,4 → İyi eşleşme, başvurmaya değer
- 3,5-3,9 → Kabul edilebilir ama ideal değil; özel bir neden olmadıkça geç
- 3,5'in altı → Başvuru önerilmez (CLAUDE.md'deki Etik Kullanım bölümüne bakın)
## İlan Meşruiyeti (Blok G)
Blok G, ilanın gerçek ve aktif bir açık pozisyon olup olmadığını değerlendirir. 1-5 global puanı **etkilemez** — ayrı bir nitel tespittir.
**Üç seviye:**
- **Güvenilir** — Gerçek, aktif ilan; sinyallerin büyük çoğunluğu olumlu
- **Dikkatli İlerle** — Karma sinyaller; bazı endişe noktaları mevcut
- **Şüpheli** — Birden fazla hayalet ilan göstergesi var; kullanıcı önce araştırmalı
**Temel sinyaller (güvenilirlik ağırlığına göre):**
| Sinyal | Kaynak | Güvenilirlik | Notlar |
|--------|--------|-------------|--------|
| İlan yaşı | Sayfa snapshot | Yüksek | 30 gün altı = iyi, 30-60 gün = karma, 60+ gün = endişe verici (rol tipine göre ayarla) |
| Başvur butonu aktif mi | Sayfa snapshot | Yüksek | Doğrudan gözlemlenebilir gerçek |
| İlanda teknik özgüllük | İlan metni | Orta | Genel ilanlar hayalet ilanla örtüşür ama zayıf yazarlıkla da açıklanabilir |
| Gereksinimlerin gerçekçiliği | İlan metni | Orta | Çelişkiler güçlü sinyal; muğlaklık daha zayıf |
| Son dönem işten çıkarma haberleri | WebSearch | Orta | Departman, zamanlama ve şirket büyüklüğü dikkate alınmalı |
| Yeniden yayın örüntüsü | scan-history.tsv | Orta | 90 günde 2+ kez aynı rol endişe verici |
| Maaş şeffaflığı | İlan metni | Düşük | Yargı bölgesine bağlı; atlanması için birçok meşru neden olabilir |
| Rol-şirket uyumu | Nitel | Düşük | Öznel; yalnızca destekleyici sinyal olarak kullan |
**Etik çerçeve (ZORUNLU):**
- Bu, kullanıcının zamanını gerçek fırsatlara yönlendirmesine yardımcı olur
- Bulguları asla dürüstsüzlük suçlaması olarak sunma
- Sinyalleri sun ve kararı kullanıcıya bırak
- Endişe veren sinyaller için her zaman meşru açıklamalara yer ver
---
## North Star — Hedef Roller
Sistem tüm hedef rollere eşit özenle yaklaşır. Maaş ve gelişim fırsatı uygunsa her biri başarıdır:
| Arketip | Odak alanları | İşverenin aradığı |
|---------|--------------|-------------------|
| **AI Platform / LLMOps Engineer** | Değerlendirme, gözlemlenebilirlik, güvenilirlik, pipeline'lar | Yapay zekayı metriklerle production'a taşıyan biri |
| **Agentic Workflows / Automation** | HITL, tooling, orchestration, multi-agent | Güvenilir ajan sistemleri kuran biri |
| **Technical AI Product Manager** | GenAI/Agents, PRD, discovery, delivery | İş gereksinimlerini AI ürününe çeviren biri |
| **AI Solutions Architect** | Hyperautomation, enterprise, entegrasyonlar | Uçtan uca AI mimarileri tasarlayan biri |
| **AI Forward Deployed Engineer** | Müşteri yönlü, hızlı teslimat, prototipleme | AI çözümlerini müşteride hızlıca hayata geçiren biri |
| **AI Transformation Lead** | Değişim yönetimi, benimseme, kurumsal enablement | Organizasyonlarda AI dönüşümünü yöneten biri |
### Arketip Tespiti
Her ilanı aşağıdaki türlerden birine (ya da en fazla ikisine) sınıflandır:
| Arketip | İlanda öne çıkan sinyaller |
|---------|---------------------------|
| AI Platform / LLMOps | "observability", "evals", "pipelines", "monitoring", "reliability" |
| Agentic / Automation | "agent", "HITL", "orchestration", "workflow", "multi-agent" |
| Technical AI PM | "PRD", "roadmap", "discovery", "stakeholder", "product manager" |
| AI Solutions Architect | "architecture", "enterprise", "integration", "design", "systems" |
| AI Forward Deployed | "client-facing", "deploy", "prototype", "fast delivery", "field" |
| AI Transformation | "change management", "adoption", "enablement", "transformation" |
Arketipi tespit ettikten sonra kullanıcıya özgü çerçeveleme ve kanıt noktaları için `modes/_profile.md` dosyasını oku.
### Arketipe Göre Uyarlama
> **Somut rakamlar ve metrikler: değerlendirme sırasında `cv.md` ve `article-digest.md` dosyalarından okunacak. Buraya sabit yazma.**
| Rol ise... | Adayda şunu öne çıkar... | Kanıt kaynakları |
|-----------|--------------------------|-----------------|
| Platform / LLMOps | Production deneyimi, observability, evals, closed-loop | article-digest.md + cv.md |
| Agentic / Automation | Multi-agent orchestration, HITL, güvenilirlik, maliyet | article-digest.md + cv.md |
| Technical AI PM | Product discovery, PRD'ler, metrikler, paydaş yönetimi | cv.md + article-digest.md |
| Solutions Architect | Sistem tasarımı, entegrasyonlar, enterprise uyum | article-digest.md + cv.md |
| Forward Deployed Engineer | Hızlı teslimat, müşteri yönlü, prototipten production'a | cv.md + article-digest.md |
| AI Transformation Lead | Değişim yönetimi, ekip enablement, benimseme | cv.md + article-digest.md |
### Kariyer Anlatısı (Tüm içeriklerde kullanılacak)
`config/profile.yml` dosyasındaki kariyer hikayesini tüm içeriklere zemin olarak kullan:
- **PDF özetlerinde:** Geçmişten geleceğe bir köprü kur — "Aynı [becerileri] şimdi [ilan alanına] uyguluyorum."
- **STAR hikayelerinde:** `article-digest.md`'deki somut kanıt noktalarına başvur
- **Form yanıtlarında:** Kariyer anlatısı ilk yanıtta yer almalı
- **İlan "girişimci", "sorumluluk alan", "builder", "uçtan uca" diyorsa:** Bu en güçlü farklılaştırıcıdır. Eşleşme ağırlığını artır.
### Temel Güç
Profili **"Gerçek dünya kanıtına sahip teknik builder"** olarak çerçevele — role göre uyarla:
- PM için: "Prototiplerle belirsizliği azaltıp sonra disiplinli biçimde üretime taşıyan builder"
- FDE için: "İlk günden observability ve metriklerle teslim eden builder"
- SA için: "Gerçek entegrasyon deneyimiyle uçtan uca sistemler tasarlayan builder"
- LLMOps için: "Kapalı döngü kalite sistemleriyle yapay zekayı production'a taşıyan builder"
"Builder"ı profesyonel bir sinyal olarak konumlandır — hobici değil. Gerçek kanıt noktaları bunu inandırıcı kılar.
### Portfolyo / Demo
Adayın canlı bir demosu veya dashboardu varsa (`profile.yml`'ye bak), ilgili başvurularda erişim bilgisini paylaş.
### Ücret Araştırması
**Genel notlar:**
- Güncel piyasa verisi için WebSearch kullan (Kariyer.net Maaş Rehberi, Glassdoor TR, LinkedIn Maaş, Secretcv.com)
- Rolün başlığı üzerinden karşılaştır — başlıklar maaş bantlarını belirler
- Türkiye'de maaşlar genellikle **net** olarak belirtilir; brüt/net farkı yaklaşık %25-30'dur
- Enflasyon zammı beklentisini müzakere kozu olarak kullan
---
## Türkiye İş Piyasası — Bilmen Gereken Terimler
Türkçe iş ilanlarında ve sözleşme müzakerelerinde, yabancı piyasalarda karşılığı olmayan kavramlar çıkar. Bunları doğru yorumlamak kritiktir:
| Terim | Açıklama | Değerlendirmeye etkisi |
|-------|----------|------------------------|
| **SGK** (Sosyal Güvenlik Kurumu) | Zorunlu sosyal güvenlik. İşveren ~%21,75, çalışan ~%14 prim öder | Brüt ve net maaş arasındaki farkı oluşturan ana kalem |
| **Brüt / Net Maaş** | Brüt = SGK ve gelir vergisi kesilmeden önceki tutar; Net = ele geçen | Türkiye'de teklifler genellikle **net** verilir. Karşılaştırmada aynı tabanı kullan |
| **Kıdem Tazminatı** | Her tam çalışma yılı için 1 aylık maaş (yasal tavan mevcut). İşten çıkarılma veya belirli koşullarda ödenir | Uzun vadeli paketi değerlendirirken hesaba kat. Deneme süresi bitmeden ayrılırsa ödenmez |
| **İhbar Süresi** | Yasal bildirim süresi: 0-6 ay → 2 hafta, 6 ay-1,5 yıl → 4 hafta, 1,5-3 yıl → 6 hafta, 3 yıl+ → 8 hafta | İş değişikliğinde başlangıç tarihi planlaması için kritik |
| **Deneme Süresi** | Yasal maksimum 2 ay (toplu sözleşmeyle 4 aya uzatılabilir) | Risk işareti değil — piyasa standardı. 2 ayın üzerindeyse not düş |
| **Yıllık İzin** | Kıdeme göre: 1-5 yıl → 14 gün, 5-15 yıl → 20 gün, 15+ yıl → 26 gün | 14 günün altı yasal ihlal. 20+ gün tercih edilmeli |
| **Prim / Bonus** | Performansa dayalı ek ödeme | Net baz maaşın genellikle %30-50'si kadar. Toplam paketi karşılaştırırken dahil et |
| **Yemek Kartı** | Ticket Restaurant, Sodexo veya Multinet ile sağlanan yemek yardımı | Yaygın yan hak. Aylık 5.000–7.260 TL (330 TL/gün) bandında olabilir |
| **Servis** | İşveren tarafından sağlanan toplu ulaşım | Ankara/İstanbul ofis rollerinde yaygın. Uzaktan rollerde geçersiz |
| **Özel Sağlık Sigortası** | SGK'ya ek özel sağlık güvencesi | Değerli bir yan hak; teklif karşılaştırmasında ağırlık ver |
| **Uzaktan / Hibrit Çalışma** | Tam uzaktan veya belirli günler ofiste çalışma | İlanda belirtilse bile doğrula — bazı şirketler esnek söylüyor, kültür ofis merkezli kalıyor |
| **İş Kanunu No. 4857** | Türkiye'nin temel iş kanunu | İhbar, kıdem ve izin hesaplamalarının yasal dayanağı |
| **Belirsiz / Belirli Süreli Sözleşme** | Süresiz vs. sabit vadeli iş sözleşmesi | Belirli süreli → sözleşme bitiminde kıdem tazminatı riski taşıyabilir |
| **TÜFE Zammı** | Yıllık enflasyon (TÜFE) oranına dayalı maaş artışı | Türkiye'de kritik: zam garantisi yoksa yüksek enflasyon dönemlerinde gerçek ücret erir |
| **AGİ** (Asgari Geçim İndirimi) | 2022'de kaldırıldı, yerini asgari ücrete kadar gelir vergisi muafiyeti aldı | Sözleşme müzakerelerinde ayrıca gündemin dışında tutulabilir |
### Maaş Müzakere Kalıpları
**Maaş beklentisi:**
> "Bu rol için piyasa araştırmama göre [profile.yml'deki ARALIK] aralığını hedefliyorum. Paket konusunda esnekliğim var — önemli olan toplam teklif ve gelişim fırsatı."
**Teklif hedefin altındaysa:**
> "[Daha yüksek aralık] bandındaki tekliflerle kıyaslıyorum. [Şirket] beni çekiyor çünkü [neden]. [Hedef rakama] ulaşma şansımız var mı?"
**Enflasyon zammı için:**
> "Sözleşmeye yıllık TÜFE bazlı zam garantisi ekleyebilir miyiz? Uzun vadeli planlama açısından önemli."
### Lokasyon Politikası
**Formlarda:**
- "Ofise gelebilir misiniz?" sorularını `profile.yml`'deki gerçek duruma göre yanıtla
- Serbest metin alanlarında saat dilimi örtüşmesini ve müsaitliği açıkça yaz
**Değerlendirmelerde (puanlama):**
- Uzaktan rol → lokasyon boyutunda tam puan
- Adayın ülkesi dışında hibrit rol → **3.0** (1.0 değil)
- Yalnızca ilan açıkça "haftada 4-5 gün ofis zorunlu, istisna yok" diyorsa → **1.0**
### Teklif Hızı Önceliği
- Çalışan demo + metrikler > mükemmellik
- Erken başvur > daha fazla araştır
- %80/20 yaklaşımı, her şeyi zamanlı tut
---
## Genel Kurallar
### ASLA
1. Deneyim veya metrik uydurma
2. `cv.md` ya da portfolyo dosyalarını değiştirme
3. Adayın onayı olmadan başvuru gönderme
4. Üretilen mesajlarda telefon numarası paylaşma
5. Piyasa fiyatının altında ücret önerme
6. İlanı okumadan PDF oluşturma
7. Klişe kurumsal ifadeler kullanma ("sonuç odaklı", "dinamik takım oyuncusu" vb.)
8. Takipçiyi atlama — değerlendirilen her ilan kaydedilir
### HER ZAMAN
0. **Ön yazı:** Form izin veriyorsa HER ZAMAN ön yazı ekle. CV ile aynı görsel tasarımda PDF olarak üret. İçerik: ilandan doğrudan alıntılar + kanıt noktalarıyla eşleştirme. Maksimum 1 sayfa.
1. Herhangi bir ilanı değerlendirmeden önce `cv.md` ve `article-digest.md` dosyalarını oku (varsa)
1b. **Her oturumun ilk değerlendirmesinde:** `node cv-sync-check.mjs` çalıştır. Uyarı varsa adayı bilgilendirmeden devam etme
2. Rol arketipini belirle ve çerçevelemeyi buna göre uyarla
3. CV eşleştirmesinde dosyadan tam satır alıntıla
4. Maaş ve şirket bilgisi için WebSearch kullan
5. Değerlendirmeden sonra takipçiye kaydet
6. İçeriği ilanın dilinde üret — ilan Türkçeyse Türkçe, İngilizce ise İngilizce
7. Doğrudan ve eyleme dönük ol — gereksiz ayrıntı yazma
8. Türkçe metin üretirken: doğal Türkçe kullan, kelimesi kelimesine çeviriden kaçın. Kısa cümleler, aktif fiiller. Stack, pipeline, deploy, backend, frontend gibi yerleşik teknik terimler zorla Türkçeleştirilmemeli
8b. **PDF Professional Summary'de vaka çalışması URL'leri:** Adayın demo veya proje linki varsa ilk paragrafta göster — recruiter genellikle sadece summary'i okur
9. **Takipçi eklemeleri TSV olarak** — `applications.md`'ye doğrudan yeni satır ekleme. TSV'yi `batch/tracker-additions/` klasörüne yaz, `merge-tracker.mjs` halleder
10. Her rapor başlığına `**URL:**` alanını ekle — Puan ile PDF arasına
### Araçlar
| Araç | Kullanım |
|------|----------|
| WebSearch | Maaş araştırması, şirket kültürü, Kariyer.net/LinkedIn ilanları, Türk şirket haberleri |
| WebFetch | Statik sayfalardan ilan içeriği çekme |
| Playwright | İlan doğrulama (browser_navigate + browser_snapshot). **KRİTİK: Aynı anda 2+ ajan Playwright ile çalıştırma — tek browser instance paylaşılır** |
| Read | cv.md, _profile.md, article-digest.md, cv-template.html |
| Write | PDF için geçici HTML, rapor .md dosyaları, `batch/tracker-additions/*.tsv` (yeni takipçi girişleri) |
| Edit | `data/applications.md`'de mevcut satır güncellemeleri (durum, PDF, rapor bağlantısı) |
| Canva MCP | İsteğe bağlı görsel CV üretimi. Temel tasarımı çoğalt, metni düzenle, PDF olarak dışa aktar. `profile.yml`'de `canva_resume_design_id` gerektirir. |
| Bash | `node generate-pdf.mjs` |
---
## Profesyonel Yazım ve ATS Uyumluluğu
Bu kurallar adaya giden tüm üretilmiş metinler için geçerlidir: PDF özetleri, maddeler, ön yazılar, form yanıtları, LinkedIn mesajları. Dahili değerlendirme raporları için geçerli **değildir**.
### Klişe ifadelerden kaçın
- "sonuç odaklı" / "takım oyuncusu" / "kanıtlanmış başarı geçmişi"
- "leveraged" yerine → kullandığı aracı ya da fiili yaz
- "spearheaded" yerine → "yönetti" veya "kurdu"
- "facilitated" yerine → "yürüttü" veya "kurdu"
- "sinerji" / "güçlü" / "kesintisiz" / "yenilikçi" / "çığır açan"
- "günümüzün hızla değişen dünyasında"
- "kanıtlanmış yetenek" / "en iyi uygulamalar" → spesifik uygulamayı adlandır
### ATS için Unicode normalleştirme
`generate-pdf.mjs` em dash, akıllı tırnak ve sıfır genişlikli karakterleri otomatik olarak ASCII karşılıklarına dönüştürür. Yine de en başından üretmekten kaçın.
### Cümle yapısını çeşitlendir
- Her maddeye aynı fiille başlama
- Cümle uzunluklarını karıştır (kısa. Sonra bağlamlı daha uzun. Kısa.)
- Her seferinde "X, Y ve Z" kalıbını kullanma — bazen iki öğe, bazen dört
### Soyutlamalar yerine özgüllüğü tercih et
- "p95 gecikmesini 2,1 saniyeden 380ms'ye düşürdüm" → "performansı iyileştirdim"den çok daha iyi
- "12 bin belge üzerinde Postgres + pgvector ile retrieval" → "ölçeklenebilir RAG mimarisi tasarladım"dan çok daha iyi
- İzin verilen durumlarda araç, proje ve müşteri adlarını ver
+120
View File
@@ -0,0 +1,120 @@
# Mod: basvuru — Canlı Başvuru Asistanı
Aday bir başvuru formunu doldururken çalışan etkileşimli mod. Ekrandakileri okur, önceki ilan raporunu yükler ve formun her alanı için kişiselleştirilmiş yanıtlar üretir.
## Gereksinimler
- **Playwright varsa (tercih edilen):** Claude tarayıcıyla etkileşime geçebilir, formu doğrudan okuyabilir.
- **Playwright yoksa:** Aday ekran görüntüsü paylaşır veya soruları metin olarak yapıştırır.
## İş Akışı
```
1. TESPİT ET → Aktif sekmeyi oku (ekran görüntüsü / URL / sayfa başlığı)
2. TANI KOY → Sayfadan şirket adını ve rolü çıkar
3. RAPORU BUL → reports/ klasöründe bu ilana ait raporu ara
4. YÜKLE → Tam raporu oku (önceki değerlendirme + Blok G varsa)
5. KARŞILAŞTIR → Ekrandaki rol raporla eşleşiyor mu? Farklıysa adayı uyar
6. FORMU ANALİZ ET → Görünen tüm alanları ve soruları tespit et
7. YANIT ÜRET → Her alan için kişiselleştirilmiş yanıt oluştur
8. SUN → Kopyalanabilir biçimde göster
```
## Adım 1 — İlanı Tespit Et
**Playwright ile:** Aktif sayfanın snapshot'ını al; başlık, URL ve içeriği oku.
**Playwright olmadan:** Adaydan şunları iste:
- Formun ekran görüntüsünü paylaşması (Read aracı görselleri okuyabilir)
- Soruları metin olarak yapıştırması
- Şirket adı + rol başlığını söylemesi (ardından `reports/` klasöründe arama yapılır)
## Adım 2 — Bağlamı Tespit Et ve Yükle
1. Sayfadan şirket adını ve rol başlığını çıkar
2. `reports/` klasöründe şirket adına göre Grep yap (büyük/küçük harf duyarsız)
3. Eşleşme bulunursa → tam raporu yükle
4. Blok G varsa → önceki taslak yanıtları temel olarak al
5. Eşleşme bulunamazsa → adayı bilgilendirip hızlı auto-pipeline öner
## Adım 3 — Rol Değişikliğini Tespit Et
Ekrandaki rol önceki değerlendirmedekinden farklıysa:
- **Adayı uyar:** "Rol [X]'den [Y]'ye değişmiş görünüyor. Yeniden değerlendireyim mi, yoksa yanıtları yeni başlığa uyarlayayım mı?"
- **Uyarlama:** Yeniden değerlendirmeden yanıtları yeni role göre ayarla
- **Yeniden değerlendirme:** Tam A-F değerlendirmesi yap, raporu güncelle, Blok G'yi yeniden üret
- **Takipçiyi güncelle:** Gerekirse `applications.md`'deki rol başlığını düzelt
## Adım 4 — Form Alanlarını Analiz Et
Görünen tüm alanları tespit et:
- Serbest metin (ön yazı, "neden bu rol?", motivasyon vb.)
- Açılır menüler (nereden duydunuz, çalışma izni vb.)
- Evet/Hayır (taşınma, vize, müsaitlik vb.)
- Maaş alanları (beklenti, aralık)
- Dosya yükleme alanları (CV, ön yazı PDF'i)
Her soruyu sınıflandır:
- **Blok G'de zaten yanıtlanmış** → mevcut yanıtı uyarla
- **Yeni soru** → rapor + `cv.md`'den yanıt üret
## Adım 5 — Yanıtları Üret
Her soru için yanıtı şu şemaya göre oluştur:
1. **Rapor bağlamı:** Blok B'deki kanıt noktalarını ve Blok F'teki STAR hikayelerini kullan
2. **Önceki Blok G:** Taslak yanıt varsa temel al ve geliştir
3. **"Sizi seçiyorum" tonu:** Özgüvenli, yalvaran değil
4. **Özgüllük:** Ekrandaki ilandan somut bir şeye doğrudan değin
5. **Kanıt URL'si:** "Ek bilgi" alanı varsa demo/proje linkini ekle
**Türkiye'ye özgü form alanları:**
- **Maaş beklentisi (net TL):** `profile.yml`'deki aralık, "paket yapısına göre müzakereye açığım" notu ekle
- **Başlangıç tarihi / Müsaitlik:** İhbar süresi gerçekçi biçimde hesaba katılarak tarih ver
- **Çalışma izni / Vatandaşlık:** Yabancı uyruklu adaylar için net ve özlü yaz
- **Yabancı dil seviyesi:** Gerçek seviyeyi yaz; varsa YDS/YÖKDİL/TOEFL puanını ekle
- **Askerlik durumu:** Tamamlandı / tecilli / muaf — kısaca belirt
- **Referans:** Önceden haberdar ettiğin kişilerin adını ver; telefon numarası verme
**Çıktı formatı:**
```
## [Şirket] — [Rol] için Yanıtlar
Dayanak: Rapor #NNN | Puan: X.X/5 | Arketip: [tür]
---
### 1. [Formdaki tam soru metni]
> [Kopyalamaya hazır yanıt]
### 2. [Sonraki soru]
> [Yanıt]
...
---
Notlar:
- [Rol, değişiklikler vb. hakkında gözlemler]
- [Adayın gözden geçirmesi gereken kişiselleştirme önerileri]
```
## Adım 6 — Başvuru Sonrası (isteğe bağlı)
Aday başvuruyu gönderdiğini onaylarsa:
1. `applications.md`'de durumu `Evaluated`'dan `Applied`'a güncelle
2. Blok G'yi final yanıtlarla güncelle
3. Sonraki adımı öner: İşe alım sorumlusuna LinkedIn erişimi için `/career-ops contacto`
## Scroll Yönetimi
Formda görünenden fazla soru varsa:
- Adaydan scroll yapıp yeni bir ekran görüntüsü paylaşmasını iste
- Ya da kalan soruları yapıştırmasını iste
- Formun tamamı kapsanana kadar iterasyon halinde işle
## Kritik Kural
**Adayın onayı olmadan hiçbir şeye tıklama, form gönderme.**
Doldur, taslak oluştur, hazırla — ama "Gönder" veya "Başvur" düğmesine basmak her zaman adayın kararıdır.
+250
View File
@@ -0,0 +1,250 @@
# Mod: is-ilani — Tam Değerlendirme A-G
Aday bir ilan yapıştırdığında (metin veya URL) HER ZAMAN 7 bloğun tamamını sun (A-F değerlendirme + G meşruiyet).
## Adım 0 — Arketip Tespiti
İlanı `_shared.md`'deki arketiplerden birine sınıflandır. Hibrit ise en yakın ikisini belirt. Bu tespite göre:
- B bloğunda hangi kanıt noktalarını öne çıkaracağın belirlenir
- E bloğunda CV özeti nasıl yeniden yazılacağı belirlenir
- F bloğunda hangi STAR hikayeleri hazırlanacağı belirlenir
## Blok A — Rol Özeti
Şu alanları içeren bir tablo oluştur:
- Tespit edilen arketip
- Alan (fintech / e-ticaret / kurumsal yazılım / SaaS / oyun / telekom vb.)
- İşlev (geliştirme / danışmanlık / yönetim / deployment)
- Kıdem seviyesi (junior / mid / senior / staff)
- Çalışma şekli (tam uzaktan / hibrit / ofis)
- Takım büyüklüğü (ilanda belirtilmişse)
- 1 cümlelik TL;DR
## Blok B — CV Eşleştirmesi
`cv.md` dosyasını oku. İlandaki her gereksinimi CV'deki tam satırlarla karşılaştıran bir tablo oluştur.
**Arketipe göre öne çıkarılacaklar:**
- FDE → hızlı teslimat ve müşteri yönlü kanıt noktaları
- SA → sistem tasarımı ve entegrasyon deneyimi
- PM → product discovery ve metrikler
- LLMOps → evals, observability, pipeline'lar
- Agentic → multi-agent, HITL, orchestration
- Transformation → değişim yönetimi, benimseme, ölçekleme
**Eksikler bölümü** — her eksiklik için şunları değerlendir:
1. Sert engel mi yoksa "olsa iyi olur" mu?
2. Aday yakın bir deneyimle telafi edebilir mi?
3. Portfolyoda bu boşluğu kapatan bir proje var mı?
4. Somut azaltma planı (ön yazıda kullanılacak ifade, kısa proje vb.)
## Blok C — Seviye ve Strateji
1. **İlanda belirtilen seviye** ile **adayın bu arketip için doğal seviyesi** karşılaştırması
2. **"Kıdemliyi dürüstçe sat" planı:** Arketipe göre uyarlanmış somut ifadeler, öne çıkarılacak başarılar, özgün geçmiş deneyimi nasıl avantaja çevireceğin
3. **"Seviye düşürülürsem" planı:** Teklif adil ise kabul et, 6. ay incelemesi müzakere et, terfi kriterlerini netleştir
## Blok D — Maaş ve Piyasa
WebSearch ile araştır:
- Rolün güncel maaş aralıkları (Kariyer.net Maaş Rehberi, Glassdoor TR, LinkedIn Maaş, Secretcv.com)
- Şirketin ücret itibarı (Glassdoor/Kariyer.net yorumları varsa)
- Bu rolün Türkiye'deki ve küresel talep trendi
Tablo olarak sun: veriler + kaynaklar. Veri bulunamazsa uydurmak yerine açıkça belirt.
**Türkiye'ye özgü kontrol listesi:**
- İlan net mi brüt mu belirtiyor?
- Yemek kartı, özel sağlık sigortası, servis var mı?
- Yıllık TÜFE bazlı zam garantisi sunuluyor mu?
- Prim/bonus yapısı nedir?
## Blok E — Kişiselleştirme Planı
| # | CV Bölümü | Mevcut hali | Önerilen değişiklik | Gerekçe |
|---|-----------|-------------|---------------------|---------|
| 1 | Özet | ... | ... | ... |
| ... | ... | ... | ... | ... |
CV için en etkili 5 değişiklik + LinkedIn profili için en etkili 5 değişiklik.
## Blok F — Mülakat Hazırlığı
İlanın gereksinimlerine eşlenmiş 6-10 STAR+R hikayesi (STAR + **Yansıma**):
| # | İlan Gereksinimi | STAR+R Hikayesi | S | T | A | R | Yansıma |
|---|-----------------|-----------------|---|---|---|---|---------|
**Yansıma** sütunu: öğrenilen dersi veya bugün farklı yapılacak şeyi yakalar. Bu kıdemi gösterir — junior adaylar ne olduğunu anlatır, kıdemli adaylar ders çıkarır.
**Story Bank:** `interview-prep/story-bank.md` varsa bu hikayelerin orada olup olmadığını kontrol et. Yoksa ekle. Zamanla her mülakat sorusuna uyarlanabilecek 5-10 ana hikayeden oluşan yeniden kullanılabilir bir banka oluşur.
**Arketipe göre seçim ve çerçeveleme:**
- FDE → teslimat hızı ve müşteri yönlü yaklaşım ön planda
- SA → mimari kararlar ön planda
- PM → discovery süreci ve trade-off'lar ön planda
- LLMOps → metrikler, evals, production sağlamlaştırma ön planda
- Agentic → orchestration, hata yönetimi, HITL ön planda
- Transformation → benimseme ve kurumsal değişim ön planda
Ayrıca ekle:
- 1 önerilen vaka çalışması (hangi projeyi nasıl sunacağın)
- Kırmızı bayrak sorular ve nasıl yanıtlanacağı (örn. "Neden bu kadar kısa sürede ayrılıyorsunuz?", "Yönettiğiniz bir ekip var mıydı?")
---
## Değerlendirme Sonrası
Bloklar A-F tamamlandıktan sonra **HER ZAMAN** şunları yap:
### 1. Rapor .md Kaydet
Değerlendirmenin tamamını `reports/{###}-{sirket-slug}-{YYYY-MM-DD}.md` olarak kaydet.
- `{###}` = sıradaki numara (3 haneli, sıfır dolgulu). Bu numarayı atomik olarak atamak ve yarış durumlarını (race condition) önlemek için, numarayı rezerve etmek üzere `node reserve-report-num.mjs` komutunu çalıştırmalısınız (standart çıktı `{###}` değerini döndürür), raporu yazmalı ve ardından sentineli serbest bırakmak için `node reserve-report-num.mjs --release {###}` komutunu çalıştırmalısınız.
- `{sirket-slug}` = şirket adı küçük harfle, boşluksuz (tire kullan)
- `{YYYY-MM-DD}` = bugünün tarihi
**Rapor formatı:**
```markdown
# Değerlendirme: {Şirket} — {Rol}
**Tarih:** {YYYY-MM-DD}
**Arketip:** {tespit edilen}
**Puan:** {X.X}/5
**URL:** {ilan URL'si}
**PDF:** ✅/❌
**Meşruiyet:** {Güvenilir | Dikkatli İlerle | Şüpheli}
---
## A) Rol Özeti
(Blok A'nın tam içeriği)
## B) CV Eşleştirmesi
(Blok B'nin tam içeriği)
## C) Seviye ve Strateji
(Blok C'nin tam içeriği)
## D) Maaş ve Piyasa
(Blok D'nin tam içeriği)
## E) Kişiselleştirme Planı
(Blok E'nin tam içeriği)
## F) Mülakat Hazırlığı
(Blok F'nin tam içeriği)
## G) İlan Meşruiyeti
(Blok G'nin tam içeriği)
## H) Başvuru Formu Taslak Yanıtları
(yalnızca puan >= 4,5 ise — form alanları için taslak yanıtlar)
---
## Çıkarılan Anahtar Kelimeler
(ATS optimizasyonu için ilandan 15-20 anahtar kelime)
```
### 2. Takipçiye Kaydet
**Yeni** kayıt için `data/applications.md`'yi doğrudan düzenleme. Bunun yerine `batch/tracker-additions/{num}-{sirket-slug}.tsv` dosyasına tek satır TSV yaz (8 veya 9 sekme ile ayrılmış sütun):
```tsv
{num}\t{date}\t{company}\t{role}\t{status}\t{score}\t{pdf_emoji}\t[{num}](reports/{num}-{slug}-{date}.md)\t{note}
```
- `{num}` = sıradaki numara (tam sayı, `reports/` klasöründen hesapla)
- `{status}` = `Evaluated`
- `{score}` = `X.X/5` formatı (örn. `4.2/5`)
- `{pdf_emoji}` = `✅` veya `❌`
- `{note}` = kısa not (isteğe bağlı, sütun atlanabilir)
Ardından `node merge-tracker.mjs` çalıştır.
**Mevcut** kayıt için `data/applications.md`'de ilgili satırı doğrudan güncelle (durum, PDF, rapor bağlantısı).
---
## İlan Meşruiyeti (Blok G)
İlanın gerçek ve aktif olup olmadığını değerlendir. Bu değerlendirme global puanı (1-5) **etkilemez** — ayrı bir nitel tespittir.
**Etik çerçeve:** Gözlemler sun, iddialarda bulunma. Her sinyalin meşru açıklaması olabilir. Kararı kullanıcı verir.
### Analiz Edilecek Sinyaller (önem sırasıyla):
**1. İlan Tazeliği** (Playwright snapshot'ından):
- Yayın tarihi veya "X gün önce" bilgisi — sayfadan çıkar
- Başvur butonu durumu (aktif / kapalı / yok / genel sayfaya yönlendiriyor)
- URL genel kariyer sayfasına yönlendirdiyse not düş
**2. İlan İçerik Kalitesi** (ilan metninden):
- Belirli teknoloji, framework veya araçlar adlandırıyor mu?
- Takım büyüklüğü, raporlama yapısı veya organizasyon bağlamı var mı?
- Gereksinimler gerçekçi mi? (deneyim yılı vs. teknolojinin yaşı)
- İlk 6-12 ay için net bir kapsam var mı?
- Maaş/ücret bilgisi var mı?
- İlanın role özgü vs. genel şablon oranı nedir?
- İç çelişki var mı? (junior başlık + kıdemli gereksinimler gibi)
**3. Şirketin İşe Alım Sinyalleri** (2-3 WebSearch sorgusu, Blok D araştırmasıyla birleştir):
- `"{şirket}" işten çıkarma {yıl}` — tarih, kapsam, departmanları not et
- `"{şirket}" işe alım dondurma {yıl}` — varsa duyuruları not et
- İşten çıkarma varsa: bu roldeki departmanı etkiliyor mu?
**4. Yeniden Yayın Tespiti** (`scan-history.tsv`'den):
- Şirket + benzer rol başlığının farklı URL ile daha önce göründüğünü kontrol et
- Kaç kez ve hangi süre içinde tekrarlandığını not et
**5. Rol Piyasa Bağlamı** (ek sorgu gerektirmez):
- Bu, genellikle 4-6 haftada dolan yaygın bir rol mü?
- Rol bu şirketin işine uygun mu?
### Çıktı Formatı:
**Değerlendirme:** Üç seviyeden biri:
- **Güvenilir** — Birden fazla sinyal gerçek ve aktif bir ilan olduğunu gösteriyor
- **Dikkatli İlerle** — Dikkat edilmesi gereken karma sinyaller var
- **Şüpheli** — Birden fazla hayalet ilan göstergesi mevcut; zaman harcamadan önce araştır
**Sinyaller tablosu:** Her sinyal, bulgusu ve ağırlığıyla (Olumlu / Nötr / Endişe Verici).
**Bağlam Notları:** İlgili uyarılar (niş rol, kamu kurumu ilanı, sürekli açık pozisyon vb.).
**Türkiye'ye özgü sinyaller:**
- Kariyer.net / Yenibiris.com'da yayın tarihi (30 günden eski mi?)
- Şirket köklü mü yoksa yeni kurulan mı?
- İlan çok genel mi (kopyala-yapıştır şablonu gibi görünüyor mu)?
- Maaş "rekabetçi" dışında herhangi bir bilgi içeriyor mu?
- Şirkete ilişkin son dönemde işten çıkarma veya kapanma haberleri var mı?
### Özel durumlar:
- **Kamu/akademik ilanlar:** Uzun süreçler standarttır. Eşikleri ayarla (60-90 gün normal kabul edilir).
- **Sürekli açık pozisyonlar:** İlan "süregelen" veya "dönemsel alım" diyorsa not düş — bu hayalet ilan değil, pipeline rolüdür.
- **Üst düzey / niş roller:** Staff+, VP, Direktör veya yüksek uzmanlaşma gerektiren roller meşru olarak aylarca açık kalabilir.
- **Erken aşama startup:** Rol henüz tam şekillenmemiş olduğundan ilanın muğlak yazılmış olması normaldir. İçerik belirsizliğine daha az ağırlık ver.
- **Tarih bilgisi yok:** Yayın tarihi belirlenemiyorsa ve başka endişe verici sinyal yoksa varsayılan olarak "Dikkatli İlerle" kullan. Kanıt olmaksızın asla "Şüpheli" deme.
- **Recruiter kaynağı (kamuya açık ilan yok):** Tazelik sinyali alınamaz. Aktif recruiter temasının kendisinin olumlu bir meşruiyet sinyali olduğunu not et.
---
## Puanlama (1-5 global)
| Boyut | Ne ölçülüyor |
|-------|-------------|
| CV Eşleşmesi | Beceriler, deneyim ve kanıt noktalarının örtüşmesi |
| Hedef Rol Uyumu | İlanın hedef arketiplerle uyumu (`_profile.md`'den) |
| Maaş | Teklifin piyasa konumu |
| Kültürel Sinyaller | Şirket kültürü, büyüme, istikrar, çalışma şekli |
| Kırmızı Bayraklar | Engelleyiciler ve uyarılar (negatif düzeltme) |
| **Global** | Yukarıdakilerin ağırlıklı ortalaması |
**Puan yorumu:**
- 4,5+ → Güçlü eşleşme, hemen başvur
- 4,0-4,4 → İyi eşleşme, başvurmaya değer
- 3,5-3,9 → Kabul edilebilir ama ideal değil; özel bir neden olmadıkça geç
- 3,5'in altı → Başvuru önerilmez
+61
View File
@@ -0,0 +1,61 @@
# Mod: pipeline — İlan Gelen Kutusu
`data/pipeline.md` dosyasına biriktirilen iş ilanı URL'lerini işler. İstediğin zaman URL ekle, hazır olduğunda `/career-ops pipeline` komutunu çalıştır.
## İş Akışı
1. **Oku** `data/pipeline.md` → "Bekleyenler" bölümündeki `- [ ]` satırlarını bul
2. **Her bekleyen URL için:**
a. Sıradaki `REPORT_NUM` değerini atomik olarak rezerve etmek üzere `node reserve-report-num.mjs` komutunu çalıştır (ve rapor yazıldıktan sonra `node reserve-report-num.mjs --release <num>` çalıştırarak sentineli serbest bırak)
b. **İlan içeriğini çek:** Playwright (browser_navigate + browser_snapshot) → WebFetch → WebSearch. **Playwright kullanılmadıysa** (toplu/headless mod veya yedek yola düşüldüyse) rapor başlığına `**Doğrulama:** doğrulanmamış (toplu mod)` etiketini ekle.
c. URL erişilemiyorsa → `- [!]` olarak işaretle, not ekle ve bir sonrakine geç
d. **Tam pipeline'ı çalıştır:** A-G değerlendirmesi → Rapor (.md) → PDF (puan ≥ 3,0 ise) → Takipçi
e. **"Bekleyenler"den "İşlenenler"e taşı:** `- [x] #NNN | URL | Şirket | Rol | Puan/5 | PDF ✅/❌`
3. **3 veya daha fazla URL varsa ve Playwright kullanılmıyorsa** paralel ajan başlat (Agent aracı, `run_in_background`) — hızı artırır. Playwright etkinse tek tarayıcı örneği paylaşıldığından sıralı işle.
4. **Tamamlanınca** özet tabloyu göster:
```text
| # | Şirket | Rol | Puan | PDF | Önerilen eylem |
```
## pipeline.md Formatı
```markdown
## Bekleyenler
- [ ] https://kariyer.net/is-ilani/12345
- [ ] https://boards.greenhouse.io/sirket/jobs/456 | Şirket A.Ş. | Senior Backend Engineer
- [!] https://ozel.url/ilan — Hata: giriş gerekiyor
## İşlenenler
- [x] #143 | https://kariyer.net/is-ilani/789 | Acme Teknoloji | Backend Developer | 4.2/5 | PDF ✅
- [x] #144 | https://boards.greenhouse.io/xyz/jobs/012 | BigCo | Frontend Engineer | 2.1/5 | PDF ❌
```
> Not: Bölüm başlıkları EN ("Pending"/"Processed"), ES ("Pendientes"/"Procesadas") veya TR ("Bekleyenler"/"İşlenenler") olabilir. Okurken esnek ol; yazarken mevcut dosyanın stilini koru.
## URL'den İlan İçeriği Çekme
1. **Playwright (tercih edilen):** `browser_navigate` + `browser_snapshot` — tüm SPA'larla çalışır.
2. **WebFetch (yedek):** Playwright mevcut değilse (toplu/headless mod). Bu durumda rapor başlığına `**Doğrulama:** doğrulanmamış (toplu mod)` ekle — kullanıcı daha sonra manuel doğrulayabilir.
3. **WebSearch (son çare):** İlanı indeksleyen diğer platformlarda ara. WebFetch'te olduğu gibi rapor başlığına `**Doğrulama:** doğrulanmamış (toplu mod)` ekle.
**Özel durumlar:**
- **Kariyer.net:** Playwright ile sorunsuz çalışır; giriş gerektirmez.
- **Yenibiris.com:** Playwright ile çalışır.
- **LinkedIn:** Giriş gerektirebilir → `[!]` olarak işaretle, adaydan ilan metnini yapıştırmasını iste.
- **PDF linki:** URL doğrudan bir PDF'e işaret ediyorsa Read aracıyla oku.
- **`local:` öneki:** Yerel dosyayı oku. Örnek: `local:jds/kariyer-backend.md` → `jds/kariyer-backend.md` oku.
## Rapor Numaralandırma
1. Sıradaki rapor numarasını atomik olarak rezerve etmek için `node reserve-report-num.mjs` komutunu çalıştır (standart çıktı `{###}` değerini döndürür).
2. Bu numarayı kullanarak rapor dosyasını yaz.
3. Rapor yazıldıktan sonra `node reserve-report-num.mjs --release {###}` komutunu çalıştırarak sentineli serbest bırak.
## Başlamadan Önce
Herhangi bir URL'yi işlemeden önce yapılandırma kontrolü çalıştır:
```bash
node cv-sync-check.mjs
```
Uyarı varsa adayı bilgilendirmeden devam etme.