Rynek pracy w branży technologicznej stał się polem bezwzględnej walki algorytmów. Jeden z programistów postanowił jednak odwrócić zasady gry – stworzył system Career-Ops, wysłał ponad 700 spersonalizowanych aplikacji i zdobył wymarzone zatrudnienie. Dziś to potężne narzędzie oparte na Claude Code jest w pełni open source.
Nowa era poszukiwania pracy: Kiedy ręczne wysyłanie CV przestaje działać
Każdy, kto w ciągu ostatnich kilkunastu miesięcy próbował zmienić pracę w sektorze IT lub szeroko pojętej branży technologicznej, doskonale zna ten scenariusz. Godziny spędzone na przeglądaniu portali z ogłoszeniami, dziesiątki zakładek otwartych w przeglądarce, żmudne dostosowywanie każdego akapitu w CV pod wymagania konkretnego pracodawcy i wreszcie – bezduszne formularze systemów ATS (Applicant Tracking Systems), które wymagają ponownego przepisywania tych samych danych, które przed chwilą załączyliśmy w pliku PDF. Na koniec najczęściej zapada głęboka cisza.
Sytuacja ta stała się frustrująca dla tysięcy wykwalifikowanych specjalistów. Proces rekrutacji po stronie pracodawców został zdominowany przez automatyczne filtry, które odrzucają aplikacje na podstawie braku konkretnych słów kluczowych, zanim jakikolwiek człowiek w ogóle na nie spojrzy. W tym asymetrycznym starciu kandydaci stoją na straconej pozycji – chyba że postanowią odpowiedzieć tą samą bronią.
Dokładnie to zrobił hiszpański inżynier oprogramowania, Santi Fernandez (@santifer). Zamiast poddać się rutynie ręcznego aplikowania, podszedł do problemu jak na programistę przystało: postanowił go zautomatyzować. Wykorzystując najnowsze możliwości asystentów programowania, w tym rewolucyjne narzędzie deweloperskie Claude Code od Anthropic, stworzył kompletny ekosystem automatyzacji rekrutacyjnej o nazwie Career-Ops. Wynik? Ponad 700 wysłanych aplikacji, precyzyjnie dopasowanych pod każdą ofertę, liczne zaproszenia na rozmowy kwalifikacyjne i ostatecznie – zdobycie wymarzonej pracy. Co najlepsze dla nas wszystkich, autor udostępnił cały projekt na licencji open source, dając każdemu szansę na wyrównanie szans w starciu z korporacyjnymi algorytmami.
Jak powstał system Career-Ops? Rola Claude Code w szybkim prototypowaniu
Stworzenie systemu, który nie tylko wyszukuje oferty, ale również analizuje je semantycznie, dynamicznie przebudowuje dokumenty aplikacyjne i wchodzi w interakcję ze złożonymi formularzami internetowymi, to ogromne wyzwanie inżynieryjne. W tradycyjnych warunkach budowa takiego oprogramowania mogłaby zająć jednemu programiście długie miesiące ciężkiej pracy. Kluczem do sukcesu okazało się jednak wykorzystanie nowoczesnych narzędzi wspomaganych sztuczną inteligencją.
Santi Fernandez oparł swój proces deweloperski na Claude Code – zaawansowanym interfejsie CLI od Anthropic, który pozwala modelom językowym na bezpośrednią interakcję z lokalnym systemem plików, uruchamianie testów, debugowanie kodu i pisanie całych modułów aplikacji w czasie rzeczywistym. Jeśli chcesz dowiedzieć się, jak skutecznie okiełznać potencjał tych modeli w codziennym programowaniu, warto sprawdzić, jak zmienić Claude AI w osobistego mentora i inżyniera oprogramowania.
Dzięki Claude Code autor był w stanie błyskawicznie przechodzić od pomysłu do działającego kodu. System potrzebował integracji wielu technologii: języka Go do budowy szybkiej i stabilnej warstwy CLI oraz dashboardu, Node.js i biblioteki Playwright do automatyzacji przeglądarki, a także interfejsów API modeli LLM do warstwy kognitywnej (analizy i syntezy tekstu). Claude Code działał tu jako super-asystent, który generował boilerplate, sugerował optymalne podejścia do parsowania skomplikowanych struktur HTML stron karier oraz pomagał w debugowaniu asynchronicznych operacji w Playwright.
W efekcie powstał system, który realizuje niezwykle zaawansowane projektowanie przepływów pracy (workflows), łącząc deterministyczny kod z niedeterministycznymi możliwościami modeli językowych. AI nie podejmuje tu decyzji w próżni – działa w ściśle zdefiniowanych ramach, realizując krok po kroku zadania, które dotychczas wymagały godzin ludzkiej uwagi.
Architektura Career-Ops: Automatyzacja od skanowania do wysyłki
System Career-Ops nie jest prostym skryptem do rozsyłania spamu. To przemyślana platforma, która dba o jakość i personalizację na każdym etapie. Możemy podzielić jej działanie na cztery główne fazy:
- Skanowanie i agregacja (Scraping): System monitoruje bezpośrednio strony karier wybranych firm oraz popularne agregatory. Pobiera pełne treści ogłoszeń, oczyszcza je z szumu nawigacyjnego i zapisuje w ustrukturyzowanej bazie danych.
- Ocena dopasowania (Scoring): Zanim system wyda choćby ułamek centa na zaawansowane przetwarzanie oferty przez LLM, dokonuje wstępnej analizy. Następnie model językowy porównuje profil kandydata z wymaganiami stanowiska, oceniając dopasowanie w skali od 1 do 100. Jeśli ocena jest zbyt niska, oferta jest odrzucana, co zapobiega aplikowaniu na stanowiska, na które nie mamy szans.
- Dostosowywanie dokumentów (Tailoring): Dla ofert, które przeszły weryfikację, system uruchamia proces generowania dedykowanego CV i listu motywacyjnego. AI analizuje, jakie doświadczenia z naszej historii zawodowej najlepiej odpowiadają na wyzwania opisane w ogłoszeniu, i odpowiednio redaguje sekcje, zachowując przy tym pełną prawdę historyczną.
- Automatyczna aplikacja (Auto-apply): Za pomocą bezgłowej przeglądarki sterowanej przez Playwright, system wchodzi na stronę aplikacyjną, lokalizuje pola formularza (takie jak imię, nazwisko, github, linkedin, oczekiwania finansowe), wypełnia je i załącza świeżo wygenerowane, spersonalizowane CV w formacie PDF.
Taki podział sprawia, że cały proces jest niezwykle precyzyjny. Użytkownik nie wysyła generycznego dokumentu do setek firm – wysyła setki dokumentów, z których każdy wygląda tak, jakby był pisany ręcznie przez profesjonalnego doradcę kariery specjalnie pod tę jedną, konkretną rolę.
Sercem systemu: 14 wyspecjalizowanych trybów pracy
Siła Career-Ops tkwi w jego modułowości. Zamiast jednego, monolitycznego procesu, system oferuje 14 różnych trybów pracy (sub-commands w CLI), które użytkownik może uruchamiać niezależnie lub łączyć w złożone potoki przetwarzania. Pozwala to na pełną kontrolę nad każdym etapem i ułatwia debugowanie.
- 1.
scan(Skanowanie ofert): Odpowiada za odpytywanie skonfigurowanych źródeł i pobieranie nowych ogłoszeń o pracę. - 2.
parse(Normalizacja danych): Przetwarza surowy kod HTML lub odpowiedzi JSON ze stron rekrutacyjnych na ustrukturyzowany format Markdown, ułatwiający dalszą analizę przez AI. - 3.
score(Analiza i ocena): Wykorzystuje LLM do porównania profilu użytkownika z wymaganiami oferty. Przypisuje punktację i generuje krótkie uzasadnienie, dlaczego dane stanowisko jest (lub nie jest) warte uwagi. - 4.
tailor(Optymalizacja CV): Generuje spersonalizowaną wersję profilu zawodowego, podkreślając te projekty i technologie z historii pracy użytkownika, które są kluczowe dla danego pracodawcy. - 5.
pdf(Generowanie dokumentów): Kompiluje dostosowany profil do formatu HTML, a następnie renderuje go do idealnego pliku PDF za pomocą Playwright. - 6.
cover-letter(List motywacyjny): Tworzy unikalny, kontekstowy list motywacyjny, bezpośrednio odnoszący się do problemów, jakie firma próbuje rozwiązać, zatrudniając na to stanowisko. - 7.
ats-check(Weryfikacja pod ATS): Symuluje zachowanie popularnych systemów skanujących, sprawdzając, czy wygenerowany plik PDF będzie prawidłowo odczytany przez automatyczne parser-y. - 8.
apply(Wypełnianie formularzy): Automatyzuje proces wprowadzania danych na platformach takich jak Greenhouse, Lever czy Workday przy użyciu precyzyjnych skryptów Playwright. - 9.
track(Zarządzanie statusem): Aktualizuje lokalną bazę danych o statusie aplikacji (np. "wysłane", "oczekiwanie", "odrzucone", "wywiad"). - 10.
skills-gap(Analiza luk kompetencyjnych): Analizuje odrzucone oferty lub te o niskim scoringu, wskazując użytkownikowi, jakich technologii lub umiejętności brakuje w jego portfolio, aby kwalifikować się na pożądane role. - 11.
company-research(Wywiad rynkowy): Pobiera dodatkowe informacje o firmie (np. ostatnie rundy finansowania, kluczowe produkty, kultura organizacyjna) w celu przygotowania kandydata do ewentualnej rozmowy. - 12.
clean(Konserwacja bazy): Czyści przestarzałe lub nieaktywne ogłoszenia oraz duplikaty z bazy danych. - 13.
verify(Walidacja linków): Sprawdza, czy linki do aplikacji są nadal aktywne, chroniąc przed marnowaniem zasobów na nieaktualne oferty. - 14.
analytics(Raportowanie): Generuje szczegółowe statystyki dotyczące skuteczności procesu (wskaźniki konwersji, czas reakcji pracodawców, koszty API).
Taka granularność sprawia, że Career-Ops to nie tylko automat do wysyłania CV, ale kompleksowe środowisko analityczne dla każdego, kto traktuje poszukiwanie pracy jak projekt inżynieryjny.
Dashboard w terminalu: Zarządzanie rekrutacją z poziomu konsoli w Go
Dla wielu programistów i inżynierów terminal jest naturalnym środowiskiem pracy. Santi Fernandez zdecydował, że zamiast budować skomplikowaną aplikację webową, która wymagałaby stawiania lokalnego serwera, baz danych i frontendu w React, stworzy minimalistyczny, ale niezwykle funkcjonalny dashboard bezpośrednio w konsoli.
Napisany w języku Go, przy użyciu nowoczesnych bibliotek do tworzenia interfejsów TUI (Terminal User Interface, takich jak prawdopodobnie Bubbletea od Charm), dashboard dostarcza użytkownikowi wszystkich niezbędnych informacji w zasięgu wzroku. Go zapewnia błyskawiczne działanie, minimalne zużycie zasobów i łatwość dystrybucji w postaci jednego pliku wykonywalnego.
Co dokładnie monitoruje użytkownik za pomocą tego dashboardu? Przede wszystkim:
- Status lejka rekrutacyjnego: Wizualne przedstawienie liczby ofert na poszczególnych etapach (odkryte, ocenione, spersonalizowane, wysłane, zaproszenia na rozmowy).
- Wskaźniki sukcesu: Procentowy udział pozytywnych odpowiedzi w stosunku do wszystkich wysłanych aplikacji.
- Koszty API: Ponieważ system intensywnie korzysta z modeli językowych (np. Anthropic Claude czy openai GPT), dashboard na bieżąco monitoruje zużycie tokenów i szacuje koszty finansowe operacji.
- Logi operacyjne: Podgląd na żywo działań wykonywanych przez Playwright – użytkownik widzi, na jakim etapie wypełniania formularza znajduje się obecnie bot.
To doskonały przykład tego, jak współcześni agenci AI w pracy mogą przejąć na siebie powtarzalne, nudne zadania biurowe, pozwalając człowiekowi skupić się wyłącznie na tym, co najważniejsze – czyli na przygotowaniu się do merytorycznej rozmowy kwalifikacyjnej.
Perfekcyjne CV pod systemy ATS dzięki Playwright
Jednym z największych problemów współczesnej rekrutacji jest to, jak systemy ATS interpretują pliki PDF. Wiele popularnych szablonów z serwisów takich jak Canva czy Novoresume, mimo że wyglądają atrakcyjnie dla ludzkiego oka (dwukolumnowy układ, kolorowe paski postępu umiejętności, ikony), są kompletnie nieczytelne dla maszynowych parserów. Tekst w nich bywa poszatkowany, odczytywany w złej kolejności lub wręcz niewidoczny dla algorytmu filtrującego.
Projekt Career-Ops rozwiązuje ten problem w sposób genialny w swojej prostocie. Zamiast generować pliki PDF za pomocą skomplikowanych bibliotek graficznych, system generuje dokumenty w czystym, semantycznym formacie HTML/CSS. Układ jest jednokolumnowy, czcionki standardowe, a struktura nagłówków (H1, H2, H3) idealnie odpowiada standardom czytników ekranowych i parserów ATS.
Następnie do gry wkracza Playwright – narzędzie stworzone do automatyzacji i testowania przeglądarek internetowych. Playwright uruchamia w tle bezgłową wersję Chromium, ładuje wygenerowaną stronę HTML z naszym spersonalizowanym CV i wykonuje zrzut do formatu PDF. Otrzymujemy w ten sposób dokument, który:
- Jest w 100% zgodny z wytycznymi ATS (tekst jest w pełni wektorowy, możliwy do zaznaczenia i skopiowania w prawidłowej kolejności).
- Wygląda niezwykle profesjonalnie, czysto i minimalistycznie, co budzi zaufanie rekruterów-ludzi na dalszych etapach.
- Może być generowany w setkach unikalnych wersji w kilka sekund, bez ryzyka rozjechania się marginesów czy formatowania.
Dzięki temu podejściu aplikacje wysyłane przez Career-Ops charakteryzują się niezwykle wysokim współczynnikiem przejścia przez pierwsze, automatyczne sito rekrutacyjne.
Ponad 45 gotowych integracji: Od Anthropic po Stripe
Career-Ops nie jest jedynie akademickim projektem – to narzędzie sprawdzone w bojowych warunkach rynkowych. W repozytorium systemu znajdziemy prekonfigurowane szablony i selektory dla ponad 45 czołowych firm technologicznych oraz najpopularniejszych systemów rekrutacyjnych na świecie. Wśród nich znajdują się tacy giganci jak:
- Anthropic (twórcy modeli Claude)
- openai (twórcy chatgpt)
- elevenlabs (liderzy syntezy głosu AI)
- Stripe (gigant płatności internetowych)
Konfiguracja ta oznacza, że system doskonale wie, jak poruszać się po portalach karier tych firm, jak identyfikować ich niestandardowe pytania rekrutacyjne (np. o link do profilu na githubie czy portfolio) i jak bezbłędnie przesyłać tam dokumenty.
Co niezwykle ważne, architektura systemu pozwala na niezwykle łatwe dostosowanie go do własnych potrzeb. Jeśli chcemy aplikować do mniejszych firm lub lokalnych software house-ów, wystarczy dodać nowy plik konfiguracyjny JSON/YAML z selektorami CSS dla formularzy danej witryny. Dzięki temu system staje się uniwersalnym narzędziem, które można dostosować do dowolnej niszy rynkowej.
Ruch Open Source a przyszłość automatyzacji
Decyzja Santiego Fernandeza o udostępnieniu Career-Ops jako projektu open source ma ogromne znaczenie dla całej społeczności. W czasach, gdy rynek oprogramowania jest coraz bardziej zdominowany przez zamknięte, płatne subskrypcje saas, oddanie tak potężnego narzędzia w ręce użytkowników pozwala na demokratyzację dostępu do zaawansowanych technologii.
Warto w tym miejscu zastanowić się nad naturą i trwałością takich inicjatyw. Historia pokazuje, że projekty tworzone z pasji, które rozwiązują realne, bolesne problemy twórców, często stają się fundamentem dla całych gałęzi oprogramowania. Analizując to, czego Daniel Stenberg nauczył nas o trwałości Open Source na przykładzie kultowego narzędzia curl, widzimy, że kluczem do sukcesu jest prostota, otwartość na wkład społeczności oraz skupienie się na niezawodnym rozwiązywaniu jednego, konkretnego zadania. Career-Ops ma szansę stać się takim "curl-em" dla rynku pracy, jeśli społeczność zaangażuje się w jego rozwój, aktualizując selektory formularzy i dodając nowe tryby pracy.
Wdrożenie Career-Ops: Wymagania, koszty i potencjalne ryzyka
Zanim zdecydujesz się na uruchomienie Career-Ops i automatyzację swojego procesu rekrutacyjnego, musisz zdać sobie sprawę z wymagań technicznych oraz wyzwań, jakie się z tym wiążą. To nie jest aplikacja typu "kliknij i zapomnij" dla osób nietechnicznych – wymaga ona pewnej wiedzy z zakresu inżynierii oprogramowania.
Wymagania systemowe i konfiguracja
Aby uruchomić system lokalnie, na swoim komputerze musisz posiadać zainstalowane:
- Go (Golang): Do skompilowania i uruchomienia warstwy CLI oraz dashboardu.
- Node.js oraz NPM/pnpm: Niezbędne do działania biblioteki Playwright, która odpowiada za automatyzację przeglądarki.
- Klucze API: Dostęp do API modeli językowych (np. Anthropic Claude API lub openai API). To tutaj odbywa się cała magia analizy tekstu.
Kwestia kosztów API
Choć sam kod źródłowy Career-Ops jest całkowicie darmowy, to korzystanie z niego wiąże się z realnymi kosztami finansowymi. Każde odpytanie modelu LLM o ocenę oferty (scoring) czy wygenerowanie spersonalizowanego CV (tailoring) zużywa tokeny. Przy intensywnym skanowaniu i aplikowaniu na setki stanowisk, koszty te mogą wynieść od kilkunastu do nawet kilkudziesięciu dolarów miesięcznie.
Aby zminimalizować te wydatki, warto skonfigurować system tak, by w pierwszej kolejności dokonywał lokalnego, deterministycznego filtrowania ofert (np. po słowach kluczowych w tytule czy lokalizacji), a zaawansowane modele AI uruchamiał dopiero dla starannie wyselekcjonowanej puli ogłoszeń.
Wyzwania etyczne i techniczne: Gdzie leży granica?
Automatyzacja rekrutacji na taką skalę budzi również istotne pytania natury etycznej i praktycznej. Czy masowe wysyłanie aplikacji za pomocą botów nie psuje rynku jeszcze bardziej? Czy rekruterzy, zalewani falami automatycznie wygenerowanych CV, nie zaczną stosować jeszcze bardziej restrykcyjnych i bezwzględnych metod weryfikacji kandydatów?
Kluczem do odpowiedzialnego korzystania z Career-Ops jest zasada Human-in-the-Loop (człowiek w pętli decyzyjnej). System powinien służyć jako potężny asystent, który wykonuje za nas czarną robotę (wyszukiwanie, wstępne formatowanie, wypełnianie nudnych pól), ale ostateczna decyzja o wysłaniu aplikacji oraz weryfikacja merytoryczna wygenerowanego CV zawsze powinna należeć do nas. Halucynacje modeli językowych są faktem – wysłanie CV, w którym AI przypisało nam projekty, których nigdy nie realizowaliśmy, może trwale zniszczyć naszą reputację w branży.
Podsumowanie: Czy to początek wojny algorytmów w rekrutacji?
Projekt Career-Ops to fascynujący pokaz siły, jaki drzemie w połączeniu nowoczesnych modeli językowych, narzędzi deweloperskich takich jak Claude Code oraz klasycznej automatyzacji przeglądarkowej. Pokazuje on, że w obliczu kryzysu na rynku pracy i coraz trudniejszych procesów rekrutacyjnych, kandydaci nie muszą być bezbronni.
Wkraczamy jednak w erę, którą można nazwać "wojną algorytmów". Z jednej strony barykady stoją systemy ATS oparte na AI, których zadaniem jest odrzucenie jak największej liczby kandydatów. Z drugiej strony stoją narzędzia takie jak Career-Ops, które optymalizują aplikacje tak, by bez problemu te filtry omijać. Jak zakończy się to starcie? Najprawdopodobniej powrotem do korzeni – rzetelnej, bezpośredniej weryfikacji umiejętności technicznych podczas rozmów na żywo oraz budowania sieci osobistych kontaktów. Do tego czasu jednak, Career-Ops pozostaje jednym z najbardziej zaawansowanych i skutecznych narzędzi w rękach nowoczesnego inżyniera szukającego nowych wyzwań zawodowych.
Komentarze