Jobscout banner
hrvelchev hrvelchev

Jobscout

AI community

Description

Daily job-hunting agent: scrapes boards, semantically dedupes (pgvector), LLM-scores against your profile, and delivers a ranked Telegram digest with draft notes. The human applies; the bot never does. LangGraph + Postgres + Docker, 88 tests.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

jobscout

[![ci](https://github.com/hrvelchev/jobscout/actions/workflows/ci.yml/badge.svg)](https://github.com/hrvelchev/jobscout/actions/workflows/ci.yml)

A daily job-hunting agent that works *for* you and never *as* you: it fetches postings, dedupes them semantically, scores each one against your profile with an LLM, and delivers a ranked morning Telegram digest - each card with a draft application note and the CV variant to attach. **You read, you edit, you apply. The bot never applies for you.**

Built as a working tool first and a demonstration second: LangGraph where branching is genuinely load-bearing, Postgres + pgvector for semantic dedupe, Docker for the runtime, CI running the full suite - 79 offline tests with the network disabled at socket level, plus 9 integration tests against real pgvector.

How it works

                         07:45 Europe/Sofia - scout
  +--------------------+      +--------------------------+
  | dev.bg categories  |----->|                          |
  | (HTML, politely)   |      |   exact dedupe           |   every posting
  +--------------------+      |   (source, external_id)  |   gets exactly one
  +--------------------+      |         |                |   audited verdict
  | Greenhouse boards  |----->|   semantic dedupe        |   in scan_log:
  | (public JSON API)  |      |   pgvector cosine >= .90 |   dup_exact
  +--------------------+      |   AND same company       |   dup_semantic
                              |         |                |   excluded
                              |   free prefilter         |   no_lane_kw
                              |   exclude + keywords     |   over_run_cap
                              +-----------|--------------+   over_daily_cap
                                          v                  score_failed
                     per survivor: LangGraph pipeline        drafted ...
             +--------------------------------------------+
             |  reserve --> score --> g