Como encontre practicas en una semana automatizando LinkedIn y filtrando ofertas con datos
Como use Selenium, analisis de 10.000 ofertas de LinkedIn e ingenieria inversa de filtros ATS para conseguir 10 entrevistas con solo 15 correos.
Encontrar practicas puede parecer un juego de volumen: enviar muchos CVs, abrir muchas pestanas y esperar a que alguna empresa conteste. Yo lo enfoque al reves. En vez de mandar cientos de candidaturas genericas, construi un sistema para entender el mercado, detectar donde tenia mas encaje y contactar solo con oportunidades muy seleccionadas.
El resultado fue bastante claro: en una semana consegui 10 entrevistas con solo 15 correos. De esas entrevistas, 5 venian de ofertas cuyo plazo oficial ya estaba cerrado. La diferencia no fue mandar mas mensajes, sino saber mejor a quien escribir, por que tenia sentido y como explicar mi encaje.
Este fue el origen del LinkedIn Jobs Intelligence Bot, un proyecto de automatizacion que combina scraping, analisis de ofertas, lectura de patrones ATS y priorizacion contra mi propio CV.
El problema no era encontrar ofertas
El problema real no era que faltaran ofertas. El problema era que habia demasiadas.
LinkedIn, portales de empleo, formularios ATS, filtros de experiencia, ubicacion, idiomas, stacks tecnologicos, practicas curriculares, practicas extracurriculares, jornadas parciales, convenios con universidad, ofertas repetidas, ofertas cerradas que siguen apareciendo y empresas que siguen buscando aunque el formulario ya no acepte candidaturas.
Mirar eso manualmente durante horas no escala. Ademas, cuando todo se revisa a mano, es facil caer en dos errores:
- Aplicar a ofertas donde el encaje real es bajo.
- Ignorar ofertas donde el encaje es alto solo porque el titulo no parece perfecto.
Queria responder una pregunta distinta: de todas las ofertas disponibles, en cuales soy estadisticamente uno de los candidatos mas fuertes?
El scraper con Selenium
Para construir una base de datos propia, hice un scraper con Python y Selenium. El objetivo no era automatizar candidaturas ni enviar mensajes masivos, sino recopilar informacion suficiente para analizar el mercado con criterio.
El sistema llego a extraer aproximadamente 10.000 ofertas de LinkedIn en unas 3 horas. Por cada oferta intentaba guardar campos como:
- Puesto.
- Empresa.
- Ubicacion.
- Modalidad.
- Seniority.
- Stack tecnologico.
- Descripcion.
- Requisitos.
- Tipo de contrato o practicas.
- Fuente de aplicacion.
- Senales de si la oferta seguia activa o parecia cerrada.
La parte importante no era tener una tabla grande. La parte importante era convertir una lista desordenada de ofertas en un dataset donde pudiera comparar patrones.
No publico aqui detalles operativos del scraping porque no quiero convertir esto en una guia para abusar de ninguna plataforma. Lo relevante del proyecto no fue "rascar por rascar", sino usar datos para tomar mejores decisiones en una busqueda de practicas.
Entender como filtraban los ATS
Despues de recopilar las ofertas, me centre en entender como parecian funcionar los filtros y formularios ATS. No desde una perspectiva de enganar al sistema, sino de entender que senales se repetian en las ofertas que realmente encajaban conmigo.
Analice miles de descripciones buscando patrones:
- Keywords tecnicas que se repetian en practicas de software, automatizacion, datos e IA.
- Requisitos que eran realmente obligatorios frente a requisitos deseables.
- Ofertas que pedian "estudiante de ingenieria informatica" o convenio universitario.
- Stacks donde mi CV tenia mas fuerza: Python, automatizacion, scraping, n8n, Swift, web y flujos IA.
- Empresas que publicaban procesos abiertos aunque el formulario estuviera cerca de cerrar.
- Diferencias entre el titulo comercial de la oferta y el trabajo tecnico real.
- Lenguaje que indicaba que buscaban alguien junior con capacidad de aprender rapido.
Con esa informacion pude hacer una especie de ingenieria inversa del mercado: no para manipular los ATS, sino para entender que tipo de ofertas estaban disenadas para un perfil como el mio.
Ranking de encaje contra mi CV
La siguiente capa fue comparar las ofertas contra mi CV. El sistema tenia que responder tres cosas:
- Si cumplia los requisitos base.
- Si podia demostrar experiencia real con proyectos.
- Si tenia una historia concreta que contar a esa empresa.
Aqui los proyectos pesaban mucho. No era lo mismo decir "se Python" que poder ensenar el algoritmo del SEPE, workflows de NexaVision AI, una app iOS publicada o sistemas de automatizacion reales.
El ranking final no buscaba ofertas faciles. Buscaba ofertas donde mi perfil tuviera una ventaja clara: un requisito que ya habia demostrado, un stack que ya habia usado o un problema que ya habia resuelto en otro contexto.
15 correos, 10 entrevistas
Cuando el sistema ya tenia las mejores oportunidades priorizadas, no hice una campana masiva. Envie solo 15 correos.
Cada correo estaba elegido por una razon concreta. No era "hola, adjunto CV". Era un mensaje pensado para explicar:
- Por que esa oferta encajaba conmigo.
- Que proyecto mio demostraba una habilidad relevante.
- Que podia aportar desde el primer dia.
- Por que tenia sentido hablar aunque la oferta estuviera avanzada o cerrada.
La sorpresa fue que 10 de esos 15 correos terminaron en entrevista. Y una parte especialmente interesante fue que 5 entrevistas llegaron desde ofertas cuyo plazo oficial ya habia finalizado.
Eso me enseno algo importante: una oferta cerrada en un portal no siempre significa que la necesidad de la empresa haya desaparecido. A veces el formulario esta cerrado, pero el equipo sigue buscando, el proceso sigue abierto internamente o una candidatura muy alineada todavia puede entrar por una via mas humana.
Lo que aprendi
La mayor leccion fue que buscar practicas no tiene por que ser una loteria. Se puede tratar como un problema de informacion:
- Recopilar datos.
- Limpiar ruido.
- Entender patrones.
- Comparar cada oportunidad con tu perfil real.
- Priorizar pocas acciones con mucha intencion.
Tambien aprendi que los ATS no son jueces perfectos. Son filtros. Si entiendes que informacion necesitan, puedes presentar mejor tu experiencia sin inventar nada. La clave no es "hackear" el sistema, sino traducir tu perfil al lenguaje que la empresa ya esta usando.
Y, sobre todo, confirme algo que aplico en casi todos mis proyectos de automatizacion: automatizar no significa quitar criterio humano. Significa quitar trabajo repetitivo para que el criterio humano se use mejor.
Por que este proyecto representa bien mi forma de trabajar
Me gusta construir sistemas que convierten problemas caoticos en decisiones mas claras. En este caso, el problema era mi propia busqueda de practicas. Podria haberlo resuelto a mano, pero preferi construir una herramienta que me ayudara a pensar mejor.
El valor no estuvo solo en Selenium, ni en n8n, ni en el dataset de 10.000 ofertas. El valor estuvo en conectar todas esas piezas para responder una pregunta practica: donde tengo mas probabilidades reales de aportar valor?
Ese tipo de enfoque es el mismo que uso en mis proyectos de automatizacion e IA y en los sistemas que estoy construyendo para NexaVision AI: datos, contexto, automatizacion y accion humana en el punto correcto.
Si quieres hablar sobre automatizacion, IA aplicada o sistemas de busqueda inteligente, puedes contactarme desde LinkedIn o desde la pagina de contacto.