How chandanvura/jobradar works
JobRadar collects employer job listings, validates and enriches them, then serves a public catalogue for job search and recommendations. Its other major product branches support private browser-based application tracking and resume work, and operational recovery of public catalogue data. The README documents the broad collection-to-Worker-to-interface architecture; sampled source confirms selected calls and UI composition, but not every runtime route or collector detail.
Main entry points: adapters.py ATS adapters · normalization.py Job enrichment · main.py Scan runner · index.ts API Worker
Components 28
Job collection
- Scan runner
scraper/main.py - ATS adapters
scraper/adapters.py - Employer adapters
scraper - Avature adapter
scraper/avature.py - Career widgets
scraper/career_widgets.py - Jibe adapter
scraper/jibe.py - Talentbrew adapter
scraper/talentbrew.py - Public platforms
scraper/public_platforms.py - Job records
scraper/models.py
Validation and eligibility
- Job enrichment
scraper/normalization.py - Experience rules
scraper/experience.py - Posting freshness
scraper/posting.py - Role taxonomy
scraper/roles.py - Location rules
scraper/locations.py
Public catalogue
- API Worker
web/worker/index.ts - Catalogue cache
web/worker/catalog-cache.ts - API failures
web/worker/api-failure.ts - D1 catalogue
web/db/schema.ts
Career workspace
- Dashboard
web/components/jobradar-dashboard.tsx - Job search
web/lib/job-search.ts - Search worker
web/lib/job-search-worker.ts - Requirement analysis
web/lib/job-requirements.ts - Private profile
web/lib/private-profile.ts - Resume workspace
web/components/resume-workspace.tsx
Recovery operations
- Static backup
web/worker/public-backup.ts - Recovery scheduler
web/ops-scheduler/index.ts
Other components
- Employer sources
- Telegram
Connections 29
- Employer sources → Scan runner: provides listings
README.md - Scan runner → ATS adapters: dispatches collection
scraper/main.py - ATS adapters → Employer adapters: uses adapters
scraper/adapters.py - ATS adapters → Avature adapter: uses adapter
scraper/adapters.py - ATS adapters → Career widgets: uses adapter
scraper/adapters.py - ATS adapters → Jibe adapter: uses adapter
scraper/adapters.py - ATS adapters → Talentbrew adapter: uses adapter
scraper/adapters.py - ATS adapters → Public platforms: uses platforms
scraper/adapters.py - ATS adapters → Job records: creates records
scraper/adapters.py - Scan runner → Job enrichment: enriches records
scraper/main.py - Job enrichment → Job records: enriches fields
scraper/normalization.py - Job enrichment → Experience rules: analyzes experience
scraper/normalization.py - Job enrichment → Posting freshness: checks freshness
scraper/normalization.py - Job enrichment → Role taxonomy: classifies roles
scraper/normalization.py - Job enrichment → Location rules: normalizes locations
scraper/normalization.py - Scan runner → API Worker: submits scan
README.md - API Worker → D1 catalogue: writes catalogue
README.md - API Worker → Catalogue cache: reads cache
web/worker/index.ts - API Worker → API failures: formats failures
web/worker/index.ts - API Worker → Static backup: serves fallback
web/worker/index.ts - Dashboard → API Worker: loads catalogue
README.md - Dashboard → Job search: searches jobs
- Search worker → Job search: builds index
web/lib/job-search-worker.ts - Job search → Requirement analysis: scores requirements
web/lib/job-search.ts - Dashboard → Private profile: stores preferences
web/components/jobradar-dashboard.tsx - Dashboard → Resume workspace: renders workspace
web/components/jobradar-dashboard.tsx - Scan runner → Telegram: sends alerts
README.md - Recovery scheduler → Scan runner: recovers missed scans
README.md - Static backup → D1 catalogue: backs up public data
README.md