Teknoloji alanında bir iş başvurusu yaptıysanız, yaşanan sıkıntıları biliyorsunuzdur: Mükemmel bir geliştirici özgeçmişi hazırlamak için saatler harcıyorsunuz, GitHub bağlantılarınızı güncelliyorsunuz, başvurunuzu yapıyorsunuz ve ardından… hiçbir şey olmuyor. Özgeçmişiniz, İnsan Kaynakları Yönetim Sistemi (ATS) kara deliğine düşüyor.
%75’ten fazla özgeçmiş, kötü biçimlendirme veya eksik anahtar kelimeler nedeniyle insanlar tarafından görülmeden otomatik olarak reddediliyor. Bu durum beni o kadar sinirlendirdi ki, bir çözüm geliştirmeye karar verdim.
Son zamanlarda ATSense, %100 ücretsiz bir ATS Özgeçmiş Kontrol Aracı ve Oluşturucusu başlattım. Bu araç, Workday ve Greenhouse gibi sistemlerde kullanılan tam anlamıyla ayrıştırma algoritmalarını taklit ediyor, özgeçmişinizi derecelendiriyor ve düzeltmek için yapay zeka kullanıyor.
Bu yazıda, bunu React, Laravel ve OpenAI API kullanarak nasıl inşa ettiğimi ve bir ATS ayrıştırıcısı oluşturmanın neden bu kadar zor olduğunu açıklamak istiyorum.
Teknoloji Yığınları
Teknoloji Yığınları
Hızlı bir frontend etkileşimi (sürükleyip bırakmalı özgeçmiş oluşturucu için) sunabilen ve PDF çıkarımı ile API oran sınırlarını yönetebilen yüksek güvenli, ölçeklenebilir bir backend’e ihtiyaç duydum.
- Frontend: React, Vite, Tailwind CSS, Lucide Icons
- Backend: Laravel 11 (PHP 8.2), MySQL
- AI Motoru: OpenAI GPT-4 API
- Deployment: GitHub Actions CI/CD to cPanel
Zorluk 1: UI ve “Misafir Öncelikli” Mimari
Zorluk 1: UI ve “Misafir Öncelikli” Mimari
Bir geliştirici olarak, denemek için kaydolmayı sevmiyorum. ATSense’in “Misafir Öncelikli” bir uygulama olmasını istedim. Kullanıcı, PDF’sini yükleyip anında puanını alabiliyor, e-posta veya kredi kartı bilgisi vermek zorunda kalmıyor.
Bu nedenle, React frontend önemli işler yapıyor. Tailwind CSS kullanarak kullanıcıların PDF’lerini bir tarafta görebileceği ve dinamik ATS puanlama HUD’unu diğer tarafta izleyebileceği iki sütunlu “Recruitment Cockpit” oluşturmayı tercih ettim.
Durum yönetimini React’te merkezi olarak tutarak, kullanıcılar madde başlıklarını ayarlayıp ATS Eşleşme Skoru’nu anlık olarak güncelleyebiliyor.
Zorluk 2: PDF’yi Ayrıştırmak ve ATS Mantığı
Zorluk 2: PDF’yi Ayrıştırmak ve ATS Mantığı
Bir ATS kontrol aracı oluşturmanın en zor tarafı, PDF’lerin metin yapısını korumada son derece kötüdür. Bir insan “Deneyim” bölümünü temiz bir şekilde görebilirken, bir ayrıştırıcı karmaşık bir koordinat dizisi olarak görebilir.
Bunu çözmek için Laravel backend devreye giriyor. Kullanıcı özgeçmişini yüklediğinde:
- Çıkarma: Laravel,
multipart/form-datayüklemesini kabul eder ve ham metni çıkarır. - Yapılandırma: Regex ve Laravel’in şık koleksiyon boru hatlarını kullanarak, backend standart ATS başlıklarını (ör. Deneyim, Eğitim, Beceriler) arar ve belgeyi okunabilir bir JSON şemasına yeniden yapılandırır.
- Puanlama: Çıkarılan verileri standart ATS uyumluluk kurallarına karşı değerlendiririz. (Tuhaf grafikler var mı? İletişim bilgileri başlıkta mı gizlenmiş? Sayısal veriler var mı?)
Zorluk 3: Boşluk Analizi için AI Enjekte Etmek
Zorluk 3: Boşluk Analizi için AI Enjekte Etmek
Özgeçmişinizin başarısız olduğunu bilmek sorunun sadece yarısı. Aracın aynı zamanda düzeltmesini istedim.
Kullanıcı, UI’ye bir İş Tanımı bıraktığında, Laravel, ayrıştırılan özgeçmiş JSON’unu ve İş Tanımını OpenAI GPT-4 API‘ye gönderir, bu işlem sıkı bir düşük sıcaklık prompt sistemi kullanır.
Yapay zeka bir “Boşluk Analizi” gerçekleştirir; işverenin talep ettiği sert becerileri kullanıcı tarafından yazılanlarla karşılaştırır. Sadece “React Hooks” eksik demekle kalmaz; aynı zamanda, özgeçmişinize doğrudan eklemeniz için önerilen optimize edilmiş bir başarı madde başlığı üretir.
Sıra Ne?
Sıra Ne?
Temel altyapıyı oluşturmak birçok geç saatler aldı, ancak insanların nihayet ATS botlarını aşabilirken görmek her şeye değer.
Şu an iş arıyorsanız veya özgeçmişinizin botlarla nasıl başa çıktığını görmek istiyorsanız, mutlaka denemenizi tavsiye ederim!
👉 Özgeçmişinizi ATSense Grader ile test edin
Teknoloji yığını hakkında ne düşündüğünüzü veya kullanıcı deneyimimi eleştirmek için yorumlarınızı duymak isterim!
Kaynak: Orijinal Makale


