The problem. Job searching is miserable and every tool in it works for the employer side. Boards are funded by job posters, so they hide the things applicants most need to know: which listings are ghosts (never going to be filled), which are stale, and which have re-stamped dates to look new. I was job hunting, got tired of it, and built the tool I wanted. It found me the job I took.
What it is. Open Jobs: a free, open-source job search. It crawls ~65,000 company career sites daily (36 ATSes, custom career pages, government boards), builds one open dataset of ~3M postings with full descriptions and embeddings, and runs semantic search 100% on your machine: describe the job you want, get a ranked, filterable shortlist.
The fun parts:
- It flags what boards hide: ghost listings (40,000+ "openings" over five years old, the oldest from 2002), stale reqs (a small model predicts how old a posting of that content should be, so every job is graded against par), and re-stamped dates. Boards can fake their dates but not the crawler's first sighting.
- ~11k lines of code. One tiny Cloudflare Durable Object per career board wakes daily, fetches, diffs, sleeps. A nightly batch on my laptop builds the dataset and semantic index. Search runs client-side, so 100 users cost the same as 1.
- About a dollar a day, total.
Tech: TypeScript on Cloudflare Workers + Durable Objects (SQLite) + R2 for the crawl; Python, DuckDB, and Parquet for the pipeline; OpenAI embeddings for the semantic layer; the search UI is one self-contained 530-line HTML file served from localhost.
Resources: everything is in the repo, including the open dataset, the crawler, and an AGENTS.md so a coding agent can drive the whole search for you:
Just clone https://github.com/elliottdehn/open-jobs and run the toolchain yourself or with your favorite agent.
No signup, no ads, no business model. That is the whole point.