Skip to content

coBoarding to kompleksowy, kontenerowy system do automatycznego wypełniania formularzy rekrutacyjnych, kładący nacisk na prywatność, elastyczność oraz wsparcie wielojęzyczne.

License

Notifications You must be signed in to change notification settings

coboarding/python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

coBoarding


Dokumentacja


coBoarding to kompleksowy, kontenerowy system do automatycznego wypełniania formularzy rekrutacyjnych, kładący nacisk na prywatność, elastyczność oraz wsparcie wielojęzyczne.

co Boarding


Szybki start

Wymagania wstępne

  • Python 3.11+ lub 3.12
  • Docker i Docker Compose v2

Pierwsze uruchomienie na Ubuntu/Debian

git clone https://github.com/coboarding/python.git
cd python
bash install.sh  # automatyczna instalacja zależności i Docker Compose v2 (Ubuntu/Debian)
bash run.sh      # lub ./run.ps1 na Windows

WAŻNE: Skrypt install.sh jest przeznaczony dla systemów Ubuntu/Debian (używa apt-get). Na innych dystrybucjach Linuksa (np. Fedora, Arch, CentOS, Alpine) należy samodzielnie zainstalować: Python 3.11+, pip, venv, Docker i Docker Compose v2.

Pierwsze uruchomienie na Windows

git clone https://github.com/coboarding/python.git
cd python
./install.ps1   # instalacja zależności i środowiska (PowerShell)
./run.ps1       # uruchomienie systemu (PowerShell)

Pierwsze uruchomienie automatycznie skonfiguruje środowisko (venv, zależności, kontenery, Docker Compose v2).


Diagramy architektury i przepływu znajdziesz w dokumentacji online (docs/architecture.md)

Jak to działa

coBoarding automatyzuje proces aplikowania na portale pracy:

  1. Wykrywa sprzęt i dobiera model LLM
  2. Konfiguruje środowisko (Docker, Python, cache pip)
  3. Uruchamia Web UI (HTTPS, obsługa głosowa, noVNC)
  4. Wykrywa język formularza (PL, DE, EN)
  5. Integruje się z menedżerami haseł (Bitwarden/PassBolt)
  6. Generuje pipeline do wypełnienia formularza
  7. Testuje i wizualizuje proces przez noVNC
  8. Automatycznie pobiera tokeny z emaila (np. 2FA) przez endpoint /get-email-token
  9. Wysyła podsumowania i załączniki na email po złożeniu formularza (/fill-form)
  10. Loguje statusy zgłoszeń do bazy SQLite i umożliwia rozbudowę usług podsumowań

System działa na architekturze mikroserwisowej (browser-service, llm-orchestrator, web-interface, novnc), komunikujących się przez sieć Docker.


Nowe funkcje (2025):

Pobieranie tokenów z emaila

  • Endpoint /get-email-token umożliwia automatyczne pobieranie kodów (np. 2FA) z wybranej skrzynki email (IMAP, regex, wsparcie Gmail/MS/PRV)
  • Przykład użycia:
    POST /get-email-token
    {
      "imap_server": "imap.gmail.com",
      "email_user": "twoj_email@gmail.com",
      "email_pass": "app_password",
      "search_subject": "Twój kod logowania",
      "token_regex": "\\b\\d{6}\\b"
    }

Wysyłanie podsumowań i załączników na email

  • Endpoint /fill-form przyjmuje opcjonalne pole notify_email – jeśli podane, po złożeniu formularza wysyła podsumowanie oraz załącznik (np. CV) na ten adres
  • Wysyłka obsługiwana przez send_email_utils.py (SMTP, TLS, załączniki)

Baza statusów zgłoszeń

  • Wszystkie zgłoszenia/formularze są logowane do bazy SQLite (form_status.db lub ścieżka z FORMS_DB_PATH)
  • Dane: URL formularza, email do powiadomień, kod odpowiedzi, szczegóły, timestamp
  • Możliwość rozbudowy o osobną usługę raportowania/przeglądania statusów

Konfiguracja środowiska przez pliki .env

  • W katalogu głównym znajdziesz szablony:
    • .env.gmail – Gmail
    • .env.ms – Microsoft/Outlook
    • .env.prv – prywatny serwer
  • Skopiuj wybrany plik do .env i uzupełnij swoimi danymi:
    SMTP_SERVER=smtp.gmail.com
    SMTP_PORT=587
    SMTP_USER=twoj_email@gmail.com
    SMTP_PASS=twoje_haslo
    EMAIL_FROM=twoj_email@gmail.com
    IMAP_SERVER=imap.gmail.com
    IMAP_USER=twoj_email@gmail.com
    IMAP_PASS=twoje_haslo
    FORMS_DB_PATH=form_status.db
  • Uwaga! Nie commituj swoich danych dostępowych do repozytorium!

Pliki narzędziowe

  • send_email_utils.py – obsługa SMTP, wysyłka emaili z załącznikami
  • email_utils.py – pobieranie tokenów z emaila (IMAP, regex)

Wskazówki bezpieczeństwa

  • Przechowuj dane dostępowe wyłącznie w .env (nie commituj do repo!)
  • W przypadku testów na publicznych serwerach używaj kont tymczasowych
  • Możesz zmienić nazwę bazy statusów przez FORMS_DB_PATH

Przykłady zastosowań

  • Automatyczne wypełnianie formularzy rekrutacyjnych (LinkedIn, Pracuj.pl, StepStone, Indeed)
  • Masowe aplikowanie na wiele ogłoszeń z zachowaniem prywatności
  • Wsparcie dla osób z niepełnosprawnościami (obsługa głosowa)
  • Integracja z własnym ATS
  • Testowanie formularzy webowych

Główne cechy

  • Architektura oparta na Docker (browser-service, llm-orchestrator, novnc, web-interface)
  • 100% lokalne przetwarzanie danych (prywatność)
  • Wykrywanie sprzętu (GPU/CPU, RAM) i automatyczny dobór modelu LLM
  • Wielojęzyczność (PL, DE, EN) z automatyczną detekcją
  • Nowoczesny web UI z HTTPS i sterowaniem głosowym
  • Automatyczna generacja pipelines dla portali pracy
  • Wizualizacja procesu przez noVNC
  • Integracja z menedżerami haseł (Bitwarden, PassBolt)
  • Kompletne środowisko testowe

Porównanie rozwiązań do automatycznego wypełniania formularzy

Cecha coBoarding (Nasze rozwiązanie) Manus AI rtrvr.ai Magical
Model wdrożenia Self-hosted Docker SaaS / cloud-based Rozszerzenie Chrome Rozszerzenie Chrome
Koszt Darmowy (open source) Od 39$/mies. za 3900 kredytów 10$/mies. (~10,000 akcji) Od 10$/mies.
Wymagania systemowe Docker, min. 8GB RAM (więcej dla lepszych modeli LLM) Tylko przeglądarka Tylko przeglądarka Tylko przeglądarka
Przetwarzanie danych 100% lokalne W chmurze W przeglądarce W przeglądarce
Wielojęzyczność PL/DE/EN z auto-detekcją Wiele języków Ograniczone Ograniczone
Interfejs użytkownika Web UI + noVNC + sterowanie głosowe Webowa aplikacja Prosty UI w Chrome Intuicyjny UI w Chrome
Modele AI Lokalne LLM, wybór modeli wg. dostępnych zasobów GPT-4, Claude Wbudowane AI Wbudowane AI (API)
Obsługa uploadów plików Pełna obsługa Pełna obsługa Ograniczona Ograniczona
Wypełnianie złożonych formularzy Zaawansowana analiza i mapowanie Zaawansowana analiza Podstawowa analiza Podstawowa analiza
Integracja z hasłami Bitwarden, PassBolt Różne menedżery Integracja z Chrome Integracja z Chrome
Nagrywanie sesji Wbudowane Wbudowane Brak Brak
Automatyczna generacja pipeline'ów Z użyciem LLM Z użyciem GPT-4 Brak Brak
Sterowanie głosowe Web Speech API Ograniczone Brak Brak
Własne środowisko testowe Rozbudowane z różnymi typami formularzy Brak Brak Brak
Skalowalność Ograniczona do zasobów lokalnych/serwera Chmurowa Ograniczona do przeglądarki Ograniczona do przeglądarki
Łatwość instalacji Wymaga konfiguracji Docker Bardzo łatwa Bardzo łatwa Bardzo łatwa
Prywatność danych Pełna (wszystko lokalnie) Dane w chmurze W przeglądarce W przeglądarce
Wsparcie Społeczność, Komercyjne, Discord Komercyjne, SLA Komercyjne Komercyjne

📚 Spis treści / Menu


Instalacja środowiska (Python 3.11+ / 3.12 na Ubuntu 24.10+)

Aby uniknąć problemów z kompatybilnością (np. PyAudio vs Python 3.12), zalecane jest użycie Pythona 3.11. Na Ubuntu 24.10+ dostępny jest tylko Python 3.12 – patrz uwaga poniżej!

# (Linux/Ubuntu) Instalacja wymaganych pakietów
sudo apt-get update && sudo apt-get install python3.11 python3.11-venv python3.11-dev
# Na Ubuntu 24.10+:
sudo apt-get install python3.12 python3.12-venv python3.12-dev

# Utworzenie i aktywacja środowiska wirtualnego
python3.11 -m venv venv-py311   # lub
python3.12 -m venv venv-py312   # na Ubuntu 24.10+
source venv-py311/bin/activate  # lub
source venv-py312/bin/activate

# Instalacja zależności
pip install --upgrade pip
pip install -r requirements.txt

Możesz także użyć skryptu:

bash install.sh  # automatyczna instalacja Docker Compose v2 (plugin CLI)

Po instalacji Compose v2 dostępne będzie jako polecenie:

docker compose version

Uwaga dot. PyAudio i Python 3.12: PyAudio nie jest kompatybilne z Python 3.12 (błąd: pkgutil.ImpImporter).

Struktura kontenerów

  • browser-service: Selenium, Chrome/Firefox
  • llm-orchestrator: API do analizy formularzy, wykrywanie sprzętu, zarządzanie modelami LLM (torch, transformers, langchain)
  • novnc: Podgląd przeglądarki
  • web-interface: React, HTTPS, Web Speech API

Weryfikacja wdrożenia

  • Czy docker-compose.yml zawiera wszystkie kontenery i wolumeny?
  • Czy skrypty inicjalizacyjne wykrywają sprzęt?
  • Czy web-interface jest dostępny przez HTTPS?
  • Czy API llm-orchestrator działa?
  • Czy testy przechodzą dla przykładowych formularzy?

Scenariusze testowe

  • Wypełnianie prostego i złożonego formularza
  • Test wielojęzyczności
  • Test podglądu przez noVNC
  • Test integracji z menedżerem haseł

Dokumentacja

Szczegółowe prompty i pytania weryfikacyjne znajdziesz w pliku TODO.txt.

Kontakt i wsparcie

Masz pytania lub potrzebujesz pomocy? Oferujemy wsparcie społeczności/komercyjne oraz szybki kontakt przez kanał na Discord:

Projekt open-source. Wszelkie zgłoszenia błędów i propozycje zmian prosimy kierować przez Issues na GitHub.

coBoarding

System do automatycznego wypełniania formularzy internetowych wykorzystujący lokalne modele językowe (LLM) w trzech językach (polski, niemiecki, angielski) bazujący na danych z CV.

coBoarding Logo

Funkcjonalności

  • Automatyczne wykrywanie formularzy na stronach internetowych
  • Inteligentne dopasowywanie danych z CV do pól formularza
  • Obsługa trzech języków: polski, niemiecki, angielski - automatyczne wykrywanie języka formularza
  • Lokalna analiza językowa z wykorzystaniem modeli LLM (bez wysyłania danych do zewnętrznych API)
  • Wsparcie dla różnych formatów CV: HTML, PDF, DOCX
  • Pełna automatyzacja procesu wypełniania formularzy rekrutacyjnych
  • Zrzuty ekranu wypełnionych formularzy do weryfikacji

Wymagania systemowe

  • Docker i Docker Compose
  • Minimum 8GB RAM (zalecane 16GB)
  • Minimum 10GB wolnego miejsca na dysku
  • Połączenie z internetem (tylko do pobierania modeli LLM przy pierwszym uruchomieniu)

Szybki start

1. Sklonuj repozytorium

git clone https://github.com/coboarding/python.git
cd python

2. Przygotuj CV

Umieść swoje CV w katalogu cv/ w jednym z obsługiwanych formatów (HTML, PDF, DOCX).

3. Utwórz plik z adresami URL

Utwórz plik urls.txt z adresami stron zawierających formularze rekrutacyjne:

https://example.com/job-application1
https://example.com/job-application2

4. Uruchom skrypt startowy

chmod +x run.sh
./run.sh

Skrypt przeprowadzi Cię przez proces uruchomienia systemu.

Szczegółowa konfiguracja

Możesz dostosować działanie systemu edytując plik config.ini:

[CV]
path = /app/cv/cv_tom_sapletta_2025_de.html

[LLM]
model_path = /app/models/mistral.gguf
model_type = llama
device = cpu

[Browser]
type = chrome
headless = true

[Output]
directory = /app/output

Dostępne modele LLM

System domyślnie używa modelu Mistral, ale możesz użyć jednego z następujących modeli:

  • mistral.gguf - Mistral 7B (domyślny, dobry kompromis między jakością a wymaganiami)
  • llama-2-7b.gguf - Llama 2 7B (alternatywa)
  • falcon-7b.gguf - Falcon 7B (alternatywa)

Większe modele (13B, 70B) zapewniają lepszą jakość, ale wymagają więcej zasobów.

Tryby działania

System można uruchomić w trzech trybach:

  1. Tryb wsadowy - przetwarzanie wszystkich adresów URL z pliku:

    python main.py --config config.ini --urls-file urls.txt
  2. Tryb pojedynczego URL - przetwarzanie pojedynczego adresu:

    python main.py --config config.ini --url https://example.com/job-application
  3. Tryb interaktywny - do debugowania (tylko w Dockerze):

    # W docker-compose.yml zmień command: sleep infinity
    docker-compose up -d
    docker exec -it coBoarding bash

Obsługa błędów

Typowe problemy

  1. Problem: Kontener Docker kończy działanie z błędem Rozwiązanie: Sprawdź logi: docker-compose logs

  2. Problem: Formularze nie są poprawnie wykrywane Rozwiązanie: Niektóre strony używają niestandardowego JavaScript. Spróbuj uruchomić w trybie nieheadless.

  3. Problem: Model LLM nie jest pobierany automatycznie Rozwiązanie: Pobierz model ręcznie i umieść go w katalogu models/

Szczegółowe logowanie i debugowanie

W plikach Dockerfile, install.sh oraz run.sh zostały dodane szczegółowe komunikaty [DEBUG] oraz [INFO].

  • Każdy kluczowy etap instalacji, budowy obrazu i uruchamiania usług jest logowany.
  • Logi pomagają szybko zlokalizować miejsce, gdzie wystąpił problem.
  • W terminalu zobaczysz wyraźne komunikaty o postępie i ewentualnych błędach.

Wskazówka: Jeśli coś pójdzie nie tak, sprawdź logi [DEBUG] w konsoli — wskażą, na którym etapie pojawił się problem.

Jak to działa

  1. System analizuje CV użytkownika, parsując kluczowe informacje (doświadczenie, umiejętności, wykształcenie).
  2. Dla każdego URL, system uruchamia zautomatyzowaną przeglądarkę i wykrywa formularze na stronie.
  3. Lokalny model LLM analizuje strukturę formularza i jego pola.
  4. System inteligentnie dopasowuje dane z CV do pól formularza, tłumacząc je na odpowiedni język.
  5. Formularz jest automatycznie wypełniany, a zrzut ekranu jest zapisywany do weryfikacji.

Bezpieczeństwo

  • Wszystkie dane są przetwarzane lokalnie
  • Żadne informacje nie są wysyłane do zewnętrznych API
  • Lokalne modele LLM zapewniają prywatność danych
  • System nie wysyła automatycznie formularzy - tylko je wypełnia

Licencja

Ten projekt jest udostępniany na licencji MIT. Szczegółowe informacje można znaleźć w pliku LICENSE.

Autor

Tom Sapletta

Współpraca

Chętnie przyjmujemy Pull Requesty! Aby przyczynić się do rozwoju projektu:

  1. Sforkuj repozytorium
  2. Utwórz branch z nową funkcjonalnością (git checkout -b feature/amazing-feature)
  3. Zatwierdź zmiany (git commit -m 'Add amazing feature')
  4. Wypchnij branch (git push origin feature/amazing-feature)
  5. Otwórz Pull Request

Struktura projektu coBoarding

coBoarding/
├── cv/                                 # Katalog na pliki CV
│   └── cv_tom_sapletta_2025_de.html    # Twoje CV w formacie HTML
│
├── models/                             # Katalog na modele LLM
│   └── mistral.gguf                    # Pobrany automatycznie przy pierwszym uruchomieniu
│
├── output/                             # Katalog na dane wyjściowe (zrzuty ekranu)
│
├── Dockerfile                          # Definicja obrazu Docker
├── docker-compose.yml                  # Konfiguracja Docker Compose
├── config.ini                          # Konfiguracja aplikacji
├── requirements.txt                    # Zależności Pythona
├── main.py                             # Główny skrypt aplikacji
├── run.sh                              # Skrypt do łatwego uruchamiania
├── urls.txt                            # Lista adresów URL do przetworzenia
└── README.md                           # Dokumentacja projektu

Opis plików

Główne pliki aplikacji

  • main.py: Główny skrypt aplikacji zawierający całą logikę wypełniania formularzy.
  • config.ini: Plik konfiguracyjny aplikacji.
  • requirements.txt: Lista zależności Pythona potrzebnych do działania aplikacji.
  • urls.txt: Plik z listą adresów URL stron z formularzami do wypełnienia.
  • run.sh: Skrypt ułatwiający uruchamianie aplikacji.

Pliki Docker

  • Dockerfile: Definicja obrazu Docker z potrzebnymi zależnościami.
  • docker-compose.yml: Konfiguracja Docker Compose do łatwego uruchamiania aplikacji.

Katalogi danych

  • cv/: Katalog zawierający pliki CV, z których aplikacja będzie czerpać dane do wypełniania formularzy.
  • models/: Katalog zawierający modele LLM używane do analizy formularzy i generowania odpowiedzi.
  • output/: Katalog przechowujący zrzuty ekranu wypełnionych formularzy.

Kluczowe funkcjonalności

Aplikacja działa w następujący sposób:

  1. Parsuje CV użytkownika, aby wydobyć kluczowe informacje.
  2. Otwiera stronę internetową z formularzem w zautomatyzowanej przeglądarce.
  3. Analizuje formularz za pomocą lokalnego modelu językowego (LLM).
  4. Dopasowuje dane z CV do pól formularza, automatycznie tłumacząc je na odpowiedni język (polski, niemiecki, angielski).
  5. Wypełnia formularz i wykonuje zrzut ekranu.

Całość działa w kontenerze Docker, co zapewnia łatwą instalację i uruchomienie na różnych systemach operacyjnych.


<script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true, theme: 'default', securityLevel: 'loose' }); </script>

About

coBoarding to kompleksowy, kontenerowy system do automatycznego wypełniania formularzy rekrutacyjnych, kładący nacisk na prywatność, elastyczność oraz wsparcie wielojęzyczne.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published