{"slug": "jobdork-job-leads-from-employers-career-sites-ranked-by-your-resume", "title": "Jobdork – job leads from employers' career sites, ranked by your resume", "summary": "A developer publishing as jessn-dev released jobdork, a downloadable macOS and Windows application that scans 420 employer job boards — 338 of them US employers across 27 industries — on Workday, Oracle Recruiting Cloud, Eightfold, Taleo Business Edition, Greenhouse, Lever, Ashby, SmartRecruiters, Breezy and employers' own careers sites, then filters and ranks the results against the user's resume. The tool runs locally with no account, keeps resumes and searches on the user's machine, and invokes an AI model only when the user configures one — Ollama locally or Anthropic, Gemini, OpenAI or Groq with a user-supplied key — or connects a coding agent such as Claude Code, Codex, Cursor or GitHub Copilot through jobdork's MCP server. Posts older than 90 days are dropped as ghost listings, and every AI-written cover letter or tailored resume claim is checked against the resume and the advert.", "body_md": "**jobdork finds job posts for you, on your own computer.** It reads\nemployers' own hiring systems and job boards, keeps only the posts that pass\nthe rules you set (job titles, place, pay, dealbreakers), ranks them against\nyour resume, and keeps track of what you did with each one. An AI model can\nread the best ones against your resume and draft a cover letter or a tailored\nresume; every claim it writes is checked against your resume and the advert.\n\nIt is not a job board and has no account: nobody posts to it, and your resume and searches stay on your machine.\n\n**Start with the [download](https://github.com/jessn-dev/jobDork/releases/latest)**\nfor macOS or Windows, or [another way to run it](https://github.com/jessn-dev/jobDork/blob/main/docs/run/README.md): from\nsource, in a terminal, in Docker or on a home server. The\n**[user guide](https://jessn-dev.github.io/jobDork/overview/)** then walks through\nevery page of the app with pictures. [CONFIG.md](https://github.com/jessn-dev/jobDork/blob/main/docs/CONFIG.md) has every\nsetting, [PRIVACY.md](https://github.com/jessn-dev/jobDork/blob/main/PRIVACY.md) what jobdork keeps and every address it\ncontacts, and [SECURITY.md](https://github.com/jessn-dev/jobDork/blob/main/SECURITY.md) how releases are checked and how to\nverify a download.\n\nFor how it works underneath: where its coverage comes from\n([SOURCES.md](https://github.com/jessn-dev/jobDork/blob/main/docs/SOURCES.md)), what each source answers and where it falls\nshort ([PLATFORMS.md](https://github.com/jessn-dev/jobDork/blob/main/docs/PLATFORMS.md)), what a scan reaches region by\nregion ([REGIONS.md](https://github.com/jessn-dev/jobDork/blob/main/docs/REGIONS.md)), how the pipeline and the AI reader\nfit together ([ARCHITECTURE.md](https://github.com/jessn-dev/jobDork/blob/main/docs/ARCHITECTURE.md)), the choices behind\nit ([DECISIONS.md](https://github.com/jessn-dev/jobDork/blob/main/docs/DECISIONS.md)) and how it got here\n([HISTORY.md](https://github.com/jessn-dev/jobDork/blob/main/docs/HISTORY.md)). Every change, and what is\nstill outstanding, is in the [changelog](https://github.com/jessn-dev/jobDork/blob/main/docs/CHANGELOG.md).\n\n- **Reads where jobs are posted.** 420 employer boards ship built in (338 of\nthem US employers, across 27 industries) on Workday, Oracle Recruiting\nCloud, Eightfold, Taleo Business Edition, Greenhouse, Lever, Ashby,\nSmartRecruiters, Breezy and employers' own careers sites. Keyword sources\nneed no account: Workable's search, Himalayas (remote work), Kalibrr\n(Philippines, Indonesia), Germany's employment agency and Arbeitnow.\nAdzuna and USAJOBS work with a free key of your own, and`jobdork discover` adds any other employer by reading the board off their\ncareers page.[Where the jobs come from](https://github.com/jessn-dev/jobDork/blob/main/docs/SOURCES.md)\n- **Screens with your rules, and says why.** Every post dropped is counted\nwith its reason. Only pay the employer states can hide a post: one with no\npay is kept and marked, since most posts state none.[The rules](https://github.com/jessn-dev/jobDork/blob/main/docs/CONFIG.md)\n- **Cleans up the list.** Copies of one job are shown as one post; each post\nis aged from the board's own dates, with old ones ranked lower and\nghost listings (over 90 days) dropped; an Adzuna post the employer's own\nboard does not carry is flagged.\n- **Ranks against your resume** , offline:**Match** (title, place, pay) and**Fit** (the advert's skills you have and lack).[Scores](https://jessn-dev.github.io/jobDork/scores/)\n- **Checks your resume** , offline: how an applicant tracking system reads\nthe file and what to fix, how its lines are written, and each post's**ATS match** (keywords, required skills, title, sections, dates, out of\n100).[The Resume page](https://jessn-dev.github.io/jobDork/resume/)\n- **Uses an AI model only when you set one up.** Ollama on your own computer,\nor Anthropic, Gemini, OpenAI or Groq with your key, held in memory or, if\nyou choose, in your computer's keychain; never in a file. Or your own\ncoding agent (Claude Code, Codex, Antigravity CLI, Cursor, GitHub Copilot,\nClaude Desktop) does the writing through jobdork's MCP server or command\nline, with no key, within guardrails: jobdork checks and keeps what it\nwrites, and what it adds to your record waits for your OK; the AI page\nand the Dashboard say when it last used jobdork's tools and what it did\n([Coding agent](https://jessn-dev.github.io/jobDork/ai/#coding-agent) ).\nIt can judge posts (Job posts marks which ones each run judged, and sorts\nand filters by its score), write a cover letter, review your resume, and write a\ntailored resume as a PDF and a Word file (in a sans or serif face), held to\nIndeed's length advice (one page up to ten years), interview prep (fifteen\nlikely questions, with STAR outlines) and a recruiter message. Eight more\ntools help you prepare: a tailoring report, an interview story, a thank-you\nemail, offer negotiation, an outreach message, a LinkedIn headline and\nAbout, changing field, and a 30-day search plan. A second model checks\neach output, claim by claim, against your whole resume and the advert, and\nanything unsupported is flagged: 2.9% of claims with the recommended local\nmodel, measured on seven resumes in six fields\n([models compared](https://github.com/jessn-dev/jobDork/blob/main/docs/AI-MODELS.md) ). A flagged claim is then taken out\nor rewritten, and checked again, before you see it. It never applies or\nsends for you.[The AI page](https://jessn-dev.github.io/jobDork/ai/)\n- **Keeps track.** Statuses from*new* to*offer* , notes, a check for posts\nthat have closed, scans on a schedule, notifications (a click opens\njobdork), and an email digest.**My applications** keeps every job you applied to, by stage, with each\nstatus dated, the next step and its date, the contact, the resume and\nletter you sent (uploaded, and read by that job's AI tools), and notes. One**Add a job post** form adds a post from its link, already applied or not.[My applications](https://jessn-dev.github.io/jobDork/applications/)\n- **Reaches past what it can read.** A**Search Google Jobs** link opens your\nsearch in Google's job results, and`jobdork dork` builds Google searches\nfor sites that cannot be read automatically (LinkedIn, Indeed and others).[docs/DORK.md](https://github.com/jessn-dev/jobDork/blob/main/docs/DORK.md)\n- **Works outside the US.** A place list of 70,026 places in 245 countries,\nany country you name, and distances in miles or kilometres to match.\nWhat reaches each region is measured in[docs/REGIONS.md](https://github.com/jessn-dev/jobDork/blob/main/docs/REGIONS.md) .\n\n|  | A job board (Indeed, LinkedIn, ZipRecruiter…) | An AI job app (matching, auto-apply) | jobdork | \n|---|---|---|---|\n| **Where the jobs come from** | Its own listings, and copies of other sites' | Usually a job board's feed | Employers' own hiring systems and careers sites, and keyword searches, side by side | \n| **What decides what you see** | The site's ranking, often paid listings first | A match score you cannot inspect | Rules you set, with every post dropped counted and named; an AI verdict sits beside the score and never hides a post | \n| **Copies and ghost jobs** | One job reposted under several listings; old posts left up | Inherited from the feed | Copies grouped into one; posts aged from the employer's own dates; ghost listings dropped | \n| **What the AI writes** | n/a | Applications, often sent for you | Drafts you read, each claim checked against your resume and the advert. It never applies for you | \n| **Your resume and searches** | On their servers, with an account | Uploaded to their servers | On your machine. The AI can run locally; with a hosted model, your contact details are not sent | \n| **Cost** | Free, paid for with your attention and data | Usually a subscription | Free and open source; a hosted model's own fees if you choose one | \n\n**What it is not good at:** it takes some setting up; it reaches fewer\nemployers outside North America ([docs/REGIONS.md](https://github.com/jessn-dev/jobDork/blob/main/docs/REGIONS.md)); it\ndoes not work around sites that refuse automated readers; and an advert\nthat arrives cut short (Adzuna sends 500 characters) cannot be screened\nfully. [Limits](#limits) has the list.\n\n|  | For | Guide | \n|---|---|---|\n| **Desktop app** | macOS (Apple Silicon or Intel), Windows, and Linux on x86-64 or ARM64 (an AppImage, or a .deb for Ubuntu and Debian): an installer, its own window, scheduled scans, notifications, and updates from inside the app | [docs/run/desktop.md](https://github.com/jessn-dev/jobDork/blob/main/docs/run/desktop.md) | \n| **From source** | Any system with Python 3.10 or newer, ARM Linux older than 2024 included | [docs/run/source.md](https://github.com/jessn-dev/jobDork/blob/main/docs/run/source.md) | \n| **In the terminal** | Every command without the dashboard: scripts, cron jobs, servers with no screen | [docs/run/cli.md](https://github.com/jessn-dev/jobDork/blob/main/docs/run/cli.md) | \n| **Docker** | The published image on your computer, or always on a NAS | [docs/run/docker.md](https://github.com/jessn-dev/jobDork/blob/main/docs/run/docker.md) ,[docs/run/nas.md](https://github.com/jessn-dev/jobDork/blob/main/docs/run/nas.md) | \n\nFrom source, in three lines:\n\n```\ngit clone https://github.com/jessn-dev/jobDork.git && cd jobDork\npython3 -m venv .venv && .venv/bin/pip install -e '.[pdf]'\n.venv/bin/python -m jobdork serve      # opens setup in your browser\n```\n\nThe first start opens setup, one question per screen: your resume (your\nmaster resume, if you keep one), an AI model (optional), the job titles to look for, where you are, pay and job\nsources. It ends with a first scan. [Getting started](https://jessn-dev.github.io/jobDork/getting-started/)\n\nYour settings live in `config.yaml`, which is not in the repository (it is\ngitignored, with `.env`, `data/` and `out/`), so your search stays yours.\n\n**The installers are not code-signed**, so macOS and Windows warn the first\ntime you open one; [the desktop guide](https://github.com/jessn-dev/jobDork/blob/main/docs/run/desktop.md#the-first-open-warning)\nsays how to get past it and how to check a download instead, and gives a\none-command install for the Mac that checks the download itself and skips\nthe warning. Every installer\ncarries a build attestation from this repository's release workflow, and the\napp's **Update** button opens a new installer only after that attestation\nverifies ([SECURITY.md](https://github.com/jessn-dev/jobDork/blob/main/SECURITY.md#how-the-app-checks-an-update-before-opening-it)).\n\n- **jobdork sends nothing to its makers.** It goes on the network only to\ndo what you set up (read job sources, use the AI provider you chose, send\nfeedback when you press Send) and, once a day unless you turn it off, to\ncheck for a newer release. Every destination:[PRIVACY.md](https://github.com/jessn-dev/jobDork/blob/main/PRIVACY.md) .\n- **The dashboard is yours alone.** It listens on this computer only (in\nDocker, on the addresses you name and no others) and needs a token made\nfresh for each run; a job post's text and links are treated as hostile\n([what a job post cannot do](https://github.com/jessn-dev/jobDork/blob/main/SECURITY.md#what-a-job-post-cannot-do) ).\n- **Releases are checked before they are published:** tests, vulnerability\nand secret scans on every change, dependencies pinned by hash, the Docker\nimage signed (cosign) and the installers attested, and each release\napproved by hand.[SECURITY.md](https://github.com/jessn-dev/jobDork/blob/main/SECURITY.md)\n- **Found a problem?** Report it privately:[SECURITY.md](https://github.com/jessn-dev/jobDork/blob/main/SECURITY.md#reporting-a-problem) .\n\n- **Employers on systems with no reader** (UKG, iCIMS, Jobvite, BambooHR,\nADP and others) are reached only when their own careers site marks its\nposts up for search engines, or through`jobdork dork` .[docs/PLATFORMS.md](https://github.com/jessn-dev/jobDork/blob/main/docs/PLATFORMS.md)\n- **Sites with no public way in, or that refuse automated readers** (LinkedIn, Indeed, Glassdoor, SEEK) are not worked around: the Google Jobs\nlink and`jobdork dork` cover them.\n- **Salary:** only a minority of posts state pay, so a pay floor filters\nthat minority and the rest are kept, marked*unconfirmed salary* .\n- **Right to work:** a post that states its sponsorship position is flagged;\nmost state nothing, so treat an unflagged post as unknown.\n- **An empty answer from a board is not proof it is hiring nobody:** some\nanswer the same way when throttling, and jobdork reports those as\nunknown.\n- **Jobs never posted online** in a system it can read, common for small\nlocal employers, cannot be found.\n\n**Why was a post dropped?** `jobdork list --flags`, then\n[how a title is matched](https://github.com/jessn-dev/jobDork/blob/main/docs/CONFIG.md#how-a-title-is-matched) and\n[the salary rule](https://github.com/jessn-dev/jobDork/blob/main/docs/CONFIG.md#the-rule).\n**Why did a source return nothing?**\n[Failure usually looks like success](https://github.com/jessn-dev/jobDork/blob/main/docs/PLATFORMS.md#failure-usually-looks-like-success).\n\nContributions are welcome: [CONTRIBUTING.md](https://github.com/jessn-dev/jobDork/blob/main/CONTRIBUTING.md), and the\n[code of conduct](https://github.com/jessn-dev/jobDork/blob/main/CODE_OF_CONDUCT.md) for everyone taking part. Issues\nstart from a form: a problem, an idea or a question.\n\n```\npip install -e '.[dev]'     # pytest, ruff, and sigstore for the update tests\npytest                      # the whole suite; none of it goes online\nruff check .                # lint\npython tests/run_all.py     # the same tests, without pytest\n```\n\n`python packaging/build.py` builds the desktop installer for the machine it\nruns on ([how](https://github.com/jessn-dev/jobDork/blob/main/docs/run/desktop.md#building-the-installers-yourself)).\nDependencies are pinned with their hashes in `requirements.lock` (the Docker\nimage) and `requirements-desktop.lock` (the installers).\n\n```\n.\n├── jobdork/\n│   ├── cli.py             # every command\n│   ├── core/              # config, setup, schedule, notifications, updates, telemetry\n│   ├── db/                # SQLite store, migrations, grouping copies of a job\n│   ├── fetch/             # one reader per source, robots.txt, the paced HTTP client\n│   ├── search/            # scan, screening, built-in boards, discover, freshness, places, resume, ATS match\n│   ├── ai/                # the model, judging, the hallucination check, letters and reviews\n│   ├── writing/           # drafts by Claude Code, tailored resumes, the checks every draft gets\n│   ├── web/               # the dashboard server, its API, the desktop window, and a coding agent's tools (MCP)\n│   ├── output/            # the static page and the email digest\n│   ├── dork/              # the Google search builder\n│   └── data/              # built-in boards, the place list, the dashboard page, humanizer rules\n├── guide/                 # the user guide (MkDocs)\n├── docs/                  # the documentation above\n├── packaging/             # the desktop build: PyInstaller spec, icon, Windows installer\n├── scripts/               # board list, place list, guide pictures, release notes, image check\n├── tests/\n├── Dockerfile, compose.yaml\n└── .github/workflows/     # checks and releases (docker.yml, desktop.yml), the user guide, the weekly board re-check\n```\n\n[docs/ARCHITECTURE.md](https://github.com/jessn-dev/jobDork/blob/main/docs/ARCHITECTURE.md) explains each part;\n[guide/README.md](https://github.com/jessn-dev/jobDork/blob/main/guide/README.md) how the user guide is built and its\npictures taken.\n\n- **[humanizer](https://github.com/blader/humanizer)** by blader (MIT): the\nrules for spotting signs of AI writing, drawn from Wikipedia's \"Signs of AI\nwriting\" guide. Its`SKILL.md` is copied into[`jobdork/data/humanizer/`](https://github.com/jessn-dev/jobDork/blob/main/jobdork/data/humanizer) with its licence;\ndrafting models are given it, and`jobdork/writing/humanize.py` checks\ndrafts for the patterns a script can find.\n- **[HalluLens](https://github.com/facebookresearch/HalluLens)** (Bang et al.,[arXiv:2504.17550](https://arxiv.org/abs/2504.17550) ): the method the\nhallucination check follows, splitting an output into single claims and\nchecking each against its source. Only the method is used; none of its\ncode, prompts or data (CC BY-NC) is included.\n- **[Resume Matcher](https://github.com/srbhr/resume-matcher)** by srbhr\n(Apache-2.0): the resume readability check (`jobdork/search/readable.py` ),\nthe writing rules (`jobdork/writing/style.py` ) and the ATS match\n(`jobdork/search/ats.py` ) follow its parse check, writing check and ATS\nscore, their rules, thresholds and weights, and the interview prep and\nrecruiter message its prompts' parts, rewritten for jobdork; none of its\ncode is copied. The Resume page's layout follows its dashboard.\n- Place names from [GeoNames](https://www.geonames.org/) (CC BY 4.0); icons\nfrom[Lucide](https://lucide.dev/) (ISC).\n\n[GNU General Public License v3.0 or later](https://github.com/jessn-dev/jobDork/blob/main/LICENSE): you may use, change and\nshare jobdork, and anything you distribute that is built from it must be\nshared under the same licence, with its source. The humanizer rules keep\ntheir MIT licence ([jobdork/data/humanizer/LICENSE](https://github.com/jessn-dev/jobDork/blob/main/jobdork/data/humanizer/LICENSE)).", "url": "https://wpnews.pro/news/jobdork-job-leads-from-employers-career-sites-ranked-by-your-resume", "canonical_source": "https://github.com/jessn-dev/jobDork", "published_at": "2026-11-12 00:17:30+00:00", "updated_at": "2026-11-12 00:53:05.576892+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "agent-protocols", "artificial-intelligence"], "entities": ["jobdork", "jessn-dev", "Workday", "Greenhouse", "Lever", "Ollama", "Anthropic", "GitHub Copilot"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/jobdork-job-leads-from-employers-career-sites-ranked-by-your-resume", "markdown": "https://wpnews.pro/news/jobdork-job-leads-from-employers-career-sites-ranked-by-your-resume.md", "text": "https://wpnews.pro/news/jobdork-job-leads-from-employers-career-sites-ranked-by-your-resume.txt", "jsonld": "https://wpnews.pro/news/jobdork-job-leads-from-employers-career-sites-ranked-by-your-resume.jsonld"}}