# Ciclo de vida de los procesos selectivos en el Buscador Multisearch Cuarta entrega del proyecto. Cómo enseñar al sistema a distinguir las **fases** de un proceso selectivo, vincularlas entre sí y dar prioridad a la fase de **bases de la convocatoria** (la única que contiene el temario). --- ## 1. El problema Hasta ahora el buscador trata cada coincidencia como un evento aislado: encuentra una mención de "Inspector de Hacienda" y la envía. Pero una oposición no es un evento, es un **proceso** con al menos tres fases que aparecen en boletines distintos, con meses de diferencia y con un vocabulario propio cada una: | Fase | Qué se publica | Dónde aparece | Cuándo (típicamente) | |---|---|---|---| | **1. OEP** | Oferta de empleo público anual: "se autorizan X plazas del cuerpo Y" | BOE / boletín autonómico / provincial | Marzo–mayo del año | | **2. Bases** | Bases reguladoras de la convocatoria, **incluido el temario**, plazos, tribunal, ejercicios, valoración de méritos | Boletín autonómico / provincial | Verano–otoño | | **3. Apertura plazo** | Convocatoria formal y plazo de presentación de solicitudes | BOE | Después de las bases | Y hay sub-fases derivadas (lista de admitidos provisional y definitiva, fechas de ejercicios, composición de tribunal, listas de aprobados, adjudicación de destinos, nombramientos…) que tienen valor para personas que ya están dentro del proceso. La **fase 2 es la crítica para una academia de formación**: ahí está el temario que hay que preparar. Si el sistema la detecta y la destaca, estás ganando semanas o meses de ventaja para construir materiales, abrir cursos y avisar a alumnos. --- ## 2. Clasificación automática por fase Cada hit del buscador debe etiquetarse con una fase. Esto se hace con un **sub-diccionario de palabras-ancla por fase**, aplicado sobre el mismo fragmento donde ha coincidido el patrón temático. ### 2.1 FASE 1 — OEP (Oferta de empleo público) **Palabras-ancla específicas de OEP:** ``` oferta de empleo publico oferta publica de empleo OEP OPE (usado en sanidad) se aprueba la oferta real decreto \d+/\d{4} (típico de OEP estatal) plazas autorizadas distribucion de plazas tasa de reposicion tasa adicional tasa de estabilizacion tasa extraordinaria plazas para nuevo ingreso acuerdo de la mesa general acuerdo del consejo de gobierno (autonómicas) decreto \d+/\d{4}.* oferta de empleo plan de empleo plan plurianual anexo de plazas distribucion territorial de plazas ``` **Pistas adicionales** (no determinantes pero refuerzan): - Documento largo (> 5 páginas). - Tablas con columnas "cuerpo/escala", "plazas", "discapacidad", "promoción interna", "acceso libre". - Aparece en BOE en marzo–mayo del año. - Cita Ley 31/2022 (PGE), RD-ley 6/2023, EBEP, etc. - Firma del Ministro o Consejero. ### 2.2 FASE 2 — Bases de la convocatoria **Palabras-ancla específicas de BASES** (las más importantes): ``` bases reguladoras de la convocatoria bases especificas bases generales bases que han de regir convocatoria de pruebas selectivas proceso selectivo para el ingreso proceso selectivo para la cobertura proceso selectivo para la provision sistema selectivo sistema de seleccion fase de oposicion fase de concurso concurso-oposicion concurso de meritos ejercicios de la oposicion primer ejercicio segundo ejercicio tercer ejercicio prueba teorica prueba practica prueba psicotecnica prueba fisica test de \d+ preguntas temario programa programa de la fase de oposicion anexo i: programa anexo: temario anexo programa anexo temario parte general del programa parte especifica del programa tribunal calificador composicion del tribunal sistema de baremacion valoracion de meritos criterios de valoracion sistema de puntuacion calificacion de las pruebas requisitos de los aspirantes condiciones de los aspirantes turno libre / turno de promocion interna turno de reserva tipo de contratacion caracter del nombramiento ``` **Pistas adicionales:** - Documento de tamaño medio (10–40 páginas típicamente). - Aparece en BOPB / BOP autonómico / DOG / DOGC / DOGV / BOJA / etc., **no** en BOE para administraciones locales. - Cita el RD por el que se aprobó la OEP (vínculo con FASE 1). - Suele haber tablas con baremos y criterios. ### 2.3 FASE 3 — Apertura de plazo (convocatoria en BOE) **Palabras-ancla específicas:** ``` convocatoria de pruebas selectivas convocatoria del proceso selectivo resolucion de \d+ de \w+ de \d{4}.* convocatoria plazo de presentacion de solicitudes plazo de \d+ dias habiles veinte dias habiles contados a partir del dia siguiente inscripcion en el proceso selectivo modelo 790 tasa de derechos de examen presentacion de instancias solicitudes de participacion presentacion telematica sede electronica punto de acceso general administracion.gob.es/PAG/ips inscripcion en pruebas selectivas ``` **Pistas adicionales:** - Aparece en BOE (típicamente Sección II.B). - Cita el RD/Orden de bases (vínculo con FASE 2). - Indica fecha y modelo de pago de tasas. - Documento corto (3–10 páginas). ### 2.4 Sub-fases posteriores Útiles para usuarios que ya están en el proceso: | Sub-fase | Palabras-ancla | |---|---| | Corrección de errores | `correccion de errores`, `errata`, `subsanacion de la convocatoria` | | Ampliación de plazo | `ampliacion del plazo`, `nuevo plazo de presentacion` | | Lista provisional admitidos | `lista provisional`, `aspirantes admitidos y excluidos`, `plazo de subsanacion` | | Lista definitiva admitidos | `lista definitiva de admitidos`, `fecha del primer ejercicio`, `lugar del examen` | | Composición de tribunal | `composicion del tribunal calificador`, `nombramiento del tribunal`, `presidente del tribunal` | | Plantilla provisional respuestas | `plantilla provisional`, `plantilla correctora`, `respuestas correctas` | | Plantilla definitiva | `plantilla definitiva`, `respuestas tras alegaciones` | | Resultados de ejercicios | `calificaciones`, `nota final`, `resultados del primer ejercicio` | | Aprobados sin plaza | `relacion de aprobados sin plaza`, `bolsa de empleo de aspirantes` | | Lista de aprobados | `relacion definitiva de aprobados`, `propuesta de nombramiento` | | Adjudicación destinos | `adjudicacion de destinos`, `eleccion de destino`, `vacantes ofertadas` | | Nombramientos | `nombramiento como funcionario`, `toma de posesion`, `juramento o promesa` | ### 2.5 Reglas para asignar la fase Algoritmo simple (orden de evaluación): 1. Si dispara alguna palabra-ancla de **OEP** + el patrón temático → FASE 1. 2. Si dispara alguna palabra-ancla de **BASES** → FASE 2. 3. Si dispara alguna palabra-ancla de **APERTURA PLAZO** → FASE 3. 4. Si dispara alguna palabra-ancla de **SUB-FASE** → fase concreta. 5. Si no dispara ninguna → `fase: desconocida` (probable falso positivo o referencia administrativa). Aplicar reglas R1–R14 del documento de exclusiones para decidir si bajar a BAJA. Casos especiales: - Si dispara tanto **BASES** como **APERTURA PLAZO** (ocurre cuando las bases incluyen ya el plazo) → asignar **BASES** (es el evento más informativo). - Si dispara **OEP** y **BASES** a la vez → asignar **BASES** (las bases citan a la OEP de la que proceden, pero la fase real es BASES). --- ## 3. Diseño del email reorganizado por fase El email diario gana mucho si se reorganiza así: ``` Asunto: Multisearch Hacienda — 11-05-2026 1 BASES · 2 OEP · 4 plazos abiertos · 7 sub-fase ═══════════════════════════════════════════════════════ 🟢 BASES DE LA CONVOCATORIA (1) [destacado, máxima prioridad] ═══════════════════════════════════════════════════════ BOPB Barcelona — Bases convocatoria 5 plazas Técnico de Hacienda Ayuntamiento de Mataró · 2 plazas turno libre, 3 promoción interna Temario: 60 temas (parte general 15, específica 45) · 4 ejercicios Tasa: 25 € · Plazo de presentación se abrirá en BOE [📄 Descargar PDF] [📋 Ver temario extraído] [✓ Correcta] [✗ FP] ═══════════════════════════════════════════════════════ 🔵 OFERTA DE EMPLEO PÚBLICO (2) [importante, no urgente] ═══════════════════════════════════════════════════════ BOE — RD 387/2026: OEP estatal 2026 Hacienda: 130 plazas Inspectores, 446 plazas Técnicos, 1.000 Agentes [📄 Descargar PDF] [📅 Ver plazas previstas para tu categoría] ... ═══════════════════════════════════════════════════════ 🟡 APERTURA DE PLAZO (4) [acción inmediata: avisar a alumnos] ═══════════════════════════════════════════════════════ BOE — Convocatoria pruebas selectivas Técnico de Hacienda 2025 Plazo de presentación: 20 días hábiles desde 12-05-2026 Tasa: 24 € · Sede electrónica AEAT [📄 Descargar PDF] ... ═══════════════════════════════════════════════════════ ⚪ SUB-FASES (7) [contraído por defecto] ═══════════════════════════════════════════════════════ ▸ Listas definitivas admitidos · Cuerpo X (BOE) ▸ Composición tribunal · Cuerpo Y (BOPV) ... ═══════════════════════════════════════════════════════ 🔴 POSIBLES FALSOS POSITIVOS (3) [contraído] ═══════════════════════════════════════════════════════ ... ``` Las **BASES van arriba siempre**. Es el evento más procesable: hay temario para preparar, hay tiempo de margen, hay materiales que producir. El resto se ordena por urgencia operativa. --- ## 4. Vinculación entre fases — Seguimiento de proceso Esta es la funcionalidad más potente que puedes añadir. Cada proceso real tiene un "hilo" que cruza las tres fases a lo largo de meses. Si el sistema los vincula, se obtiene una vista de **ciclo de vida** por oposición. ### 4.1 Generación del identificador de proceso Para cada hit, calcular una `clave_proceso` derivada de: - **Administración convocante** (Ministerio X, Junta Y, Ayuntamiento Z, Diputación W). Extraída del fragmento o del boletín. - **Cuerpo/escala/categoría** convocada. Normalizada contra el catálogo oficial del diccionario maestro. - **Año de la oferta** (si es identificable). En su defecto, año de publicación. - **Turno** (libre / promoción interna / reserva discapacidad). Ejemplo de clave: `aytomadrid_tag-a1_2026_libre`, `ingesa_enfermera_2026_libre`, `agetributaria_inspector-hacienda_2026_libre`. La normalización es lo difícil. Recomendaciones: - **Catálogo de administraciones** con sus variantes ortográficas (`Ayuntamiento de Madrid`, `Ayto. Madrid`, `Excmo. Ayuntamiento de Madrid`, `Madrid (Ayuntamiento)` → todos = `aytomadrid`). - **Catálogo de cuerpos** con sus alias (todo lo de la sección 27 del diccionario maestro). Y los códigos oficiales del BOE (0011, 1166…) son una pista fortísima cuando aparecen. - **Fuzzy matching como fallback** cuando los textos no coincidan exactamente: Levenshtein normalizado sobre administración + cuerpo con umbral ~0.85. ### 4.2 Vista de ciclo de vida Una vez que las claves de proceso están bien, el sistema puede mostrar una página por proceso: ``` Proceso: TÉCNICO DE HACIENDA — AEAT 2026 — Turno libre ═══════════════════════════════════════════════════════════════ 446 plazas autorizadas (cupo general 410 + 36 discapacidad) ✅ 07-may-2026 · FASE 1: OEP aprobada (BOE núm. 111, RD 387/2026) 130 Inspectores Hacienda + 446 Técnicos + 1.000 Agentes Hacienda Pública [Ver documento original] ⏳ FASE 2: Bases de la convocatoria — PENDIENTE Estimación: 2–4 meses (basada en histórico) ⏳ FASE 3: Apertura de plazo en BOE — PENDIENTE Estimación: 1 mes después de las bases Alertas activas: 🔔 Avisarme cuando aparezcan las bases 🔔 Avisarme cuando se abra el plazo ``` Y cuando salgan las bases, el mismo proceso se actualiza: ``` ✅ 07-may-2026 · FASE 1: OEP aprobada ✅ 04-sep-2026 · FASE 2: Bases publicadas (BOE núm. 211) Temario: 60 temas · 4 ejercicios [Ver bases] [Ver temario extraído] ⏳ FASE 3: Apertura de plazo — PENDIENTE ``` Esto es información que **el opositor pagaría por tener**, y que la **academia de formación necesita para anticipar carga de trabajo**. ### 4.3 Tiempos típicos entre fases A medida que el sistema acumula histórico, puede aprender los tiempos típicos entre fases por tipo de oposición. Datos esperables (orden de magnitud): | Tipo de oposición | OEP → Bases | Bases → Plazo BOE | OEP → Examen | |---|---|---|---| | Estatal (Hacienda, AGE) | 3–6 meses | 1–2 meses | 12–18 meses | | Autonómica | 4–8 meses | 1–2 meses | 14–20 meses | | Local (ayuntamiento medio) | 2–5 meses | 1 mes | 8–14 meses | | Justicia | 4–7 meses | 2–3 meses | 16–22 meses | | Educación (oposiciones secundaria) | 1–3 meses | 1 mes | 6–10 meses | Con datos reales esto se calibra solo. Y permite avisar cuando un proceso esté tardando inusualmente: "El proceso X lleva 9 meses sin publicar bases — comprueba si la convocatoria sigue en pie." --- ## 5. Extracción del temario y datos estructurados de las bases Esto es donde la herramienta puede **multiplicar su valor** para una academia. Cuando se detecta FASE 2 (bases), procesar el PDF para extraer: ### 5.1 Datos estructurados de la convocatoria - **Número de plazas** por turno (libre, reserva discapacidad, promoción interna). - **Cuerpo/escala/categoría** y grupo (A1, A2, C1, C2, AP). - **Sistema selectivo**: oposición, concurso, concurso-oposición. - **Número y tipo de ejercicios**: teórico, práctico, idiomas, informática, físico, psicotécnico. - **Tasa de derechos de examen**. - **Plazo de presentación** y dónde se publicará la apertura. - **Composición del tribunal** (si está en bases). - **Criterios de valoración** de la fase de concurso. Todo esto va en una tabla en el email y en la ficha del proceso. ### 5.2 Extracción del temario Las bases típicamente incluyen un Anexo con el temario. El sistema debe: 1. **Localizar la sección de temario** en el PDF. Patrones de búsqueda en el texto extraído: - `ANEXO I` / `ANEXO II` (a veces) seguido de `PROGRAMA` o `TEMARIO`. - Encabezados como `Programa de la fase de oposición`, `Temas de la parte general`, `Temas de la parte específica`. - Listados numerados con el patrón `Tema \d+\.` o `\d+\.\s+[A-Z]` al inicio de línea, repetidos N veces consecutivas. 2. **Extraer los temas** como lista estructurada: ```json { "parte_general": [ {"num": 1, "titulo": "La Constitución española de 1978. Estructura y..."}, {"num": 2, "titulo": "El Tribunal Constitucional. Composición, ..."}, ... ], "parte_especifica": [ {"num": 1, "titulo": "Procedimiento administrativo común..."}, ... ] } ``` 3. **Comparar con temarios previos del mismo cuerpo** si los hay. La herramienta puede mostrar un diff: ``` Cambios respecto a la convocatoria anterior (BOE núm. 89, 2024): + 4 temas nuevos (parte específica: 23, 35, 41, 58) - 2 temas eliminados (parte específica: 17, 29) ~ 8 temas reformulados (mismo número, distinto título) = 46 temas idénticos ``` Esto es **información de oro** para una academia: te dice qué hay que reescribir y qué se mantiene. 4. **Guardar el temario en una base de datos histórica** indexada por cuerpo, administración y año. A los 2–3 años de funcionamiento tienes un archivo completo de temarios reutilizable y comparable. ### 5.3 Implementación: cuándo usar reglas y cuándo LLM - **Estructuración inicial** (encontrar inicio/fin del temario, separar temas numerados): reglas + parsing del PDF, sin LLM. Esto es estable y barato. - **Limpieza y normalización** (eliminar saltos de línea, juntar títulos partidos, detectar subapartados): reglas con caracteres especiales, todavía sin LLM. - **Diff semántico entre temarios** (detectar "mismo tema reformulado" vs "tema nuevo"): aquí sí merece la pena un LLM o un embedding model. Con un modelo de embeddings (incluso pequeño, tipo `sentence-transformers/distiluse`) y cálculo de similaridad coseno se resuelve. - **Clasificación de temas por área de conocimiento** (derecho administrativo, gestión financiera, informática, etc.): LLM, cuando esté la pieza disponible. --- ## 6. Calendarización y alertas Cuando se detecta una FASE 3 (apertura de plazo en BOE), extraer fechas: - **Fin del plazo de presentación de solicitudes** (típicamente 20 días hábiles desde la publicación). - **Fecha probable del primer examen** (si aparece, suele ser una ventana del tipo "no antes de 3 meses tras la publicación"). - **Fechas indicadas en cronograma orientativo** (la OEP 2026 las exige explícitamente). El sistema genera entonces: - **ICS** (calendario suscriptible) con cada hito por usuario. - **Recordatorios** automáticos por email: - 7 días antes de fin de plazo de solicitudes. - El día del fin de plazo. - 30 días antes del primer examen previsto. - **Resumen mensual** "lo que viene": qué procesos cambian de fase en los próximos 30 días según las estimaciones del sistema. --- ## 7. Impacto en los diccionarios Hay que añadir a la estructura YAML de cada categoría: ```yaml nombre: Hacienda y gestión tributaria codigo: hacienda patrones_alta_confianza: - inspector/a de hacienda del estado - ... # NUEVO: palabras-ancla por fase, en archivos compartidos palabras_ancla_fase: importar: - reglas/fases_oep.yaml - reglas/fases_bases.yaml - reglas/fases_apertura.yaml - reglas/fases_subfases.yaml # NUEVO: prioridad en email prioridad_por_fase: bases: maxima # arriba del email oep: alta apertura_plazo: alta sub_fases: media desconocida: baja # NUEVO: catálogo de administraciones convocantes para esta categoría administraciones_relevantes: - codigo: aeat nombres: ["Agencia Tributaria", "AEAT", "Agencia Estatal de Administración Tributaria"] - codigo: ministerio_hacienda nombres: ["Ministerio de Hacienda", "Ministerio de Hacienda y Función Pública"] - ... ``` Y crear los cuatro archivos compartidos de palabras-ancla por fase (uno por fase, con las listas de la sección 2 de este documento). --- ## 8. Métricas nuevas a vigilar Sobre el dashboard del documento anterior, añadir: - **Distribución de hits por fase** y por categoría: cuántos son OEP / bases / apertura / sub-fase / desconocida. Ayuda a detectar si el sistema está clasificando bien. - **Procesos en seguimiento**: cuántos hilos activos hay (procesos con al menos FASE 1 detectada, pero sin FASE 3 cerrada). - **Tiempo medio entre fases** por tipo de oposición. Permite mejorar las estimaciones. - **Procesos huérfanos**: FASE 1 detectada hace > N meses, sin FASE 2 todavía. Tres opciones: convocatoria retrasada, convocatoria abandonada, o el sistema no la ha sabido vincular. - **Cobertura del temario extraído**: % de FASE 2 detectadas para las cuales se ha conseguido extraer el temario con éxito. --- ## 9. Briefing para el desarrollador Listo para pasar como continuación del proyecto: > Añade al buscador un sistema de fases para que cada hit se etiquete > con su fase del proceso selectivo: OEP, bases, apertura de plazo o > sub-fase posterior. Para detectar la fase, usa los cuatro archivos > nuevos de palabras-ancla por fase del documento > `ciclo_vida_procesos_buscador.md`, sección 2. La lógica está en la > sección 2.5: orden de evaluación y casos especiales. > > Reorganiza el email diario en cuatro bloques visualmente distintos: > BASES arriba (destacado), luego OEP, luego apertura de plazo, luego > sub-fases plegado. Los falsos positivos al final como ahora. Las > BASES son la fase clave porque contienen el temario — todo el > producto se reorienta hacia ese hito. > > Implementa la vinculación de fases con un `id_proceso` derivado de > administración + cuerpo + año + turno. Mantén un catálogo normalizado > de administraciones y cuerpos para el matching. Cuando dos hits > compartan `id_proceso`, agrúpalos como hilo de proceso y muéstralos en > una vista de ciclo de vida. > > Cuando se detecte una FASE 2 (bases), procesa el PDF con un parser > para extraer datos estructurados (plazas, ejercicios, tasa, > composición tribunal) y, sobre todo, **el temario**. Guarda los > temarios en una BD histórica indexada por cuerpo + administración + > año, y genera un diff respecto al temario anterior del mismo cuerpo > si existe. Para diff semántico usa embeddings. > > Las FASE 3 (apertura plazo) deben extraer fechas y generar ICS + > recordatorios automáticos por email a los suscriptores de esa > categoría. > > Métricas nuevas en el dashboard: distribución de hits por fase, > procesos activos, tiempo medio entre fases, procesos huérfanos, > cobertura de extracción de temarios. > > Test de aceptación con la OEP 2026 (BOE 7-mayo-2026): el sistema > debe etiquetarla como FASE 1 en todas las categorías relevantes, > crear un proceso activo por cada cuerpo del Anexo I, y empezar el > seguimiento esperando FASE 2 en los próximos 2–6 meses. --- ## 10. Roadmap incremental **Sprint 1** (lo crítico): - Cuatro archivos de palabras-ancla por fase, cargados como configuración compartida. - Clasificación de cada hit por fase (sección 2.5). - Reorganización del email en cuatro bloques con BASES arriba. Con eso solo ya tienes una herramienta cualitativamente mejor que el Buscador 2 — sabe **qué tipo de evento** es cada hit, no solo dónde cayó la palabra. **Sprint 2** (vinculación): - Catálogo de administraciones y cuerpos normalizados. - Generación de `id_proceso` para cada hit. - Vista de ciclo de vida por proceso. - Métricas nuevas en dashboard. **Sprint 3** (extracción): - Parser de las bases: datos estructurados (plazas, ejercicios, tasa, tribunal). - Extracción del temario. - BD histórica de temarios. **Sprint 4** (calendarización): - Extracción de fechas de FASE 3. - ICS suscriptible. - Recordatorios automáticos. **Sprint 5** (avanzado, con histórico): - Diff semántico entre temarios. - Estimación de tiempos entre fases. - Alertas de procesos huérfanos. --- ## 11. Por qué esto cambia el producto Antes: "Te aviso cuando aparezca la palabra X en algún boletín." Después: "Te sigo cada oposición a lo largo de su ciclo de vida. Sé cuándo se aprueba la OEP, cuándo salen las bases, cuándo se abre el plazo y cuándo es el examen. Te paso el temario estructurado, te lo comparo con el anterior y te aviso con tiempo para preparar el material. Y te lo organizo por prioridad operativa, no por orden de aparición." Es la diferencia entre una herramienta de notificación y una herramienta de inteligencia. Para una academia de formación que vive de anticipar convocatorias y producir materiales, el segundo es lo que justifica el proyecto.