Cargando...
Cómo analizamos y clasificamos el riesgo de viaje. Explicación completa del pipeline: fuentes, IA, alertas y presentación.
MAEC · US State Dept · UK FCDO · WHO DON · ReliefWeb · USGS · GDACS · GDELT · RSS · Reddit · OpenSky · ACLED · Open-Meteo · OSM
Estandarizamos formatos, códigos ISO, coordenadas y categorías de todas las fuentes
Groq clasifica señales OSINT. ML Random Forest predice cambios de riesgo
Detección de incidentes, clusterización, sentimiento, Early Bird digest, notificaciones Telegram
Mapa interactivo, fichas de país, radar, chat IA con itinerarios + análisis de riesgo integrado, dashboard, newsletter, infografías
Los niveles de riesgo se extraen directamente de las recomendaciones de viaje del MAEC (Ministerio de Asuntos Exteriores, Unión Europea y Cooperación de España). Esta información se actualiza periódicamente y es la referencia oficial para viajeros españoles.
Complementamos los datos del MAEC con dos fuentes gubernamentales internacionales para una triple validación del nivel de riesgo:
Travel Advisories con niveles numéricos 1-4 desde la perspectiva estadounidense. Permite cruzar datos y detectar divergencias con la valoración europea.
Ver advisories →Foreign Travel Advice del gobierno británico. Cubre países donde el MAEC o US no tienen datos actualizados, rellenando huecos y añadiendo una tercera perspectiva al análisis de riesgo.
Ver FCDO advice →Destino seguro para viajeros españoles. Precauciones normales de cualquier viaje internacional.
Precauciones habituales reforzadas. Posibles manifestaciones o delitos menores en zonas turísticas.
Riesgo significativo. Se recomienda extremar precauciones y evitar zonas específicas.
Viajes no esenciales desaconsejados. Situación de conflicto o inestabilidad grave.
NO viajar. Riesgo extremo para la vida. Zona de guerra, colapso estatal o catástrofe.
Se scrapean las recomendaciones oficiales del MAEC, US State Dept y UK FCDO para cada país. Los tres fuentes se normalizan a un esquema común (source, country_code, risk_level 1-4, risk_label, summary, raw_data JSONB).
Los países se clasifican en 5 niveles de riesgo según el texto oficial. Se mapean códigos ISO2 para compatibilidad con datos internacionales.
Se cruzan datos de índices globales (GPI, GTI, HDI), fuentes OSINT y las tres fuentes gubernamentales para ofrecer contexto adicional. Si una fuente no tiene datos, otra puede cubrir el hueco.
Se calcula el Travel Cost Index combinando demanda, precio del petróleo, estacionalidad, inflación, índice de riesgo y cierres de espacio aéreo.
Los datos se refrescan diariamente a las 06:00 UTC mediante cron maestro. Las alertas se publican en Telegram. El digest "Early Bird" se envía a las 07:00 UTC.
El histórico de riesgo MAEC se almacena en maec_risk_history durante 90 días. Cada día se guarda el nivel de riesgo de cada país en una fila (país + fecha). Los registros anteriores a 90 días se eliminan automáticamente en el ciclo diario del cron maestro (fase 7c/8).
Esta ventana de 90 días permite análisis de tendencias, detección temprana de patrones y entrenamiento del modelo ML. El histórico completo no persiste para minimizar almacenamiento y alinearse con la utilidad práctica de los datos.
Además del riesgo MAEC, utilizamos estos índices internacionales para ofrecer análisis más completo:
Nivel de paz y seguridad por país (Institute for Economics & Peace)
Impacto del terrorismo en cada país
Desarrollo humano: salud, educación, nivel de vida (UNDP)
Inflación y coste de vida por país
El nivel de riesgo sanitario se calcula exclusivamente con datos de la Organización Mundial de la Salud (Global Health Observatory). Evalúa 4 indicadores por país:
Incidencia por 100.000 hab. >100 → +3, >50 → +2, >20 → +1
Prevalencia en adultos >5% → +3, >1% → +1
Cobertura infantil <70% → +2, <85% → +1
$ per cápita/año <100 → +2, <500 → +1
avgScore < 0.75
avgScore ≥ 0.75
avgScore ≥ 1.5
Validación cruzada con HDI: países con HDI < 0.6 no pueden ser "Bajo".
Recalibrado 21 May 2026: umbral "Alto" bajado de ≥2.0 a ≥1.5, gasto sanitario de $3/$6 a $100/$500.
Cada señal de OSINT (redes sociales, RSS, GDELT) lleva un tone_score que mide el tono emocional del mensaje. Este valor se conserva al clusterizar señales en incidentes y alimenta el modelo de Machine Learning.
Muy negativo: pánico, alarma, emergencia confirmada
Negativo: precaución, incidente en desarrollo
Positivo: informativo, resuelto, tranquilidad
Los valores entre −5 y +5 se consideran neutros o de tono mixto.
El motor GKG de GDELT asigna un tone automático mediante análisis de sentimiento por bolsa de palabras. Además, Groq (LLaMA 3.1 8B) clasifica semánticamente cada señal para mayor precisión.
Usamos Groq (LLaMA 3.1 8B) para clasificar semánticamente cada señal. El prompt pide explícitamente un sentimiento de −10 a +10 basado en el contenido y tono del mensaje. Groq no ve el tone_score de GDELT — su análisis es independiente.
Fuentes autoritativas (alertas oficiales de desastres) no llevan análisis de sentimiento. Su tone_score es null.
Cuando el sistema clusteriza varias señales en un incidente, calcula la media aritmética de los tone_score de todas las señales del cluster (ignorando nulls). Ese valor medio se almacena en el incidente y se muestra como badge de color en la tarjeta del incidente.
El tone_score alimenta 5 features del modelo Random Forest: avgTone7d, avgTone30d, toneTrend7d, negativeRatio7d y toneVolatility7d. Estas features permiten al modelo detectar cambios de clima informativo que preceden a cambios de riesgo. Se necesita al menos 7 días de datos de sentimiento para que estas features sean significativas.
Entrenamos un modelo Random Forest por país con 25 features que predicen la evolución del riesgo. El modelo se reentrena diariamente y sus predicciones se comparan con el modelo heurístico para detectar desviaciones.
50 (n_estimators)
8 (max_depth)
42 (random_state)
ml-random-forest
risk_score_rfPredice el score de riesgo (0–100) basado en las 25 features actualesprob_up_7d_rfProbabilidad de que el riesgo suba en los próximos 7 díasprob_up_14d_rfProbabilidad de subida de riesgo a 14 díasprob_up_30d_rfProbabilidad de subida de riesgo a 30 díasSi el modelo RF no está disponible para un país, se usa el modelo heurístico como fallback.
Riesgo
risk_level — nivel MAEC numéricorisk_score — score compuesto 0–100risk_trend_7d — tendencia 7 díasrisk_trend_30d — tendencia 30 díasÍndices globales
gpi_score — Global Peace Indexgti_score — Global Terrorism Indexhdi_score — Human Development Indexipc_score — inflaciónCoste y demanda
tci_score — Travel Cost Indextci_trend — tendencia de costedemand_index — demanda turísticaseasonality_index — estacionalidadOSINT
signal_count_7d — señales OSINT 7dincident_count_7d — incidentes 7dGeopolítica
airspace_closure_active — espacio aéreoroute_disruption_active — rutasus_risk_score — US State Deptevents_30d / high_impact_events_30dSentimiento (5)
avg_tone_7d — sentimiento medio 7davg_tone_30d — sentimiento medio 30dtone_trend_7d — tendencia de tononegative_ratio_7d — ratio negativotone_volatility_7d — volatilidadAdemás: safety_composite, cost_composite, cluster_label, model_version
Comparamos las predicciones del Random Forest contra el modelo heurístico cada día. Las métricas se publican en el panel de administración.
Diferencia media entre RF y heurístico (0–100). ~0.8 típico
Error medio en probabilidades 7/14/30d. ~0.5% típico
País donde RF y heurístico más difieren. Se monitoriza diariamente
Coeficiente de determinación. Se calcula por modelo tras cada entrenamiento
Esta web es un agregador informativo. Los niveles de riesgo son una representación de las recomendaciones oficiales del MAEC. Siempre consulta fuentes oficiales antes de viajar. No nos hacemos responsables de decisiones de viaje basadas en esta información.