How adedigbaoluwad1/jobhunt works
jobhunt is a single-user CLI that gathers job postings, filters and deduplicates them, scores qualifying matches, and prepares fact-checked tailored CVs; it leaves application submission to the user. Its central workflow runs through SyncService, which coordinates source fetching, normalization, filtering, persistence, and extraction. Other CLI commands support browsing, status tracking, statistics, and CV preparation. Local configuration and SQLite-backed job data are core state. Source adapters and LLM providers are documented capabilities; unsampled implementation details are represented at their supported directory paths, and uncertain calls are omitted.
Main entry points: sync.service.ts Sync coordinator · tailor.service.ts CV tailoring · jobs.repository.ts Jobs repository · extractor.service.ts Match extraction
Components 20
CLI workflows
- CLI commands
src/commands - Browse and track
src/commands/list.command.ts - Status and statistics
src/commands/status.command.ts
Job discovery
- Sync coordinator
src/jobs/sync.service.ts - Source registry
src/sources/sources.service.ts - Job source adapters
src/sources - Normalize and dedupe
src/jobs/normalize.ts - Rule filtering
src/jobs/filter.service.ts
Scoring and tailoring
- Match extraction
src/jobs/extractor.service.ts - LLM router
src/llm/llm.service.ts - LLM providers
src/llm - CV tailoring
src/cv/tailor.service.ts - Master CV
src/cv/master-cv.service.ts - Fact validator
src/cv/tailor.validator.ts - CV renderer
src/cv/render.service.ts
Local state
- Configuration
src/config/config.service.ts - Jobs repository
src/db/jobs.repository.ts - SQLite database
src/db/prisma.service.ts
Other components
- User
- LLM services
Connections 25
- User → CLI commands: runs commands
- CLI commands → Sync coordinator: starts sync
src/commands/sync.command.ts - Sync coordinator → Configuration: loads settings
src/jobs/sync.service.ts - Sync coordinator → Source registry: gets sources
src/jobs/sync.service.ts - Source registry → Job source adapters: registers adapters
src/sources/sources.service.ts - Sync coordinator → Job source adapters: fetches postings
src/jobs/sync.service.ts - Sync coordinator → Normalize and dedupe: normalizes postings
src/jobs/sync.service.ts - Sync coordinator → Rule filtering: evaluates rules
src/jobs/sync.service.ts - Sync coordinator → Jobs repository: upserts and tracks
src/jobs/sync.service.ts - Sync coordinator → Match extraction: extracts matches
src/jobs/sync.service.ts - Match extraction → Jobs repository: loads and saves results
src/jobs/extractor.service.ts - Match extraction → LLM router: requests scoring
src/jobs/extractor.service.ts - LLM router → LLM providers: routes model calls
src/llm/llm.service.ts - LLM providers → LLM services: calls model services
- CLI commands → CV tailoring: starts tailoring
src/cv/tailor.service.ts - CV tailoring → Master CV: loads source CV
src/cv/tailor.service.ts - CV tailoring → Match extraction: ensures extraction
src/cv/tailor.service.ts - CV tailoring → LLM router: requests tailored CV
src/cv/tailor.service.ts - CV tailoring → Fact validator: validates content
src/cv/tailor.service.ts - CV tailoring → CV renderer: renders document
src/cv/tailor.service.ts - Browse and track → Jobs repository: reads job records
src/commands/list.command.ts - User → Browse and track: browses postings
README.md - User → Status and statistics: tracks applications
README.md - Jobs repository → SQLite database: queries and persists
src/db/jobs.repository.ts - Sync coordinator → Jobs repository: records run stats
src/jobs/sync.service.ts