JS JOB SCOUTAGENT CONTROL ROOM
● SELF-HOSTED · YOUR KEYS · YOUR SHEET

Eight agents.
One job hunt.

JobScout runs a small room of agents that search LinkedIn, Indeed and keyless job APIs, verify every posting, score it against your CV, and write the survivors into a Google Sheet you own. No account. No sign-up. Nothing leaves your machine.

DockermacOS · Linux · Windows~65 MB idleMIT
install · one command
$ docker run -d --name jobscout \
    -p 127.0.0.1:8080:8000 \
    -v jobscout_data:/app/data \
    ghcr.io/aniloncul/matching-jobs-finder:latest

# open http://localhost:8080

Docker Desktop or Engine required. The image is multi-arch (amd64 + arm64), so Apple Silicon and x86 both run it natively. Prefer Compose? Grab compose.yaml.

01 / CONTROL ROOM

A control room, not a form.

Watch commands travel between agents in real time. Pause, resume or cancel a run mid-flight; every state change is on the feed.

JobScout control room: agent graph, live feed and run controls
RUN VIEW · EIGHT AGENTSLIVE SSE FEED
02 / WHAT THE ROOM DOES

Search, verify, score, write.

Each agent has one job and hands its output to the next. No silent failures: a blocked source says so instead of pretending it was empty.

01

Two visible-browser scouts

LinkedIn and Indeed adapters read public search results in a persistent profile, keep volume low, and stop at cooperative pause checkpoints.

02

Five keyless sources

Greenhouse, Lever and Ashby boards, Arbeitnow, Hacker News “who is hiring”, the Bundesagentur API and any RSS feed — plain HTTP, no CAPTCHA race.

03

A verifier that says no

Dead links, expired postings and cross-source duplicates collapse before they reach your sheet. Provenance is kept per fetcher.

04

Fit scoring against your CV

The analyst compares each posting with your master CV, scores the match, and keeps a ranked shortlist instead of a pile.

05

Your own Google Sheet

Paste a sheet link and a service-account JSON once. Rows land in the sheet you shared — or export a plain CSV, no Google account needed.

06

Cover letters, your model

Any OpenAI-compatible endpoint, local Ollama included. Tailored letters and ATS-checked CVs, rendered to PDF with LaTeX.

03 / PRIVACY BY ARCHITECTURE

Your keys never leave your machine.

There is no JobScout account, no central server and no telemetry. The container talks to the sources and the model you chose, and writes everything else to a Docker volume on your disk.

● One instance per person, not a shared tenancy.
● Secrets are masked in every read endpoint.
● Files are written 0600, git-ignored.
DataLives in
Model API keysettings volume · masked in UI
Google service accountvolume · 0600
Master CV, profilevolume · your files
Browser sessionsvolume · local Chromium
Job resultsyour Google Sheet or CSV
Telemetrynone
04 / GET RUNNING

Three steps, then press run.

No terminal required after the first command: the Setup tab takes the key and the sheet.

STEP 01

Install Docker

Docker Desktop on macOS or Windows, Docker Engine on Linux. If docker info works, you are ready.

STEP 02

Run the container

Paste the command above. It binds to 127.0.0.1 only, so nothing is exposed to your network.

STEP 03

Fill SETUP once

Open localhost:8080, paste a model key, add your sheet, hit Test, then RUN BOTH.

05 / FAQ

Before you ask.

Is it really free?

The app is MIT-licensed and runs in Docker on your machine. You pay nothing to JobScout. You do need a model endpoint: a local Ollama is free, and hosted providers have free tiers — bring whichever key you already have.

Do I need a Google account?

No. Google Sheets is optional; the registrar can write a plain CSV. If you do use a sheet, you create the service account yourself and share that one sheet with it.

Does it scrape LinkedIn or solve CAPTCHAs?

It opens a visible browser with a persistent profile and reads public search result pages, at low volume, with pause and cancel checkpoints. There is no CAPTCHA solving, no proxy rotation and no credential storage. Indeed may ask for a human check; the app pauses and waits for you, then continues.

Can I use a local model?

Yes. Anything OpenAI-compatible works — Ollama, vLLM, LM Studio. Set the base URL and model in SETUP, or point the Compose file at an Ollama container.

Where is my data? How do I back it up?

Everything is in the jobscout_data Docker volume. Back it up with a one-line docker run --rm -v jobscout_data:/data … tar czf; the README has the exact command.

Can I reach it from another device?

You can, but then it is no longer loopback-only: set JOBSCOUT_PASSWORD, publish the port, and put HTTPS in front (Caddy or a tunnel). The guides for a VPS and for Oracle Always Free are in the repo.