AI-ассистент для поиска работы на hh.ru.
Ищет вакансии, оценивает совместимость, пишет сопроводительные и собирает PDF — пока вы пьёте кофе.
| Фича | Описание |
|---|---|
| 🤖 AI-оценка совместимости | Автоматический fit-score между вашим профилем и вакансией. Знает, куда тратить время, а куда — нет. |
| 📝 Генерация CV и сопроводительных | AI адаптирует резюме и письмо под конкретную вакансию, а не шлёт шаблон. |
| 📄 PDF через Typst | Профессиональная вёрстка документов. Не Word, не Google Docs — настоящий типографский PDF. |
| 🔍 Четыре источника вакансий | hh.ru (нужен токен) и три без токена: Хабр Карьера (--source habr), Работа России (--source trudvsem, открытое гос. API с зарплатами) и GeekJob (--source geekjob). |
| 📊 Трекинг откликов | SQLite-база помнит все заявки, статусы и сгенерированные документы. |
| 🖥️ TUI-интерфейс | Удобный терминальный интерфейс на ratatui. Без браузера и таблиц Excel. |
# 1. Установите Typst (для генерации PDF)
# https://typst.app
# 2. Установите Kimi Code CLI и войдите в аккаунт: `kimi login` —
# весь AI-пайплайн (оценка, CV, письма) работает через ACP (`kimi acp`).
# 3. Склонируйте и соберите
git clone https://github.com/ekhodzitsky/jobsmith.git
cd jobsmith
cargo install --path .
# 4. Заполните профиль — интерактивный wizard
jobsmith setup
# 5. Найдите вакансии
jobsmith search "Rust developer" --area 1 --experience between3And6
# 6. Откликнитесь с AI-generated документами
jobsmith apply https://hh.ru/vacancy/123456
# 7. Следите за статусами
jobsmith list
jobsmith mark-applied 1 # после реальной отправки отклика┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ hh.ru API │────▶│ Fit Score │────▶│ AI Draft │
│ (поиск) │ │ (оценка) │ │ (CV+письмо)│
└─────────────┘ └──────────────┘ └──────┬──────┘
│
┌─────────────┐ ▼
│ SQLite DB │◀─── AI Review
│ (трекинг) │ (ревизия)
└──────┬──────┘
│
▼
┌─────────────┐
│ Typst → PDF │
└─────────────┘
Стек: Rust · Tokio · rusqlite · ratatui · reqwest · serde · Typst · ACP (Kimi Code)
| Ручной поиск | Jobsmith |
|---|---|
| 30 мин на чтение одной вакансии | 10 сек на AI-оценку |
| Шаблонное CV на все вакансии | Уникальное резюме под каждую позицию |
| Excel для трекинга | Встроенная SQLite + TUI |
| Word / Google Docs | Типографский PDF через Typst |
jobsmith setup # Интерактивное создание профиля
jobsmith search <query> # Поиск вакансий (hh.ru по умолчанию)
jobsmith search <query> --source habr|trudvsem|geekjob # Без токена
jobsmith apply <url|id> # AI-пайплайн: оценка → CV → письмо → PDF (источник по URL)
jobsmith list # Список откликов и статусов
jobsmith mark-applied <id> # Отметить отклик как отправленный
jobsmith salary <company> # Справочник зарплат (нужен salary_data.json, см. ниже)
jobsmith salary --role 96 --area 1 # Онлайн-статистика зарплат с hh.ru (без файла)
jobsmith reset # Сброс профиля или данных| Параметр | Примеры |
|---|---|
--area |
1 — Москва, 2 — СПб |
--experience |
noExperience · between1And3 · between3And6 · moreThan6 |
--employment |
full · part · project · volunteer · probation |
--schedule |
fullDay · shift · flexible · remote · flyInFlyOut |
Два режима:
Онлайн — статистика HH по профролям, файл не нужен:
jobsmith salary --role 96 --area 1 # 96 = разработчик, 1 = Москва
jobsmith salary --role 96 --area 1 --json
⚠️ /salary_statistics— партнёрский эндпоинт HH («Банк зарплат»): без соответствующего доступа API отвечает 404, и команда честно покажет эту ошибку. Локальный режим работает всегда.
Локальный — jobsmith salary <company> ищет по файлу salary_data.json в каталоге данных; без него команда сообщит об ошибке:
| Где лежит | Путь |
|---|---|
| macOS | ~/Library/Application Support/jobsmith/salary_data.json |
| Linux | ~/.local/share/jobsmith/salary_data.json |
С флагом --data-dir <dir> |
<dir>/salary_data.json |
Схема файла (поля metadata, city, categories опциональны):
{
"metadata": {
"index_label": "Зарплатный индекс",
"index_baseline": 100.0,
"source": "откуда данные"
},
"companies": [
{
"company": "Яндекс",
"city": "Москва",
"categories": { "senior_rust": "300000–450000 ₽" }
}
]
}Наполняйте из любого удобного источника (внутренние бенчмарки, зарплатные опросы, выгрузки). Поиск нечувствителен к регистру, отбрасывает правовые формы («ООО», «АО», …) и понимает частичные совпадения: jobsmith salary сбертех найдёт «ООО СберТех».
- HH API без токена.
api.hh.ruотвечает403 forbiddenна анонимные запросы —search/applyдля hh.ru требуют OAuth-авторизации приложения, которой в jobsmith пока нет. Обходной путь: используйте Хабр Карьеру (jobsmith search <query> --source habr) — она работает без токена через публичные RSS и schema.org JSON-LD. salary --role/--area— партнёрский эндпоинт HH (см. выше).- Rabota.ru не поддержан. Сайт — Nuxt SPA: листинг вакансий доступен
только из обфусцированного
window.__NUXT__(привязка к конкретной сборке, нестабильно), публичного API нет. Стабильного машинного канала для анонимного поиска не нашлось — источник намеренно не добавлен.
cargo test --all-features # 90+ тестов
cargo clippy --all-targets --all-features # zero warnings
cargo fmt
cargo doc --no-deps --all-featuresКонвенции — см. AGENTS.md.
Типизированные ошибки (thiserror), zero unwrap в продакшене, forward-compatible модели.
MIT © ekhodzitsky