PATRICH.tech
Automatización

Automatización de postulaciones SEEK

Automatiza pasos de búsqueda y postulación en SEEK e integra OpenAI para redactar cartas de presentación a partir del CV y la oferta. El README reconoce adaptación de configuración de un bot de terceros (AIHawk); no es código original de principio a fin.

Rol de Patrich: Autor de la integración y adaptación del flujo.

Problema y contexto

Postular a muchas ofertas en SEEK manualmente, redactando una carta de presentación distinta para cada una, es lento.

Destinatarios

Uso personal, para las propias postulaciones.

Solución

Un flujo con Selenium/Chrome busca ofertas por cargo y ubicación, detecta si ya se postuló ('You applied'), sigue los pasos de Quick Apply, y usa la API de OpenAI para generar una carta de presentación a partir del CV y la oferta. El login tiene un paso manual.

Alcance implementado

  • Búsqueda de ofertas por cargo y ubicación
  • Detección de postulaciones ya realizadas
  • Pasos de postulación rápida (Quick Apply)
  • Generación de carta de presentación con la API de OpenAI
  • Respuestas preconfiguradas a preguntas del formulario

Cómo lo construí

La integración con OpenAI (generación de cartas de presentación) está confirmada en el código. Esto no implica que el código en sí se haya escrito con asistencia de IA: son dos cosas distintas.

Proceso y decisiones

El README reconoce que la configuración de Chrome se adaptó de un bot de terceros (AIHawk); no se presenta como código original de principio a fin.

Tecnologías

PythonSeleniumOpenAI API

Resultados

Pensado para que cada persona lo ejecutara desde su propia máquina, no como servicio centralizado. Hay videos de demostración grabados por Patrich mostrando el flujo en funcionamiento (enlace abajo); no se integra una demo en vivo al portafolio porque enviaría postulaciones reales o consumiría la API de OpenAI (ver 'Aprendizajes').

Aprendizajes

El README enlaza un nombre de repositorio distinto y pide un requirements.txt que no está en el árbol revisado. Se importa un módulo de claves (src.apikeys) cuyo código fuente no aparece. main.py llama a un método (close_browser()) no definido en las clases revisadas. Algunas respuestas usan un selector genérico en vez del elemento correspondiente a su pregunta. Los selectores y pausas son frágiles y algunas excepciones se ignoran. No se ejecutaron postulaciones reales para este sitio ni se generará una demo que envíe solicitudes o consuma la API desde el portafolio.

Repositorio

Proyectos relacionados