https://github.com/eric-esoteric/job-hunter-ai
π― Job Hunter AI β ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΠ-Π°ΡΡΠΈΡΡΠ΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΡΠ΅Π²Π° Π²Π°ΠΊΠ°Π½ΡΠΈΠΉ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΈΡΠ΅ΠΌ.
https://github.com/eric-esoteric/job-hunter-ai
ai automation chrome-extension gemini job-search parser python tkinter webhooks
Last synced: 1 day ago
JSON representation
π― Job Hunter AI β ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΠ-Π°ΡΡΠΈΡΡΠ΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΡΠ΅Π²Π° Π²Π°ΠΊΠ°Π½ΡΠΈΠΉ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΈΡΠ΅ΠΌ.
- Host: GitHub
- URL: https://github.com/eric-esoteric/job-hunter-ai
- Owner: eric-esoteric
- Created: 2026-06-24T07:08:04.000Z (5 days ago)
- Default Branch: main
- Last Pushed: 2026-06-24T10:10:39.000Z (5 days ago)
- Last Synced: 2026-06-24T10:12:10.052Z (5 days ago)
- Topics: ai, automation, chrome-extension, gemini, job-search, parser, python, tkinter, webhooks
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
π¬π§ English | π·πΊ Π ΡΡΡΠΊΠΈΠΉ
Job Hunter AI
Your personal AI recruiter, working for you 24/7
---
**Job Hunter AI** is not just a script. It's a full-featured AI assistant that analyzes job listings directly in your browser, ruthlessly filters out garbage, and writes targeted cover letters β while you focus on actually preparing for interviews.
β‘ Why this will change your routine
- π° 100% Free β runs on your own API keys, including the free Gemini tier
- π‘οΈ Hard filter β up to 60% β scam, MLM, 60h/week slavery, and info-business don't get through
- βοΈ Cover letter in seconds β a personalized response matched to the exact job requirements
- π Cloud or your PC β Gemini, GPT-5, Claude 4 or locally via Ollama / LM Studio
- π Full privacy β with local AI, your data never leaves your machine
- π EN / RU β fully localized interface, language persists between sessions
## βοΈ Quick Start
Install the desktop application and the Chrome extension. Full step-by-step guide:
[](docs/INSTALL.md)
β¨ Full feature breakdown
π§ Multi-engine AI cascade with Failover
Automatic switching between Gemini 3.5, GPT-5, Claude 4, DeepSeek, and local models. If the primary provider is unavailable β the next one takes over without dropping the task.
π Local AI β no internet, no API keys
Native HTTP integration with Ollama and LM Studio. A background probe monitors server availability and reflects status in the UI (neon cyan / muted red). LOCAL_SAFE_PARAMS compensate for artifacts in quantized 4-bit models.
π‘οΈ Two-stage AI analysis
Stage 1 β Filter: Detects scam, MLM, toxic work conditions (>45h/week, uncompensated night shifts, info-business, mass hiring). Plus geographic compliance β filters out offers that prohibit remote work from your country.
Stage 2 β Cover letter: Only for approved listings. A targeted response addressing the employer's real pain points β no filler, no templates.
π§ 5-level JSON repair pipeline
The parser automatically recovers malformed LLM responses: strips Markdown wrappers, cleans trailing commas, fixes boolean literals and broken quotes. No result is ever lost due to model formatting quirks.
π Resume history and PDF import
The π button in the main window lets you save multiple resume versions and switch between them in one click. Direct PDF import with AI text extraction is supported.
π Telegram-style toast notifications
No system dialogs. Animated notifications slide in from the bottom of the screen, respect the Windows taskbar height, and never block the interface. Left color bar: neon cyan for success, bright red for alerts. Audio plays in a dedicated thread.
π Full localization (EN / RU)
Language is switched in settings and saved to config.json. The entire interface β buttons, messages, errors, counters β passes through a single jh_i18n.py module with named variable substitution.
β‘ Flicker-free smart UI
Child windows open at alpha=0.0, compute their coordinates for the current DPI, and appear only after the frame is fully rendered β no position jumps, no flickering. The vacancy list updates incrementally: only changed cards are re-rendered. Dark title bar and icon are set via Win32 API.
---
πΊοΈ Architecture diagram (How it works under the hood)
ββββββββββββββββββββββββββββββββββββββββββ
β CHROME BROWSER β
β (User clicks in the extension) β
βββββββββββββββββββββ¬βββββββββββββββββββββ
β HTTP POST ( vacancy_data )
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β LOCAL FLASK API β [main_app.py]
β (Kills zombie processes on port 5000) β jh_version.py β build metadata
βββββββββββββββββββββ¬βββββββββββββββββββββ
β Enqueues task (.put)
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β THREAD-SAFE QUEUE β [queue.Queue]
β 15s Timer | Rate Limit Guard β Countdown status bar
βββββββββββββββββββββ¬βββββββββββββββββββββ
β Background thread β task
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β MULTI-ENGINE AI CASCADE β [src/jh_ai_engine.py]
β Gemini 3.5 β GPT-5 β Claude 4 β β Failover Chain
β DeepSeek β Ollama β LM Studio β 5-level JSON repair
β β Exception hierarchy
ββββββββββββ¬ββββββββββββββββββ¬ββββββββββββ LOCAL_SAFE_PARAMS
β β
βββββββββΌββββββββ ββββββββΌβββββββββββ
β STAGE 1 β β STAGE 2 β
β Hard filter β β Cover letter β
β (up to 60%) β β generation β
β Toxic cond. β β (approved only)β
β Geo-complianceβ ββββββββ¬βββββββββββ
ββββββββ¬βββββββββ β
β REJECTED β APPROVED
ββββββββββ¬ββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β JH STORAGE MANAGER β [src/jh_storage_manager.py]
β AppData/Roaming/Job Hunter AI/ β Resume history | PDF import
βββββββββββββββββββββ¬βββββββββββββββββββββ Log: max 50 entries
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β JH UI + NOTIFICATIONS β [src/jh_results_ui.py]
β Signature cache | HiDPI | Dark Win32 β [src/jh_notifications.py]
β Hotkeys (RU/EN keyboard layouts) β Toast animations | Audio thread
βββββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββΌβββββββββββ
β jh_i18n.py (EN/RU)β Declarative localization
βββββββββββββββββββββββ
---
π οΈ Tech Stack
| Layer | Tools |
|---|---|
| **GUI & OS** | `customtkinter` Β· `Pillow` Β· `ctypes` Win32 API β dark title bar, `WM_SETICON`, DPI Awareness, cross-layout hotkeys |
| **Localization** | `jh_i18n.py` β declarative EN/RU system with named variable substitution via `tr(key, **kwargs)` |
| **Local API** | `Flask` Β· `flask-cors` Β· `threading` Β· `queue.Queue` β thread-safe webhook receiver from Chrome |
| **AI Cascade** | **Gemini 3.5/3.0** Β· **GPT-5 / o3** Β· **Claude 4** Β· **DeepSeek** (chat / reasoner) Β· **Ollama** Β· **LM Studio** |
| **Resilience** | Failover Chain Β· Exponential Backoff Β· 5-level JSON parser Β· Exception hierarchy (`AINetworkError`, `AILocalServerError`, `AITimeoutError`, `AIAuthError`, `AIRateLimitError`) |
| **Local AI** | HTTP integration Ollama / LM Studio Β· `LOCAL_SAFE_PARAMS` Β· `MIN_TOKENS_PER_SEC` metric Β· Async status probe |
| **Notifications** | `jh_notifications.py` β custom Toast with slide/fade animation, color coding, and audio in a dedicated thread |
| **Storage** | JSON in `%APPDATA%` Β· Resume history Β· PDF import with AI text extraction Β· Auto-cleanup logs (50 entry limit) |
| **Build** | `PyInstaller` Β· `jh_version.py` (single version source β window titles + VERSIONINFO .exe) Β· `Self-Healing Refactor` in `build_exe.py` |
---
## π Changelog
π¦ v2.0.1 β Major Update (Current)
* **[Architecture]** Global refactor with `jh_` prefix, unified `jh_version.py` module, Self-Healing build via `build_exe.py`.
* **[i18n]** Full interface localization (EN / RU) via `jh_i18n.py` with dynamic switching.
* **[Engine]** Custom exception hierarchy for precise UI responses to network failures, timeouts, rate limits, and parse errors.
* **[Engine]** 5-level cascading repair for malformed LLM JSON responses.
* **[Engine]** Native integration with Ollama and LM Studio: safe generation parameters, speed monitoring, failover between local models.
* **[Engine]** New filters: toxic work condition detection and geographic compliance.
* **[UI]** Resume history π with direct PDF import and AI text extraction.
* **[UI]** Expanded model pool: Gemini 3.5/3.0, GPT-5, Claude 4, DeepSeek (chat/reasoner).
* **[UI]** Async local server status indicator.
* **[UI]** Smooth HiDPI window centering without flickering or micro-jumps.
* **[UI]** Dark title bar and window icon via Win32 API.
* **[UI]** Card signature caching β only changed cards are re-rendered.
* **[Notifications]** Custom Toast notifications: animation, audio, color coding.
π¦ v1.2.0
* **[Engine]** Multi-model `BaseProvider` architecture (Gemini, OpenAI, Anthropic, DeepSeek).
* **[Engine]** Failover Chain and automatic JSON repair.
* **[UI]** Dark CustomTkinter interface with full High-DPI support.
* **[UI]** Removed `grab_set()`, incremental list rendering.
* **[API]** Queue timeout manager (15s) with status bar.
* **[API]** Zombie-process killer on port 5000.
* **[Build]** `src/` structure, self-healing build module.
π¦ v1.1.0
* **[UI]** Quick-apply buttons ("Apply") in vacancy cards.
* **[UI]** Fixed `Ctrl+V`, `Ctrl+C`, `Ctrl+A` hotkeys on Russian keyboard layout.
* **[UI]** Smooth scrolling without graphical artifacts.
* **[UI]** Auto-reset scroll position when switching filters.
---
## πΊοΈ Roadmap
π’ v1.1.0 β UI & Keyboard Layout (Done)
- [x] UI optimization, scroll fix, hotkeys for Russian keyboard layout.
π’ v1.2.0 β Multi-Provider (Done)
- [x] Modular engine, Failover Chain, cascading JSON parser, AI control panel.
π’ v2.0.1 β Full Overhaul (Done)
- [x] Local AI via Ollama / LM Studio without API keys.
- [x] Full EN/RU interface localization.
- [x] Resume history and PDF import with AI text extraction.
- [x] Toast notifications with animation and audio.
- [x] HiDPI centering without flickering, dark Win32 title bar.
- [x] Toxic condition detection and geographic filter.
- [x] Self-Healing build, `jh_version.py`, refactor with `jh_` prefix.
---
## π€ Support the project
The project has reached its goals and is in a **stable state**.
If something breaks β open an Issue on GitHub, critical bugs will be fixed.
If the app helped you land a job β leave a star. It's free, and that's how good tools find the people who need them.
---
Made for people who value their time Β· Non-Commercial Β· v2.0.1