How katkurigopi05/job_runner works
Job Runner is a local, single-user job-application agent. The owner configures a profile and curated company list, discovers and ranks postings, reviews résumé tailoring, then asks the worker to fill an ATS form; submission is held for explicit approval by default. Recruiter email is ingested and routed back to applications for tracking. The graph preserves the dashboard/API, worker, domain stages, and shared persistence and LLM layers. Some subsystem links rely on the README’s workflow description or SOURCE INDEX references; unsampled implementation details are not inferred.
Main entry points: apply_job.py Application runner · main.py Local API · page.tsx Dashboard · crawl.py Job discovery
Components 21
API and workers
- Local API
apps/api/main.py - Product routes
apps/api/routers - Job worker
apps/worker/run.py
Application workflow
- Application runner
apps/worker/apply_job.py - Job discovery
packages/crawler/crawl.py - Matching and ranking
packages/matching/search.py - Résumé tailoring
packages/tailor/parse.py - Email classification
packages/inbox/classify.py - Application tracking
packages/tracking/tasks.py
Shared services
- LLM routing
packages/llm/router.py - Domain models
packages/core/models.py - Work queue
packages/core/queue.py - PII file storage
packages/core/storage.py - Postgres
packages/core/db.py
External systems
- ATS adapters
packages/ats/base.py - Company career pages
- Recruiter email
- Employer ATS
Other components
- Owner
Connections 24
- Owner → Dashboard: uses
- Dashboard → Local API: calls
- Owner → MCP tools: commands
- MCP tools → Local API: calls HTTP
apps/mcp/client.py - Local API → Product routes: registers
apps/api/main.py - Owner → Company career pages: curates
- Job worker → Job discovery: runs discovery
- Job discovery → Company career pages: polls boards
- Job discovery → Matching and ranking: finds postings
- Matching and ranking → Postgres: scores postings
- Owner → Dashboard: reviews matches
- Job worker → Application runner: runs applications
- Application runner → Résumé tailoring: tailors résumé
apps/worker/apply_job.py - Application runner → ATS adapters: fills form
apps/worker/apply_job.py - ATS adapters → Employer ATS: drives form
- Owner → Dashboard: approves application
- Application runner → Work queue: uses
apps/worker/apply_job.py - Application runner → PII file storage: stores artifacts
packages/core/storage.py - Owner → Recruiter email: receives replies
- Email classification → Recruiter email: ingests replies
- Email classification → Application tracking: routes messages
- Local API → Postgres: checks connection
apps/api/main.py - Application runner → Domain models: loads workflow state
apps/worker/apply_job.py - Résumé tailoring → LLM routing: uses model