Skip to main content
Glama
HadarAlfasi

jobwise

by HadarAlfasi

JobWise

CI

Поиск работы с нативным интерфейсом для агентов. Один движок, две поверхности: MCP сервер, которым может управлять любой ИИ-агент, и — далее — веб-приложение.

JobWise читает открытые вакансии из публичных ATS API, оценивает их по вашему резюме и отслеживает ваши отклики. Оценка объясняет себя, и ничего не скрейпится.

Статус: Фаза 0 завершена — ядро движка и MCP-сервер. Веб-приложение — далее. См. ROADMAP.md.

Зачем MCP

Инструменты для поиска работы созданы для человека, кликающего по интерфейсу. Это делает их невидимыми для агентов, с которыми люди всё чаще работают.

JobWise предоставляет свой движок через Model Context Protocol, поэтому вы можете спросить своего ассистента «на что мне откликнуться на этой неделе?», и он обратится к вашему реальному конвейеру — без браузера, без копипаста, без отдельного приложения, о котором нужно помнить.

Related MCP server: trackly-cli

Быстрый старт

git clone https://github.com/HadarAlfasi/jobwise.git
cd jobwise
npm ci
npm run build
npm run demo

npm run demo сканирует встроенные доски, фильтрует и ранжирует их по образцу резюме и выводит лучшие совпадения. Без конфигурации, без API-ключей, без необходимости регистрироваться.

Затем подключите его к своему агенту:

claude mcp add jobwise -s user -e JOBWISE_DIR="$PWD" -- node "$PWD/packages/mcp/build/index.js"

Перезапустите клиент и спросите его, на что вам стоит откликнуться.

Как выглядит сессия

You:  What should I apply to this week?

      → search_roles { limit: 4 }

      42 matching role(s), showing 4:

      71  Payoneer — Team Lead R&D, CLM
          Ramat HaSharon, Tel Aviv District, Israel · posted 2026-08-19
          https://www.payoneer.com/careers/position/8146...
          · Title matches "Team Lead"
          · Seniority matches your target
          · Mentions 8 of your 31 skills: agile, go, kafka, microservices…

      70  Riskified — Software Engineering Manager
          Tel Aviv-Yafo, Gush Dan, Israel · posted 2026-08-11
          · Title matches "Software Engineer"
          · Seniority matches your target
          · Mentions 8 of your 31 skills: agile, aws, ci/cd, kubernetes…

You:  Anything I should be chasing?

      → needs_attention { silentForDays: 7 }

      2 application(s) quiet for 7+ days, longest first:

         30d  Northwind — Senior Backend Engineer   [applied]  id=app-northwind
         11d  Meridian Labs — Platform Team Lead    [applied]  id=app-meridian

You:  Meridian got back to me, I have a phone screen.

      → record_event { applicationId: "app-meridian", type: "interview",
                       note: "phone screen booked" }

      Recorded "interview" on Meridian Labs — Platform Team Lead.
      Status is now interview with 2 events on record.

(Роли выше — реальные объявления со встроенных досок; отклики — из образца трекера в fixtures/.)

Инструменты

Инструмент

На какой вопрос отвечает

search_roles

«На что мне откликнуться?» — сканирует, фильтрует, ранжирует с пояснениями

pipeline_status

«Где мой поиск?» — подсчёт по этапам, что сдвинулось последним

needs_attention

«За чем мне следить?» — отклики, затихшие без ответа, без завершённых

record_event

«Отметить как отклонённый» — добавляет событие без перезаписи истории

Плюс ресурс jobwise://pipeline: каждое отклик с полной историей.

record_event пишет только в ваш локальный стор. JobWise никогда не отправляет отклики, не пишет сообщения и не связывается с работодателем.

Конфигурация

Два файла, оба в простом YAML.

config/boards.yml — доски компаний для сканирования. Одна запись на доску; добавить компанию — одна строка, без изменения кода.

boards:
  - { provider: greenhouse, slug: catonetworks, company: Cato Networks }
  - { provider: ashby,      slug: finout,       company: Finout }

Поставляется с проверенными израильскими tech-работодателями, у которых есть сканируемая доска. Замените их на свои — найдите слаг в URL карьеры компании (job-boards.greenhouse.io/SLUG, jobs.lever.co/SLUG, jobs.ashbyhq.com/SLUG).

config/profile.yml — ваши предпочтения. Скопируйте пример:

cp config/profile.example.yml config/profile.yml

Задайте правила для локации, целевые должности и путь к резюме. config/profile.yml и my-resume.* в .gitignore, так что ваш реальный поиск работы никогда не попадёт в систему контроля версий.

Одна ловушка, о которой предупреждает пример, потому что она стоила реальных откликов: alwaysAllow вычисляется до block. Поместите туда страну — и каждое правило block молча перестанет применяться: вы получите вакансии из городов, которые явно исключили, и ничего не укажет на причину. Держите его для своего родного города. Регрессионный тест фиксирует это поведение.

Охват, честно

JobWise читает Greenhouse, Lever и Ashby через их публичные JSON API. Без ключей, без скрейпинга, без обхода лимитов.

Это не всё. Многие крупные работодатели — стартапы на Comeet, компании на Workday, iCIMS или с собственными страницами карьеры — не предоставляют сканируемого API, и ни один инструмент такого типа не может их увидеть. Поддержка других ATS-платформ — в роадмапе; те, что уже есть, — это простой HTTP.

ATS-платформы также не публикуют индекс того, кто их использует, так что «сканировать всё» — это задача обнаружения, а не загрузки. См. роадмап для планируемого подхода.

Без скрейпинга, осознанно

JobWise не скрейпит доски вакансий и не будет. Это против их условий, это постоянно ломается, а для инструмента, нацеленного на рекрутеров, это неверный сигнал. Загрузка одного публичного объявления, которое пользователь явно вставил, — другое действие и оно запланировано; массовый сбор досок — нет.

Как это работает

  Greenhouse ┐
  Lever      ├──▶  @jobwise/core  ──┬──▶  MCP server   (agents drive it)
  Ashby      ┘   fetch · normalize  └──▶  web app      (next)
  your resume ─▶ match · track

Вся логика — в @jobwise/core. Поверхности — тонкие адаптеры, которые переводят и форматируют; если поведение появляется в одной из них, ему место в ядре.

Оценка детерминирована и объяснима. Пять взвешенных компонентов — должность, совпадение навыков, старшинство, свежесть, местоположение — каждый даёт баллы с человекочитаемым пояснением. Без вызова модели, без API-ключа, одинаковые входные данные всегда дают одинаковый результат. Это осознанно: это базовый уровень, который любая будущая LLM-оценка должна превзойти измеримо, а не просто предположительно.

Компонент без данных воздерживается, а не ставит ноль, так что доска без дат не будет молча опускаться ниже более активной.

История откликов только добавляется. Статус вычисляется из журнала событий, а не хранится, поэтому история никогда не может разойтись с текущим состоянием. Исправление — это новое событие, а не правка.

Разработка

npm run build      # compile both packages
npm run typecheck  # includes test files
npm test           # 204 tests, no network
npm run demo       # end-to-end against live boards

Набор тестов блокирует fetch целиком (test/no-network.ts), так что сбой ATS не может остановить сборку. Тесты провайдеров запускаются на зафиксированных данных, полученных из реальных ответов; обновите их с помощью node scripts/capture-fixtures.mjs.

stdout — это JSON-RPC канал. Любой console.log в core или mcp ломает поток MCP, и веб-приложение с радостью потерпит то же самое. Тест сканирует исходники и роняет сборку на любой console.log; интеграционный тест поднимает реальный сервер и проверяет, что каждая строка в stdout — валидный JSON-RPC.

Благодарности

Импортёр трекера читает формат файлов career-ops Сантьяго Фернандеса де Вальдеррамы, так что пользователи могут перенести свою историю в JobWise одной командой. JobWise — отдельный проект и не делит с ним код.

Лицензия

MIT © Hadar Alfasi

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables searching over 1 million enriched job listings from 20,000+ companies directly from MCP-compatible AI tools. Provides tools for job search, company profiles, and AI-powered similar job recommendations with real-time data updates.
    4
    21 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.
    96 npm
    3
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    An MCP server that enables AI-assisted job search workflows including job discovery, application tracking, resume evaluation, and cover letter generation, with support for multiple job sources and scheduled scraping.
    83
    13 npm
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that exposes job-search and application-management capabilities to compatible AI clients, enabling discovery of vacancies, drafting of tailored application materials, and coordinated human-approved submissions.
    MIT