
La Comunidad Ninja sigue evolucionando y, con ello, nacen nuevos proyectos colaborativos que nos permiten aprender juntos mientras trabajamos en iniciativas reales.
Este proyecto se inspira en la web datanerd.tech y busca responder preguntas clave para quienes buscan oportunidades laborales en el sector de datos.
En esta primera sesión, no solo sentamos las bases del Proyecto LinkedIn, sino que definimos cómo abordaremos el aprendizaje de forma práctica y colaborativa.
A lo largo de este proyecto, nos enfrentaremos a desafíos reales en ingeniería de datos, análisis y visualización, explorando herramientas clave del ecosistema de datos.
Nuestro objetivo es construir una herramienta que permita visualizar datos de interés para cualquier ninja de los datos como:
Este proyecto nos dará la oportunidad de aprender haciendo, tocando cada etapa clave de un flujo de trabajo de datos:
El aprendizaje es colaborativo y flexible.
Cada miembro podrá contribuir en las áreas que más le interesen, ya sea ingeniería de datos, modelado, almacenamiento o análisis.
Además:
Si te interesa aprender más sobre Ingeniería de Datos, Análisis o Tecnologías Cloud, esta es tu oportunidad de hacerlo con un proyecto práctico y en comunidad.
📺 Puedes ver la sesión de presentación del proyecto a continuación:
En esta segunda sesión del proyecto, Raúl nos guía en la etapa de planificación de proyectos de datos extremo a extremo.
Para evitar una sobrecarga de tareas y garantizar avances tangibles, nos enfocaremos en la construcción de un MVP (Producto Mínimo Viable).
Un aspecto clave es definir claramente qué queremos mostrar antes de recopilar los datos.
La estrategia será partir de preguntas concretas para evitar almacenar información innecesaria y optimizar el proceso de transformación y análisis.
Además de definir la infraestructura y el enfoque de trabajo, consolidamos la importancia de establecer una base sólida antes de comenzar con la recopilación de datos.
Con estos fundamentos, el siguiente paso será comenzar a extraer datos de LinkedIn y evaluar su calidad para garantizar que las visualizaciones finales cumplan con los objetivos planteados.
Si quieres conocer más sobre cómo estamos construyendo este proyecto, no te pierdas la grabación de la sesión.
En esta tercera sesión de una hora del Proyecto LinkedIn, nos adentramos en la extracción de datos desde APIs y damos el primer paso técnico para construir nuestra base de conocimiento sobre el mercado laboral en el sector de datos.
Empezamos con una introducción a las APIs, entendiendo qué son y cómo funcionan, con analogías sencillas que ayudan a aterrizar conceptos como los endpoints, los métodos HTTP, los parámetros o las claves API.
A partir de ahí, exploramos dos marketplaces que ofrecen acceso a datos de LinkedIn:
Analizamos qué ofrece cada uno, qué campos devuelven, cómo están documentados y, muy importante, cuánto cuestan.
Este punto es clave para decidir cuál usaremos en el proyecto, ya que cada una tiene sus ventajas y limitaciones tanto técnicas como económicas.
Después vino la parte práctica.
Montamos un entorno con Docker que incluye Jupyter y una base de datos PostgreSQL, y desarrollamos un script en Python que:
pandas.Esta sesión marca el inicio del trabajo con datos reales, sentando las bases técnicas para las siguientes etapas del proyecto.
Puedes ver la sesión completa a continuación:
En esta cuarta sesión, hemos dado un paso fundamental en el diseño de nuestra herramienta: el modelado conceptual de datos.
Aquí donde conectamos el mundo técnico con las necesidades reales de quienes usarán nuestros dashboards.
El modelado de datos no es solo cosa de ingeniería: también es análisis, estrategia y sentido común.
Nos centramos en identificar qué métricas queremos representar (por ejemplo, número de ofertas por tipo de contrato, ubicación o tecnología requerida) y qué dimensiones vamos a necesitar para analizarlas.
Durante la sesión reflexionamos sobre lo que podemos obtener fácilmente desde la API de LinkedIn y lo que requerirá más trabajo, especialmente en el tratamiento de texto libre (como las habilidades en la descripción de las ofertas).
También discutimos las principales estrategias de modelado de datos, con sus ventajas y limitaciones.
🧭 El modelado conceptual nos da dirección: antes de picar código, pensar qué queremos construir.
Así evitamos desarrollar soluciones que no resuelven problemas reales.
¿Quieres ver cómo lo hicimos en directo y qué decisiones tomamos como equipo? Puedes ver la grabación completa aquí:
En esta sesión extra del Proyecto LinkedIn, nos adentramos en el uso de modelos de lenguaje para enriquecer nuestra base de datos con información extraída de la descripción del puesto de trabajo.
El objetivo de esta sesión de 50 minutos de duración es utilizar un modelo de lenguaje para analizar las descripciones de las ofertas de empleo y extraer de manera automática atributos como habilidades técnicas, herramientas, soft skills o incluso el idioma en el que está escrita la oferta.
Este paso nos permite transformar texto no estructurado en datos listos para ser analizados, ampliando así el valor de nuestro dataset original.
Esta sesión marca el inicio del trabajo con modelos de lenguaje en el Proyecto LinkedIn, abriendo la puerta a nuevas formas de enriquecer nuestros análisis con información más profunda y precisa.
¿Quieres ver todo el proceso en detalle? Puedes acceder a la grabación completa aquí:
El objetivo de esta sesión de 1 hora es sumergirnos en el mundo de la arquitectura de datos y establecer una estructura sólida para nuestro proyecto de análisis de ofertas de empleo.
Exploraremos cómo organizar y transformar los datos que hemos recopilado, utilizando como guía principal la arquitectura Medallion con sus capas Bronce, Plata y Oro.
Este enfoque nos permitirá evolucionar desde datos crudos y sin procesar hasta información refinada, lista para análisis y visualizaciones, sentando una base robusta para las futuras etapas del proyecto.
Una cosa es modelar los datos —es decir, representar qué entidades existen, cómo se relacionan y qué atributos tienen— y otra muy distinta es pensar en cómo gestionamos esos datos de principio a fin: desde que los recibimos hasta que los usamos en un dashboard o en una toma de decisiones.
Eso es lo que hace la arquitectura de datos: definir el recorrido completo que sigue la información.
Nos ayuda a responder preguntas como:
Para entenderlo, repasamos la evolución de los sistemas de almacenamiento:
A partir de ahí, Databricks propuso un patrón llamado arquitectura Medallion, que organiza los datos por niveles de calidad y transformación y del que hablamos largo y tendido durante la sesión.
Con esta sesión terminamos de definir cómo gestionaremos nuestros datos de manera eficiente y escalable, asegurando la calidad y la trazabilidad necesarias para generar análisis fiables y de impacto.
¿Quieres ver cómo empezamos a construir nuestras capas de datos y aplicamos la teoría a la práctica?
Puedes acceder a la grabación completa aquí:
El objetivo de esta sesión de una hora es profesionalizar nuestro proyecto de análisis de ofertas de empleo, aprendiendo cómo refactorizar un proyecto de datos para dejar atrás los notebooks y la fase de experimentación y construir una base sólida, segura y modular.
Aplicamos buenas prácticas de ingeniería de datos y preparamos el terreno para su automatización con Airflow.
Durante la sesión exploramos:
¿Tienes tu código en notebooks y quieres llevarlo a producción? ¿No sabes cómo estructurar un proyecto de datos de forma profesional?
Es normal.
Cuando empezamos un proyecto en Jupyter, todo suele estar en un único archivo.
Pero en cuanto queremos escalar, colaborar o automatizar, necesitamos separar responsabilidades y pensar como ingenieros de datos:
En esta sesión trabajamos todo eso.
requirements.txt, .env y definimos buenas prácticas de versionado en Git💡 Si estás buscando cómo pasar de un notebook experimental a un pipeline profesional en un entorno colaborativo, esta sesión es tu hoja de ruta.
El objetivo de esta sesión de una hora es aprender a crear un DAG en Airflow paso a paso y automatizar nuestro pipeline de análisis de ofertas de empleo.
Una vez hemos refactorizado el código del proyecto y ya tenemos las funciones de extracción, carga y transformación listas, ahora es el momento de orquestarlas en un flujo controlado, programado y escalable.
Durante la sesión configuramos el entorno, explicamos cómo funciona Airflow por dentro, y construimos nuestro primer DAG.
Airflow es una herramienta que nos permite automatizar tareas que hacemos de forma repetitiva, como descargar datos, procesarlos o generar reportes.
Lo hace mediante algo llamado DAG: un conjunto de tareas conectadas entre sí que se ejecutan en un orden determinado.
Cada tarea puede ser un script de Python, un comando en la terminal o incluso algo que no hace nada pero sirve para marcar un paso (como los checkpoints).
Además, Airflow nos permite decidir cuándo ejecutar esas tareas (cada día, cada semana, o cuando queramos), guardar un historial de ejecuciones, ver errores y asegurarnos de que todo funciona correctamente.
💡 Al final de la sesión tendrás claro cómo crear un DAG en Airflow paso a paso, desde un archivo .py hasta su ejecución automatizada dentro de un contenedor Docker.
¿Quieres pasar de ejecutar scripts manualmente a tener un flujo automatizado y monitorizado?
Entonces esta sesión es para ti 🤩
En esta novena sesión del Proyecto LinkedIn, seguimos trabajando con Airflow utilizando el CLI de Astro.
Si en la sesión anterior sentamos las bases sobre qué teníamos que hacer para automatizar nuestro pipeline de análisis de ofertas de empleo, en esta sesión nos ponemos manos a la obra y vemos todo el código de nuestras DAGs.
En esta sesión vemos como hemos construido el código de las piezas por separado (extracción, enriquecimiento y transformación) y vemos cómo hacerlas fucnionar como un único sistema.
La orquestación con Airflow no solo consiste en programar tareas, sino en gestionar las dependencias entre ellas, monitorizar su ejecución y, lo más importante, saber cómo diagnosticar y solucionar los problemas cuando ocurren.
Veremos cómo los tres DAGs que hemos diseñado en Airflow trabajan juntos para transformar los datos crudos de la API en un modelo dimensional listo para el análisis, enfrentándonos a los desafíos y errores que surgen en un entorno real.
Una sesión especialmente práctica para entender cómo automatizar todo el flujo de datos y construir una plataforma escalable y mantenible.
Después de varias sesiones construyendo una arquitectura sólida, automatizando flujos de datos con Airflow y enriqueciendo nuestra base de datos con modelos de lenguaje, en esta décima sesión damos el salto al frontend de nuestro proyecto:
¡la visualización de datos!
En esta sesión integramos Streamlit como nuevo servicio dentro de nuestro entorno de contenedores.
El objetivo: desarrollar un dashboard interactivo que nos permita visualizar los resultados del pipeline completo, desde la ingesta hasta la capa de análisis.
Aprendemos paso a paso:
Además, diseñamos una primera visualización que muestra, para cada palabra clave de búsqueda (como data scientist o data engineer), cuáles son las habilidades técnicas más demandadas según los datos extraídos de las ofertas de empleo.
Esta sesión nos permite empezar a ver el potencial de nuestros datos 🚀
En esta sesión del Proyecto LinkedIn de una hora de duración, nos centramos en las mejoras técnicas implementadas y los últimos ajustes necesarios antes de pasar el proyecto a producción en la nube.
Durante esta sesión revisamos todas las optimizaciones implementadas para hacer el proyecto más estable, eficiente y listo para producción:
Hemos implementado un sistema completo de manejo de errores para las llamadas a Scraping Dog y OpenAI:
Aprovechamos al máximo los límites de la API de Scraping Dog:
Para optimizar el uso de créditos de la API, implementamos:
Implementamos una arquitectura de almacenamiento que previene pérdida de datos:
Las tres DAGs con las que terminamos la sesión:
airflow_settings.yml y requiere configuración manual tras cada reinicio.Para mantener la seguridad del proyecto, evitar exponer información crítica y acostumbrarnos a seguir buenas prácticas, algunos archivos no están incluidos en el repositorio.
A continuación encontrarás el contenido de esos archivos que debes usar: