Shaheer Sarfaraz 19266fe5eb
City search (#217)
* wave 1, jobspy only

* combine usa/ca to united states

* strict city location filter

* hide and show based on focus

* UI changes

* allow clicking cross!

* pill animate in

* animate out, uggo fix

* animate out

* framer motion

* animate component height

* adzuna

* hiring cafe implementation

* refactor: centralize shared search-city parsing and matching

* feat: migrate city setting to searchCities with legacy fallback

* docs: update pipeline and extractor city-search wording

* fix(orchestrator): normalize tokenized paste behavior

* fix(shared): tighten city matching semantics

* docs(extractors): document city-location knobs and geocoding note
2026-02-21 00:42:09 +00:00
2026-02-21 00:42:09 +00:00
2026-02-21 00:42:09 +00:00
2026-02-21 00:42:09 +00:00
2026-02-08 00:19:26 +00:00
2026-02-21 00:42:09 +00:00
2026-02-18 22:05:15 +00:00
2026-02-19 12:51:55 +00:00
2026-01-17 02:53:31 +00:00
2026-02-21 00:42:09 +00:00
2026-02-15 22:20:56 +00:00
2026-02-20 12:05:45 +00:00

JobOps: Your Ironman Suit for Job Hunting

Automate the hunt. Scrapes major job boards (LinkedIn, Indeed, Glassdoor), AI-scores suitability, tailors resumes (RxResume), and tracks application emails automatically.

Self-hosted. Docker-based. Stop applying manually.

Stars GHCR Release Contributors

40s Demo: Crawl → Score → PDF → Track

Pipeline Demo

https://github.com/user-attachments/assets/5b9157a9-13b0-4ec6-9bd2-a39dbc2b11c5

Apply & Track

https://github.com/user-attachments/assets/06e5e782-47f5-42d0-8b28-b89102d7ea1b

Documentation (Start Here)

JobOps ships with full docs for setup, architecture, extractors, and troubleshooting.

If you want the serious view of the project, start here:

Quick Start (10 Min)

Prefer guided setup? Follow the Self-Hosting Guide.

# 1. Download
git clone https://github.com/DaKheera47/job-ops.git
cd job-ops

# 2. Start (Pulls pre-built image)
docker compose up -d

# 3. Launch Dashboard
# Open http://localhost:3005 to start the onboarding wizard

Why JobOps?

  • Universal Scraping: Supports LinkedIn, Indeed, Glassdoor, Adzuna + specialized boards (Gradcracker, UK Visa Jobs).
  • AI Scoring: Ranks jobs by fit against your profile using your preferred LLM (OpenRouter/OpenAI/Gemini).
  • Auto-Tailoring: Generates custom resumes (PDFs) for every application using RxResume v4.
  • Email Tracking: Connect Gmail to auto-detect interviews, offers, and rejections.
  • Self-Hosted: Your data stays with you. SQLite database. No SaaS fees.

Workflow

  1. Search: Scrapes job boards for roles matching your criteria.
  2. Score: AI ranks jobs (0-100) based on your resume/profile.
  3. Tailor: Generates a custom resume summary & keyword optimization for top matches.
  4. Export: Uses RxResume v4 to create tailored PDFs.
  5. Track: "Smart Router" AI watches your inbox for recruiter replies.

Supported Extractors

Platform Focus
LinkedIn Global / General
Indeed Global / General
Glassdoor Global / General
Adzuna Multi-country API source
Gradcracker STEM / Grads (UK)
UK Visa Jobs Sponsorship (UK)

(More extractors can be added via TypeScript - see extractors documentation)

Post-App Tracking (Killer Feature)

Connect Gmail → AI routes emails to your applied jobs.

  • "We'd like to interview you..." → Status: Interviewing (Auto-updated)
  • "Unfortunately..." → Status: Rejected (Auto-updated)

See post-application tracking docs for setup.

Note on Analytics: The alpha version includes anonymous analytics (Umami) to help debug performance. To opt-out, block umami.dakheera47.com in your firewall/DNS.

Star History

Star History Chart

License

AGPLv3 - Free to use and modify.

Description
No description provided
Readme AGPL-3.0 6.7 MiB
Languages
TypeScript 98.6%
Python 0.4%
Shell 0.4%
CSS 0.3%
Dockerfile 0.2%