30 Saniyede

Bir pozisyona yüzlerce başvuru gelir; CV’leri okumak, mülakat videolarını tek tek izlemek günler alır. Aday bu yükü devralır: başvuru formundan gelen CV’yi okuyup pozisyona göre puanlar, adaya benzersiz bir linkle tarayıcı üzerinden video mülakatı yaptırır, konuşmayı yazıya döker, yüz ifadesi/duygu analizini yapar ve İK’ya hazır bir değerlendirme raporu sunar. Ayrı bir modülle, elde hazır duran yüzlerce görüşme videosunu (örn. bir Google Drive klasörünü) toplu olarak tarayıp ön eleme yapabilir. İlham veren yanı: tüm yapay zeka yığını kendi sunucularında, dış ücretli API olmadan çalışıyor — yani “her aday için para ödenen” bir SaaS değil, bir kez kurulan, sıfır marjinal maliyetli bir değerlendirme motoru.

İş Problemi & Fırsat

İşe alımda en pahalı kaynak insan zamanıdır. Tek bir pozisyon için gelen onlarca CV’yi okumak, ön mülakatları planlayıp izlemek, herkesi aynı ölçütle değerlendirmek hem yavaş hem de tutarsızdır; üstelik insan değerlendirmesi farkında olmadan önyargı taşır (isim, okul, lokasyon). Aynı sorun “elde 600 görüşme videosu var, kimlere odaklanalım?” gibi triyaj ihtiyaçlarında daha da büyür — kimse 600 videoyu izleyemez. Fırsat: tekrarlayan “oku–izle–puanla” emeğini otomatikleştirip insanı yalnızca karar anında devreye sokmak; böylece ön eleme dakikalara iner, değerlendirme tek bir ölçüt setiyle tutarlı ve izlenebilir olur.

Kullanıcı Deneyimi

Aday gözünden: E-postasına gelen tek bir linke tıklar — kurulum, indirme, hesap açma yok. Önce ne kaydedileceği ve KVKK onamı net biçimde anlatılır; kamera/mikrofon testi yapılır; sonra sorular sırayla ekranda metin olarak gösterilir ve aday her birine kamerası karşısında yanıt verir. Süre kısıtı görünür, akış sade. Google Meet’e oturmak kadar tanıdık; randevu beklemeden, kendi uygun olduğu anda tamamlar.

İşe alımcı (İK) gözünden: Panelde iş ilanını oluşturur, başvuru linkini paylaşır. Başvurular geldikçe her CV otomatik okunur ve pozisyona uygunluk skoru, güçlü/zayıf yönler, “kırmızı bayraklar” ve bir tavsiye (işe al / değerlendir / geç) ile listelenir. Beğendiği adayı tek tıkla video mülakatına davet eder. Mülakat bitince, soru bazlı transkript + duygu grafikleri + LLM özeti içeren bir rapor hazır olur. Toplu video modülünde ise bir Drive klasörünü işaretler, “analiz et” der ve yüzlerce videonun ön değerlendirme skorunu filtrelenebilir bir tabloda görür; raporları Excel’e döker. İK’nın işi “her şeyi izlemek” değil, “öne çıkanlara bakmak” olur.

Sahibin Amacı / Vizyon

Projenin en belirgin tasarım kararı sıfır marjinal maliyet: kasıtlı olarak hiçbir ücretli dış SaaS/LLM API’sine bağlanmadan, tüm yığın (ASR, duygu analizi, LLM rapor sentezi) self-hosted veya ev altyapısında çalışacak şekilde kuruldu (bkz. starter.md “Maliyet Felsefesi”). Sebep: aday başına ücret ödenen bir modelde yüzlerce/binlerce değerlendirme ölçeklenemez; “bir kez kur, sınırsız değerlendir” mantığı bunu mümkün kılar. İkinci belirleyici karar önyargı azaltımı: CV değerlendirmesinde isim/okul/ lokasyon LLM’den bilinçli olarak maskelenir (EU AI Act’in yüksek-riskli işe alım maddesine uyum niyeti). Üçüncüsü insan kararda kalır: AI puanlar ve özetler, ama işe alma kararını her zaman insan verir. Daha büyük vizyon: aynı motorun işe alım dışında da kullanılabilmesi — nitekim ilk gerçek koşu, bir sendikanın genç üyeleri arasında liderlik potansiyeli değerlendirmesiydi; aynı pipeline’ın değerlendirme merceği (rubrik) prompt seviyesinde değiştirilerek bambaşka bir amaca uyarlandı. [?] (Ticari hedef/ürünleşme planı repodan kesin çıkarılamıyor.)

Nasıl Çalışır (sade)

  1. İlan & başvuru: İK bir iş ilanı açar, herkese açık başvuru formunu paylaşır. Aday CV (+ opsiyonel portföy) yükler ve KVKK onayı verir.
  2. CV değerlendirme: Arka planda CV’nin metni çıkarılır, yapay zeka önce olguları çıkarır, sonra kişisel veriler maskelenmiş halde pozisyona göre 8 boyutta puanlar ve bir tavsiye üretir.
  3. Video mülakat: Uygun adaya benzersiz bir mülakat linki gönderilir. Aday tarayıcıdan sorulara video yanıt verir; kayıtlar doğrudan güvenli depoya yüklenir.
  4. Analiz pipeline: Mülakat bitince sistem videoyu indirir → konuşmayı yazıya döker → yüz/duygu/jest analizini yapar → yapay zeka soru bazlı ve genel bir değerlendirme raporu üretir.
  5. Toplu video (ayrı modül): Bir Google Drive klasöründeki yüzlerce video seçilip kuyruğa atılır; her biri aynı pipeline’dan geçer, ön değerlendirme skoruyla tabloda listelenir.
  6. Karar: İK raporlara bakar, filtreler, Excel’e döker ve kararını verir.

Teknik özet: Next.js (web + API) kullanıcıyı ve veriyi yönetir; ağır AI işleri ayrı bir Python/Celery worker’ında asenkron çalışır (Redis kuyruğu + Postgres LISTEN/NOTIFY tetikleme); LLM sentezi self-hosted Qwen3 (Ollama) veya OpenRouter üzerinden yapılır.

Yeniden Kullanılabilir Yetenekler

Sinerjinin kalbi — her biri başka müşteri/sektöre taşınabilir:

  • async-medya-analiz-pipeline — “Dosya gelir, arka planda işlenir, sonuç panele düşer” iskeleti. Video/ses/belge işleyen (çağrı merkezi kaydı, saha videosu, podcast, doküman) her üründe hazır omurga.
  • turkce-konusma-metne-asr — Türkçe konuşmayı zaman damgalı yazıya döker, ücretsiz ve kendi sunucunda. Toplantı/çağrı/röportaj/altyazı gereken her müşteride doğrudan kullanılır.
  • yuz-duygu-jest-analizi — Videodan duygu, dikkat ve jest sinyali çıkarır. Müşteri deneyimi, eğitim videosu analizi, ux araştırması gibi “insan tepkisini ölç” senaryolarına taşınır.
  • onyargi-azaltici-cv-degerlendirme — CV’yi pozisyona göre, kişisel veriyi maskeleyerek adil puanlar. İşe alım, burs/hibe başvurusu, bayi/tedarikçi başvurusu eleyen her müşteride hazır ve uyum-dostu.
  • video-tavir-triyaj-analizi — Yüzlerce videoyu konuşma + duygu birlikte değerlendirip ön elemeden geçirir; merceği (rubrik) prompt’tan değiştirilir. İK triyajından sendikal liderlik taramasına uyarlandı.
  • transkript-temizleme-konusmaci-ayristirma — Ham transkriptten konuşmacıları ayırır, anlamı bozmadan temizler. İki kişili her kayıtta (mülakat, çağrı merkezi, danışma görüşmesi) analiz kalitesini yükseltir.
  • tarayici-ici-video-mulakat-kaydi — Kurulumsuz, linkle, tarayıcıdan video kaydı + soru akışı. Uzaktan mülakat, video başvuru, tanıklık/ifade toplama, müşteri video-geri-bildirimi senaryolarına uyar.
  • presigned-dogrudan-yukleme — Büyük dosyaları sunucuyu yormadan doğrudan tarayıcıdan depoya yükler. Video/CV/yüksek çözünürlüklü görsel toplayan her üründe ölçeklenebilir yükleme temeli.
  • google-drive-toplu-ice-aktarma — Var olan bir Drive klasörünü toplu işler; depolama maliyeti olmadan Drive’dan gömülü gösterir. “Elimizde zaten bir sürü dosya var” diyen her müşteride hızlı başlangıç.
  • self-hosted-sifir-maliyet-llm — Yapay zekayı kendi/ev altyapında, aday başına ücret ödemeden çalıştırır. Yüksek hacimli, maliyet-hassas veya veri-gizliliği önemli her AI projesinde stratejik fark yaratır.
  • oturum-tabanli-kimlik-dogrulama — İK paneli için SSO’suz, hızlı kullanıcı/şifre + rol bazlı giriş.
  • icerik-degerlendirme-is-akisi — Başvuruyu durumlandırıp (yeni→incelendi→davet→…) puanlayan değerlendirme hattı.
  • kvkk-onam-akisi — Aday/başvurandan kişisel veri onamını denetlenebilir biçimde alır.
  • excel-rapor-uretimi — Değerlendirme tablolarını tek tıkla Excel raporuna döker.

İş Etkisi / Sonuç

Canlıda (aday.ahmetgo.com). İlk gerçek toplu koşu: bir Google Drive klasöründen seçilen 141 video, sendika üyesi gençlerin liderlik potansiyeli merceğiyle analiz edildi → 141/141 başarılı, 0 hata (~2,9 dk/video, ~7 saat). Skor dağılımı: 🟢 20 · 🟠 108 · 🔴 13 (ortalama 3,08 / 5); Drive embed sayesinde depolama kullanımı minimal kaldı. CV ve canlı video-mülakat akışları uçtan uca smoke-test’ten geçti. İşe alım dönüşüm oranı, kullanıcı sayısı gibi ticari metrikler [?].

Ekran görüntüleri

  • — İş ilanları listesi (durum etiketleriyle)
  • — Yeni ilan formu (pozisyon + nitelikler + ön mülakat)
  • — Herkese açık başvuru formu + KVKK onamı
  • — CV değerlendirme detayı (skor radarı + skill matrisi + kırmızı bayraklar + tavsiye)
  • — Aday mülakat onam ekranı
  • — Aday kayıt ekranı (soru + kamera + süre)
  • — Mülakat raporu (soru bazlı duygu barları + LLM özeti)
  • — Toplu video analizi tablosu (ön değ. skoru + filtre + sayfalama)
  • — Video tavır raporu (Temel Kriterler + transkript + duygu)
  • — Drive klasöründen toplu içe aktarma

Teknik Detaylar (geliştiriciler için)

  • Web/API: Next.js 14 App Router + TypeScript. Recruiter paneli /dashboard (NextAuth + middleware korumalı), aday akışı /m/[token], herkese açık ilan /jobs/[slug]. Zod env doğrulama, Prisma singleton.
  • Veri: PostgreSQL + Prisma 6. Ana modeller: JobPosting, Application, Interview, InterviewSession, Response, AnalysisResult, VideoAnalysis. Ham AI çıktıları JSON kolonlarda; tablo filtresi için skor/etiketler denormalize kolonlara yazılır.
  • Depolama: MinIO (S3-uyumlu, self-hosted). Tarayıcı → presigned PUT ile doğrudan yükleme; web ve worker ayrı service account kullanır. AWS SDK v3 + MinIO için requestChecksumCalculation: WHEN_REQUIRED şart (yoksa presigned PUT 400 verir — bkz. presigned-dogrudan-yukleme).
  • Worker: Python + Celery + Redis. process_application (CV), process_session (mülakat), process_video_analysis (bağımsız video) task’leri. Web tarafı pg_notify ile tetikler; bir listener.py LISTEN/NOTIFY kanallarını dinleyip task enqueue eder. faster-whisper CPU’da --pool=solo ile tüm çekirdekleri kullanır.
  • AI: ASR faster-whisper (medium/int8, TR); görüntü MediaPipe FaceMesh + Hands + FER (mtcnn=True); mülakat rapor sentezi Qwen3-8B (Ollama native /api/chat, think:false, Cloudflare Tunnel + CF Access arkasında); bağımsız video tavır analizi OpenRouter (Gemini 2.5 Flash Lite). Tüm LLM çağrıları Pydantic şema doğrulaması + retry + LLM erişilemezse fallback ile sarmalı.
  • Deploy: Coolify (Hetzner). GitHub Actions → Coolify deploy API; yola duyarlı workflow yalnız değişen alanı (web/worker) deploy eder, böylece UI değişikliği çalışan batch’i kesmez.
  • Dikkat: pg_notify manuel re-trigger’lar deploy pencerelerinde düşebiliyor; güvenilir yol doğrudan Celery enqueue. Worker restart’ında o an işlenen video stuck PROCESSING kalabilir → periyodik sweeper önerildi (henüz yok). Drive alt klasörleri taranmıyor.

Tekrar Kullanım Notları

Strateji: Bu proje aslında bir “AI medya değerlendirme motoru”dur; işe alım yalnızca ilk uygulaması. Aynı omurga (yükle → yazıya dök → analiz et → puanla → raporla) çağrı merkezi kalite analizi, eğitim/sınav video değerlendirmesi, müşteri video-geri-bildirimi, tanıklık/ifade toplama, hatta sendikal/akademik liderlik taraması gibi çok farklı dikeylere taşınabilir — nitekim değerlendirme merceği prompt seviyesinde değiştirilerek İK’dan sendikal liderliğe bir kez fiilen uyarlandı. “Sıfır marjinal maliyet” duruşu, hacmi yüksek veya bütçesi dar müşterilerde güçlü bir satış argümanıdır.

Teknik: Taşırken (1) değerlendirme rubriğini prompt’tan parametrik tut — kod değişmeden yeni amaca uyar; (2) LLM her zaman fallback’li ve şema-doğrulamalı çağrılmalı, küçük modeller bozuk JSON üretir; (3) büyük dosya akışları için presigned doğrudan yükleme şart, sunucudan geçirme ölçeklenmez; (4) dayanıklılık için stuck PROCESSING kayıtlarını toplayan bir sweeper eklenmeli; (5) self-hosted LLM ev altyapısındaysa (Cloudflare Tunnel) çevrimdışılığa karşı Celery retry’a güven, kritik yolda olmasın.