Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jobsmith ⚒️

Rust License: MIT

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, а не ручной поиск?

Ручной поиск 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              # Сброс профиля или данных

⚙️ Фильтры hh.ru

Параметр Примеры
--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

About

AI-powered job application assistant for HeadHunter. Automates search, evaluation, CV generation, and PDF compilation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages