📈 GH Trending Explorer 🎲 Surprise me

← all repos

Riper21 / hh-sniper

git clone https://github.com/Riper21/hh-sniper.git

Снайпер вакансий hh.ru: LLM-скоринг под ваш профиль, автопилот откликов в первые 10 минут после публикации (обгоняем ботов), статические письма с гвардом от галлюцинаций. Всё локально на вашем ПК, официальный API, Python.

—
stars, 24h
+32
stars, 7 days · #1,279
+32
stars, 30 days · #8,514
32
★ total · +32% this week
4
forks · 0 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguagePython
License—
Created2026-10-18 (2d ago)
Last push1d ago
Watchers0
OwnerUser

GitHub topics

Links

README excerpt
# hh-snpr
**Windows / Linux / macOS / Docker (VPS, 24/7)** — один конвейер, четыре
способа тикать: джоба Task Scheduler (Windows), systemd user-timer (Linux),
launchd (macOS), контейнер с рестартом (Docker/VPS). Общий тикер —
`python -m snpr daemon`.
Автоматический снпрер вакансий с hh.ru: каждую минуту ищет свежие вакансии
по вашим запросам, оценивает их LLM на соответствие вашему профилю,
прикладывает сопроводительное письмо и откликается — вручную или автопилотом
(только по вакансиям младше 10 минут: на ходовые вакансии боты откликаются
каждые ~4 секунды, и чем раньше отклик — тем выше вы в очереди).
 [code] 
- **LLM используется только для скоринга** — письмо статическое, текст не
 подгоняется под вакансию (промпт-инъекция физически не может его изменить).
- **Гвард письма** перед каждым автопилотом: числа в письме разрешены только
 из вашего профиля фактов, ссылки — только из вашего белого списка.
- **Тикер на любой ОС**: Windows — скрытая джоба каждую минуту
 (адаптивное окно поиска: ноут спал — первый такт доберёт пропущенное,
 лок на повторный запуск); Linux/macOS — `scripts/unix/install.sh`
 (systemd/launchd-юнит) или `python -m snpr daemon`; Docker на VPS —
 `docker compose up -d --build`, контейнер тикает 24/7. Когда есть что
 решить — окно `approve` + сигнал (на Linux/macOS/Docker — BEL в логах).
- **Жизнь отклика**: автоподнятие резюме каждые 4 ч в рабочие часы
 (буст видимости), «няня» — отчёт о реакциях работодателей, автоответы
 на вопросы ИИ-скринеров в чатах, уборка неактивных откликов, локальный
 блэклист работодателей.
## Быстрый старт
Подробно — в ИНСТРУКЦИЯ_ПОЛЬЗОВАТЕЛЯ.md.
Коротко:
 [code] 
Linux/macOS: те же команды (`python` вместо `.venv\Scripts\python.exe`),
`job on` подскажет установку юнита (`scripts/unix/install.sh`) или tmux.
VPS без ноутбука: `docker compose up -d --build` (токен переносится с
машины, где есть браузер — см. ИНСТРУКЦИЯ, «Постоянный режим — VPS»).
## Настройка под себя
Вся персонализация — в одном файле `snpr\config.toml`, правится без
перезапуска (следующий такт подхватит):
| Ключ | Что это |
|---|---|
| `[scoring].profile` | Профиль кандидата → системный промпт скорера: от этого зависит, что получит высокий скор |
| `[search].queries` | Слова полнотекстового поиска hh |
| `[letter].static_text` | Текст письма, уходящего с откликом |
| `[letter].profile` | Факты с цифрами: числа из письма гвард проверяет по ним |
| `[letter_guard].allowed_url_prefixes` | Ваши github/статьи, разрешённые в письме |
| `[scoring].auto_approve_min` | Порог автопилота (55; **0 = всё на ручное решение**) |
| `[send].max_age_minutes` | Максимальный возраст вакансии для автопилота (10) |
Код модулей содержит те же значения как ПРИМЕР-дефолты (пустой конфиг —
работаем на примере). Пороги, гейты и механика описаны в комментариях
конфига.
## После отклика
Отклик ушёл — дальнейший жизненный цикл тоже автоматизирован:
- **Автоподнятие** (само, в каждый такт): POST /resumes/{id}/publish
 каждые 4 ч в окне 9–19 МСК — hh ранжирует п