Aviación Civil / Logística / Transporte Aéreo
Empresas aéreas, aeropuertos y pasajeros que dependen de la puntualidad de los vuelos.
Necesidad del cliente (explicación no técnica)
Todos los que viajan en avión —y especialmente las aerolíneas y aeropuertos— sufren con retrasos.
Estos retrasos causan insatisfacción en los pasajeros, costos extras para las empresas y problemas de logística (como conexiones perdidas y reajustes de vuelos).
El cliente quiere predecir, basándose en datos del vuelo (origen, destino, hora, aerolínea, etc.), cuál es la probabilidad de que el vuelo se retrase para prepararse con antelación:
Los pasajeros pueden recibir alertas antes de salir de casa.
Las aerolíneas pueden ajustar la operación y minimizar el impacto.
Los aeropuertos pueden planificar mejor el uso de la infraestructura.
Validación de mercado
Predecir retrasos es una aplicación real y valiosa de ciencia de datos en transporte. Aerolíneas y startups del sector utilizan modelos predictivos similares para:
mejorar la puntualidad y la planificación de flota; reducir costos operativos y quejas; aumentar la satisfacción del cliente con información más transparente.
Incluso un modelo simple puede ser útil, ya que ayuda a identificar horarios o aeropuertos con mayor riesgo de retraso — un diferencial para el sector aéreo.
Expectativa para este hackathon
Público: estudiantes principiantes en tecnología, sin experiencia profesional en el área, que ya estudiaron Back-end (Java, Spring, APIs REST, persistencia) y Data Science (Python, Pandas, scikit-learn, modelado supervisado).
Objetivo: crear un MVP (producto mínimo viable) que recibe información de un vuelo y devuelve si probablemente será Puntual o Retrasado.
Alcance sugerido: clasificación binaria (0 = Puntual, 1 = Retrasado) usando un dataset simple y limpio.
Entregables deseados
Notebook (Jupyter/Colab) del equipo de Data Science, que contenga:
Exploración y limpieza de datos (EDA); Creación de variables relevantes (ej.: hora del vuelo, día de la semana, aeropuerto de origen/destino, aerolínea); Entrenamiento de un modelo predictivo (ej.: Logistic Regression, Random Forest); Evaluación del desempeño (Accuracy, Precision, Recall, F1-score); Exportación del modelo serializado (joblib/pickle).
Aplicación Back-End (API REST) desarrollada en Java (Spring Boot), que contenga:
Endpoint /predict que recibe información de un vuelo y devuelve la predicción; Integración con el modelo de DS (directa o vía microservicio separado); Manejo de errores y respuestas estandarizadas en JSON.
Documentación mínima (README)
Cómo ejecutar el proyecto; Dependencias y versiones de las herramientas; Ejemplos de petición y respuesta; Dataset utilizado (con enlace o descripción).
Demostración funcional
Mostrar la API en acción (a través de Postman, cURL o una interfaz simple).
Explicar brevemente el proceso (datos → modelo → predicción).
Funcionalidades exigidas (MVP)
El servicio debe exponer un endpoint que devuelve el status del vuelo al cual el texto pertenece y la probabilidad asociada a ese status:
Endpoint principal: POST /predict
Entrada (JSON)
{ "aerolinea": "AZ", "origen": "GIG", "destino": "GRU", "fechapartida": "2025-11-10T14:30:00", "distanciakm": 350 }
Salida (JSON)
{ "prevision": "Retrasado", "probabilidad": 0.78 }
Carga del modelo predictivo: el back-end debe poder usar el modelo (cargado localmente o vía microservicio DS).
Validación de entrada: garantizar que todos los campos necesarios estén presentes y correctos.
Respuesta clara: predicción + probabilidad en formato decimal (0 a 1).
Ejemplos de uso: Postman/cURL con 3 ejemplos reales (uno puntual, uno retrasado, uno con error).
README funcional: con pasos simples para ejecutar localmente.
Funcionalidades opcionales
Endpoint GET /stats: devuelve estadísticas agregadas (ej.: % de vuelos retrasados en el día).
Persistencia: guardar historial de predicciones y peticiones en una base de datos (H2/PostgreSQL).
Dashboard visual (Streamlit/HTML): muestra, en tiempo real, la tasa de retrasos prevista.
Integración con API externa de clima: añadir condiciones meteorológicas como feature del modelo.
Batch prediction: aceptar un archivo CSV con varios vuelos y devolver las predicciones en lote.
Explicabilidad: devolver las variables más importantes en la decisión (ej.: "Hora de la tarde y aeropuerto GIG aumentan el riesgo").
Contenerización: ejecutar el sistema completo con Docker/Docker Compose.
Pruebas automatizadas: unitarias y de integración simples.
Orientaciones técnicas para estudiantes
Se recomienda dejar el modelo ligero y el alcance controlado, para no sobrepasar los límites de always free de OCI.
Equipo de Data Science
Arme o elija un dataset propio con información de vuelos (ej.: aerolínea, origen, destino, hora, distancia); Utilice Python, Pandas y scikit-learn para análisis y modelado; Crear features a partir de los datos (ej.: hora, día de la semana, tipo de aerolínea); Elegir modelo de clasificación simple (LogisticRegression o RandomForestClassifier); Validar el modelo con datos separados (train/test); Guardar el modelo (joblib.dump) y garantizar que pueda ser cargado externamente.
Equipo de Back-End
Construir una API REST (en Java con Spring Boot).
Implementar un endpoint (ej: /predict) que recibe el JSON de un vuelo y devuelve la predicción.
Integrar el modelo de Data Science:
vía microservicio Python (FastAPI/Flask), o cargando el modelo exportado (ONNX, para equipos Java avanzados).
Validar entradas y devolver respuestas JSON consistentes.
Contrato de integración (definido entre DS y BE)
Recomendamos definir o contrato de integração logo no início do hackathon. Segue um exemplo:
Recomendamos definir el contrato de integración justo al inicio del hackathon. Sigue un ejemplo:
Entrada estándar
{ "aerolinea": "AZ", "origen": "GIG", "destino": "GRU", "fechapartida": "2025-11-10T14:30:00", "distanciakm": 350 }
Salida estándar
{ "prevision": "Puntual", "probabilidad": 0.22 }