JSJorge Sebastián Soriano EN

Caso · Motor de reglas

Triaje explicable de ofertas

Un sistema personal que reúne ofertas de fuentes públicas, las unifica y las evalúa con reglas que se pueden leer y discutir. No envía candidaturas: prepara un informe priorizado y deja cada decisión a una persona.

Dónde se usa
Uso personal
Estado
En uso · ciclo cada dos días
Mi papel
Criterios, integración, validación con casos reales y mantenimiento. Código con IA
Tecnologías
Python (biblioteca estándar), SQLite, IMAP, RSS, tareas programadas de Windows
Panel de ofertas evaluadas con puntuación y estado
Demo: 52 ofertas inventadas con su decisión y motivo. Perfil ficticio.

El problema

Revisar ofertas a mano repite siempre los mismos tropiezos:

  • El dato decisivo no está en los campos del anuncio: el salario aparece en el texto, mezclado con el variable, o no aparece.
  • El anuncio se contradice: «indefinido» en el campo de contrato y «seis meses» en la descripción.
  • Un anuncio «remoto» solo admite residentes de otro país.
  • La misma oferta llega por varias vías y vuelve a salir después de descartarla.

Qué hace

Fuentes públicasAPIs, RSS, alertasNormalizary deduplicarMotor de reglas6 factores + 5 checksInformepriorizado por estadoSeguimiento14 estados, deshacer

Cada oferta recibe una puntuación de 0 a 100 con sus motivos, cinco comprobaciones independientes (salario, ubicación, contrato, inglés y viajes) y un estado. El informe ordena primero por estado y después por puntuación.

Por qué una oferta queda condicionada

Honestidad del dato

Que un anuncio no publique un requisito no significa que se cumpla: queda «por confirmar». Y ante una contradicción, el motor no se queda con el dato más favorable.

  • Seis factores ponderados: puesto (25), habilidades (30), experiencia (20), sector (10), crecimiento (10) e idioma (5).
  • Estados separados de la puntuación. Una oferta con 83 puntos puede quedar condicionada si falta un dato decisivo.
  • Salario leído con cuidado. Solo cuenta una cifra del texto si va junto a vocabulario salarial y en un rango anual plausible. El variable no cuenta como fijo.
  • Reglas en lugar de un modelo. Hay pocos casos y cada decisión tiene consecuencias. Prefiero reglas que se pueden leer, probar y discutir.

Qué no hace

  • No envía candidaturas ni escribe en el buzón: el correo se lee en modo solo lectura.
  • Solo usa APIs públicas de tableros de empleo, RSS y alertas de correo. No entra en páginas con sesión.
  • El panel solo es accesible desde el propio equipo, con copia de seguridad antes de cada ciclo.

Qué es real y qué es demo

ParteEn la demoDetalle
Ofertas, empresas y salariosSintético52 anuncios inventados; 22 son casos de prueba deliberados.
Perfil del candidato y candidaturasSintéticoFicticios: no son los criterios del autor.
Motor de evaluaciónRealRecreación en JavaScript de la lógica original.
Código original, base de datos y correosNo incluidoNo se publican.

Resultados

157tests del sistema originalunittest con transportes simulados
12fuentes públicas38 consultas por ciclo
349comprobaciones de la demodatos y casos plantados

Limitaciones y siguientes pasos

  • La detección de habilidades se basa en vocabulario: reconoce menciones, no el nivel exigido.
  • Siguiente paso: medir qué ofertas recomendadas acaban siendo interesantes y ajustar los pesos con ese dato.

Capturas de la demo

Todas con datos sintéticos.

Ofertas evaluadas con perfil editable
Ofertas evaluadas con perfil editable
Contradicción de contrato detectada
Contradicción de contrato detectada
Cambiar el perfil cambia las decisiones
Cambiar el perfil cambia las decisiones
Informe del ciclo
Informe del ciclo
Seguimiento con estadísticas desde el historial
Seguimiento con estadísticas desde el historial
Vista móvil
Vista móvil