JustHireMe is a local-first desktop app with a Tauri shell, React frontend, and Python backend sidecar.
Profile ingestion
-> Kuzu graph + LanceDB vectors
-> Source scrapers
-> Lead quality gate
-> Fit ranking / semantic matching
-> Customization package generation
-> Local CRM and review UI
The React app in src/ is responsible for:
- navigation and workspace UI
- lead cards and filters
- settings
- profile and ingestion screens
- customization package review
- WebSocket event display
The frontend talks to the backend through authenticated local HTTP requests. Tauri provides the backend port and API token at runtime.
The Python backend in backend/ is responsible for:
- FastAPI routes
- source scraping
- quality gating
- ranking and evaluation
- profile ingestion
- vector search fallback behavior
- PDF and outreach generation
- local persistence
Important modules:
backend/automation/free_scout.py: direct/free source scrapingbackend/automation/scout.py: broader source scraping orchestrationbackend/discovery/quality_gate.py: pre-save quality checksbackend/ranking/scoring_engine.py: deterministic fit scoringbackend/ranking/semantic.py: LanceDB semantic matching and fallback behaviorbackend/generation/service.pyandbackend/generation/generators/: resume, cover letter, outreach, and package generationbackend/data/repository.py: repository facade for local persistencebackend/data/sqlite/,backend/data/graph/, andbackend/data/vector/: SQLite, Kuzu, and LanceDB access helpers
Local storage includes:
- SQLite for leads, settings, events, generated asset metadata
- Kuzu for profile graph data
- LanceDB for profile vectors
- local files for generated PDFs
These files should not be committed or uploaded in public issues.
Browser automation exists as a contributor lab and is intentionally separate from the core OSS promise. The supported workflow is scraper, ranker, vector matching, and customizer.