Your job feed, tuned to you.

Tell it what you want.It reads every job, scores it for you,and sends the good ones to your phone.

  • Self-hosted
  • Open source
  • No telemetry
Job Radar in one minute 1:07
Demo
  • NEW Senior Applied AI Engineer · Fernwerk AI · Berlin · €95–120k · 88/100
  • NEW Forward Deployed Engineer · Kobalt Health · München · pay not stated · 81/100
  • NEW ML Engineer, Perception · Lumen Robotics · Garching · €78–92k · 76/100
  • NEW NLP Engineer, Search & Ranking · Nordlicht Systems · Berlin · €85–100k · 74/100
  • NEW AI Solutions Architect, DACH · Hafen Data · Hamburg · €140–170k · 68/100
  • NEW Data Scientist, Pricing · Talwerk Labs · Remote · €58–66k · 54/100

What it does

Four things it does for you.

Tell it once what you want. Then, on the schedule you pick, it does the rest.

  1. One place

    Every source, one feed.

    Pick the job boards and company career pages you care about. They all land in one list. The same job posted on five sites shows up once, agency posts and closed ads are flagged, and text hidden in an ad to steer AI readers is stripped before your AI sees it.

    • LinkedIn, Indeed, Google Jobs; StepStone, XING and Arbeitsagentur for Germany
    • Career pages on Greenhouse, Lever, Ashby, Personio, SmartRecruiters
    • Your job-alert emails from Gmail
  2. Tuned to you The core

    Your rules, not ours.

    Set the pay you won't go below, your cities, contract types and companies to skip. Then say what matters in plain words, in any language: what you want most, what's a nice extra, and what you will never accept. Jobs that hit a dealbreaker sink to the bottom.

    • Salary floor, cities, contracts, blocked companies
    • Scoring rules in your own words
    • Your own signal categories and saved views
  3. AI reads for you

    It reads every job, so you don't have to.

    Every description gets a 0–100 match score with the reasons it fits and the gaps. Pay buried in the text is found, quoted and turned into a yearly figure. Break a long ad down into tasks, stack and must-haves, see which of your skills it hits, and read it in your language.

    • Match score with reasons and gaps
    • Salary found, quoted, made yearly
    • Breakdown, skill match, translation
  4. On your phone

    The good ones come to you.

    After every cycle, the jobs that clear your bar land in Telegram with their score, pay and badges. Tap 👍 Interested, 🚫 Ignore or 📄 Tailor résumé right there, and your application board follows. Reminders nudge you when an application goes quiet.

    • Push with buttons, quiet hours
    • Application board and reminders
    • Alerts when a source breaks

Self-hosted Open source, AGPL-3.0 Your data stays on your machine Your AI subscription or API key No accounts No telemetry

How it works

Runs on your machine. Talks to your AI.

  1. 01

    Collect

    On your schedule, the runner fetches new postings from the sources you switched on and keeps each one as it arrived.

  2. 02

    Clean

    Pay, remote mode, languages and contract type are read out, duplicates merge, and your hard filters apply.

  3. 03

    Score

    The ai-worker on your computer hands each job to your AI: claude or codex with your own login, or an API key.

  4. 04

    Push

    Jobs over your bar go to your Telegram. Everything is on the dashboard at 127.0.0.1:3000.

Where everything runs

Job sites

Job boards, career pages, alert emails

Your machine

docker compose

  • webdashboard on 127.0.0.1:3000
  • runnerschedule, collect, process, backup
  • jobspyscraping sidecar
  • dbPostgres: all your data

on the host

  • ai-workerscores, translates, pushes

No AI credentials inside the containers.

Your AI

claude / codex with your login, or an API key

Telegram

your own bot

You

browser or phone

No AI connected yet? It still collects, de-duplicates, filters and shows postings. Only scoring, translation and breakdowns wait for an AI.

Install

Up and running in three steps.

You need Docker with Compose v2Node 22 and pnpm 11gitmacOS or Linux (tested)

  1. Start it

    Clone the repository, check out the latest release and bring up the dashboard, the runner, the scraper and the database. On Linux, run the two extra lines first.

    ~/job-radar
    git clone https://github.com/Joevonlong/job-radar.git
    cd job-radar
    git checkout v2.0.1  # the latest release; main is the development branch
    # on Linux only, before the first "docker compose up" (containers must run as your user):
    [ -f .env ] || cp .env.example .env
    sed -i.bak -e "s/^PUID=.*/PUID=$(id -u)/" -e "s/^PGID=.*/PGID=$(id -g)/" .env && rm .env.bak
    mkdir -p data/config data/profile data/backups data/exports data/logs .auth
    docker compose up -d --build  # db, web, runner, jobspy; the first build takes a few minutes
    
  2. Tell it what you want

    Open 127.0.0.1:3000. The setup wizard asks eight short questions: language, market, profile, what you're after, sources, AI, Telegram and a first cycle. No browser? The same questions run in the terminal.

    ~/job-radar
    # open http://127.0.0.1:3000 — the setup wizard starts on its own
    # no browser? the same eight questions in the terminal:
    pnpm install && pnpm run setup
    
  3. Connect your AI

    Scoring runs in a small worker on your computer, with your claude or codex login or an API key in .env. Keep it running in a terminal, or let one script install it as a background service (launchd on macOS, a systemd user unit on Linux).

    ~/job-radar
    pnpm install
    pnpm ai-worker  # keep it running
    # or run it as a background service (launchd on macOS, a systemd user unit on Linux):
    scripts/ops/install-ai-worker.sh
    pnpm run doctor  # checks everything, says what to fix
    

.env Keys and tokens go in .env only. The wizard never asks for them.

Full setup guide → macOS host checklist Watch the walkthrough →

Privacy

Your machine. Your data. Your AI.

  • No accounts Nothing to sign up for. One install, one person.
  • No telemetry It doesn't phone home, and there is no hosted service to send anything to.
  • Your machine Jobs, your profile and your applications live in a Postgres database in Docker on your computer.
  • Your AI The claude or codex plan you already pay for (nothing billed per token), or an API key with a monthly budget.
  • Your files Every setting is a plain, commented YAML file you own. Pulling an update never overwrites it.

What leaves your machine

  • Job text and the parts of your profile used for scoring (skills, languages, target titles, locations, salary floor, exclusions) the AI provider you picked
  • Optional features send more: weekly suggestions (the jobs you marked, with their status), salary lookup (company, title, city, country, seniority; off by default), web search for sources the AI and search providers you switched on
  • Push messages your own Telegram bot, if you set one up
  • Requests for job listings, and checks that a posting is still online the sources you switched on

Details, provider by provider, are on the privacy page. Privacy page →

FAQ

Questions people ask.

Is it free?

Yes. Job Radar is free and open source (AGPL-3.0), and you run it yourself. What can cost money sits outside it: your AI plan or API usage (API calls stop at a monthly budget you set), and optional paid sources such as Bright Data or Apify for LinkedIn.

Do I need an AI subscription?

No, but that is where it shines. Without an AI it still collects, de-duplicates, filters and shows postings. Scoring, translation and job breakdowns start once you connect claude or codex (the login you already have) or an API key (Anthropic, DeepSeek or MiMo).

Where does my data go?

It stays on your machine, in a Postgres database in Docker. The AI you chose gets the job text and the parts of your profile used for scoring; optional features such as weekly suggestions and salary lookup send a bit more, and messages go to your own Telegram bot. No accounts, no telemetry, no hosted service.

Which job sites does it cover?

LinkedIn, Indeed, Google Jobs through JSearch, the German boards StepStone, XING and the Federal Employment Agency (Arbeitsagentur; these three run in the Germany market only), company career pages on Greenhouse, Lever, Ashby, Personio and SmartRecruiters, and your job-alert emails from Gmail. You choose which to switch on; a few need a key.

About sources →

I'm not in Germany. Does it work for me?

Yes. The defaults assume no country and the interface speaks English or Chinese. A Germany and EU market pack ships with it (local job boards, German-level rules, EUR); for another country, copy a pack and adjust it.

Market packs →

Does it apply to jobs for me?

No. It finds, reads, scores and keeps track; you decide and you apply. When you want a tailored résumé, it hands the job to resume-kit, a separate tool.

Is scraping job sites allowed?

Some sources read public pages or unofficial endpoints, and some sites' terms forbid automated access. Job Radar throttles its requests, never tries to get past a login wall or CAPTCHA, and stops using a source that keeps failing. Check the terms of every site you switch on, keep volumes low, and prefer official APIs and your own alert emails.

What do I need to run it?

A computer that runs Docker on macOS or Linux (both tested; Windows with WSL2 is untested), plus Node 22 and pnpm 11 for the helper commands and the AI worker. It is built for one person on one machine, and Telegram works without opening any port.

Host checklist →