How fabiendaniel/job-search-assistant works
JobNavigator is a self-hosted, multi-account job-hunt automation product. A user configures job searches, which the backend runs across career sites and aggregators; discovered postings are processed and stored for the feed, then users can score jobs against résumés, tailor résumés and letters, and track applications. Separate capabilities include persona-based autofill, Gmail response monitoring, and Telegram alerts. The graph preserves these documented branches; some are represented at directory level because their individual route or source implementations were not excerpted.
Main entry points: db.py Application database · orchestrator.py Scrape orchestrator · cv_scorer.py Resume scoring · routes_resumes.py Resume builder
Components 22
User experience
- Web application
frontend/src/App.jsx - Job feed
frontend/src/screens/JobFeed.jsx - Applications UI
frontend/src/screens/Applications.jsx - HTTP API
backend/main.py
Job discovery
- Search endpoints
backend/api/routes_searches.py - Scrape orchestrator
backend/scraper/orchestrator.py - Job sources
backend/scraper/sources - ATS handlers
backend/scraper/ats - Job endpoints
backend/api/routes_jobs.py
Analysis and tailoring
- Resume scoring
backend/analyzer/cv_scorer.py - LLM providers
backend/analyzer/llm_client.py - Resume builder
backend/api/routes_resumes.py - Cover letters
backend/api/routes_cover_letters.py
Application tracking
- Persona autofill
backend/api/routes_autofill.py - Browser extension
extension/content_autofill.js - Application tracking
backend/api/routes_applications.py - Gmail monitor
backend/email_monitor/gmail_client.py - Telegram alerts
backend/notifier/telegram.py
Accounts and persistence
- Account context
backend/accounts/context.py - Account settings
backend/accounts/settings.py - Application database
backend/models/db.py
Other components
- Job hunter
Connections 21
- Job hunter → Web application: uses
README.md - Web application → Job feed: routes to
frontend/src/App.jsx - Web application → Applications UI: routes to
frontend/src/App.jsx - Search endpoints → Scrape orchestrator: starts searches
backend/api/routes_searches.py - Scrape orchestrator → Job sources: dispatches to
backend/scraper/orchestrator.py - Scrape orchestrator → ATS handlers: uses handlers
- Scrape orchestrator → Application database: records jobs
backend/scraper/orchestrator.py - Job endpoints → Resume scoring: scores jobs
backend/api/routes_jobs.py - Resume scoring → LLM providers: requests analysis
backend/analyzer/cv_scorer.py - Resume builder → Resume scoring: uses scoring
backend/api/routes_resumes.py - Resume builder → LLM providers: generates content
backend/api/routes_resumes.py - Job endpoints → Application database: reads and writes
backend/api/routes_jobs.py - Resume builder → Application database: stores resumes
backend/api/routes_resumes.py - Application tracking → Application database: stores applications
backend/api/routes_applications.py - Gmail monitor → Application database: updates status
backend/email_monitor/gmail_client.py - Gmail monitor → Account context: resolves account
backend/email_monitor/gmail_client.py - Persona autofill → Browser extension: serves autofill
- Resume scoring → Telegram alerts: sends alerts
backend/analyzer/cv_scorer.py - Account context → Application database: scopes queries
backend/accounts/context.py - Account settings → Application database: reads and writes
backend/accounts/settings.py - Scrape orchestrator → Resume scoring: scores discovered jobs
backend/scraper/orchestrator.py