Skip to main content
Glama
HadarAlfasi

jobwise

by HadarAlfasi

JobWise

CI

Búsqueda de empleo con una interfaz nativa para agentes. Un motor, dos superficies: un MCP servidor que cualquier agente de IA puede usar, y — próximamente — una aplicación web.

JobWise lee ofertas de empleo de APIs públicas de ATS, las puntúa según tu currículum, y hace seguimiento de tus solicitudes. La puntuación se explica a sí misma, y nada se extrae de sitios web.

Estado: Fase 0 completada — motor principal y servidor MCP. La aplicación web es lo siguiente. Ver ROADMAP.md.

Por qué MCP

Las herramientas de empleo están hechas para que un humano haga clic en una interfaz. Eso las hace invisibles para los agentes con los que la gente trabaja cada vez más.

JobWise expone su motor a través del Model Context Protocol, para que puedas preguntarle a tu asistente "¿a qué debería postularme esta semana?" y él consulte tu flujo real — sin navegador, sin copiar y pegar, sin una aplicación aparte que recordar abrir.

Related MCP server: trackly-cli

Inicio rápido

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

npm run demo escanea los tableros incluidos, los filtra y los puntúa según un currículum de ejemplo, e imprime las mejores coincidencias. Sin configuración, sin claves de API, sin nada que registrar.

Luego conéctalo a tu agente:

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

Reinicia tu cliente y pregúntale a qué deberías postularte.

Cómo se ve una sesión

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.

(Los roles anteriores son ofertas reales de los tableros incluidos; las solicitudes son del rastreador de ejemplo en fixtures/.)

Herramientas

Herramienta

Qué responde

search_roles

"¿A qué debería postularme?" — escanea, filtra, puntúa, con razones

pipeline_status

"¿Cómo va mi búsqueda?" — cuenta por etapa, qué se movió recientemente

needs_attention

"¿Qué debería perseguir?" — solicitudes inactivas, excluyendo las cerradas

record_event

"Marca esto como rechazado" — cambio de estado de solo añadidura

Además, un recurso jobwise://pipeline: cada solicitud con su historial completo.

record_event solo escribe en tu almacén local. JobWise nunca envía una solicitud, manda un mensaje, ni contacta a un empleador.

Configuración

Dos archivos, ambos en YAML simple.

config/boards.yml — los tableros de empresas a escanear. Una entrada por tablero; añadir una empresa es una línea y no requiere cambios de código.

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

Viene precargado con empleadores tecnológicos israelíes verificados que tienen un tablero escaneable. Reemplázalos con los tuyos — encuentra el slug en la URL de carreras de la empresa (job-boards.greenhouse.io/SLUG, jobs.lever.co/SLUG, jobs.ashbyhq.com/SLUG).

config/profile.yml — tus preferencias. Copia el ejemplo:

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

Define tus reglas de ubicación, títulos objetivo y la ruta a tu currículum. config/profile.yml y my-resume.* están en .gitignore, así que tu búsqueda de empleo real nunca termina en el control de versiones.

Una trampa que el ejemplo advierte, porque costó solicitudes reales: alwaysAllow de ubicación se evalúa antes que block. Pon un país ahí y todas las reglas de bloqueo dejan de aplicarse silenciosamente — recibes roles de ciudades que excluiste explícitamente, sin nada que te diga por qué. Mantenlo en tu ciudad. Una prueba de regresión fija este comportamiento.

Cobertura, honestamente

JobWise lee Greenhouse, Lever y Ashby a través de sus APIs públicas de JSON. Sin claves, sin extracción de sitios, sin juegos de límites de tasa.

Eso no es todo. Muchos empleadores grandes — empresas que usan Workday, iCIMS o una página de carreras personalizada — no exponen una API escaneable, y ninguna herramienta de este tipo puede verlos. El soporte para más plataformas ATS está en el roadmap; las que ya están listadas usan HTTP simple.

Las plataformas ATS tampoco publican un índice de quién las usa, así que "escanearlo todo" es un problema de descubrimiento, no de obtención de datos. Ver el roadmap para el enfoque.

Sin extracción de sitios, por diseño

JobWise no extrae tableros de empleo de sitios web, y no lo hará. Va contra sus términos, se rompe constantemente, y en una herramienta dirigida a reclutadores es la señal equivocada. Obtener una oferta pública individual que un usuario pega explícitamente es un acto diferente y está planificado; extraer un tablero completo no lo está.

Cómo funciona

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

Toda la lógica vive en @jobwise/core. Las superficies son adaptadores delgados que traducen y formatean — si un comportamiento aparece en una de ellas, pertenece al núcleo.

La puntuación es determinista y explicable. Cinco componentes ponderados — título, coincidencia de habilidades, antigüedad, actualidad, ubicación — cada uno aporta puntos con una razón legible. Sin llamadas a modelos, sin clave de API, las mismas entradas siempre dan la misma puntuación. Esto es deliberado: es la línea base que cualquier puntuación futura basada en LLM debe superar de forma medible, en lugar de asumirse mejor.

Un componente sin datos se abstiene en lugar de puntuar cero, así que un tablero que no publica fechas no queda silenciosamente por debajo de uno más hablador.

El historial de solicitudes es de solo añadidura. El estado se deriva del registro de eventos, no al revés, así que el historial nunca puede contradecir el estado actual. Una corrección es otro evento, nunca una edición.

Desarrollo

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

La suite bloquea fetch por completo (test/no-network.ts), así que una caída de un ATS nunca puede poner la build en rojo. Las pruebas de proveedores se ejecutan contra fixtures guardados capturados de respuestas reales — actualízalos con node scripts/capture-fixtures.mjs.

stdout es el canal JSON-RPC. Un console.log en cualquier parte de core o mcp corrompe el flujo de MCP, y la aplicación web toleraría la misma línea felizmente. Una prueba escanea el código fuente y falla la build si encuentra uno, y la prueba de integración inicia el servidor real y verifica que cada línea que escribe en stdout es JSON-RPC válido.

Créditos

El importador del rastreador lee el formato de archivo de career-ops de Santiago Fernández de Valderrama, para que sus usuarios puedan sembrar JobWise con historial existente en un comando. JobWise es un trabajo separado y no comparte código con él.

Licencia

MIT © Hadar Alfasi

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
    81
    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.
    1,093
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    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.
    33
    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

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HadarAlfasi/jobwise'

If you have feedback or need assistance with the MCP directory API, please join our Discord server