proyecto · tier 1 · 2026
Vora — un agente de viajes con IA que planifica en menos de 60 segundos
Un sistema multiagente con LangGraph que convierte un solo mensaje en un itinerario completo — 8+ APIs externas, un pipeline de enriquecimiento de 1,000 videos de TikTok y más de 1,000 viajeros atendidos.
- Rol
- CEO y Fundador
- Periodo
- feb 2026 — Presente
- Visitar
- vora-planner.lat
El problema
Planificar un viaje significa combinar vuelos, alojamiento, restaurantes y actividades desde una docena de pestañas, y repetir el trabajo cada vez que el plan cambia. Joseph fundó Vora como CEO para comprimir eso en una sola conversación: decir qué se quiere y recibir un itinerario completo y listo para reservar antes de terminar de leer la primera página de resultados.
Qué construí
El backend de Vora es un servicio FastAPI frente a un StateGraph de LangGraph con 13 nodos de pipeline más 2 nodos de refinamiento para manejar cambios posteriores — clasificación de intención, extracción de preferencias, búsqueda paralela de lugares, movilidad, alojamiento y restaurantes, construcción del itinerario y enriquecimiento. Las respuestas llegan al frontend en Next.js vía Server-Sent Events, así que la interfaz muestra el progreso nodo por nodo en lugar de un spinner en blanco. Un paso de confirmación human-in-the-loop deja que el viajero corrija el rumbo antes de que el agente confirme una salida lista para reservar.
Debajo del agente en vivo hay un pipeline de datos que scrapeó y enriqueció más de 1,000 videos de viajes de TikTok con Gemini 2.5 Flash, geocodificó los resultados y los indexó en pgvector de Supabase para recomendación semántica — así las sugerencias vienen de lo que la gente realmente filmó, no solo de lo que devuelve una API.
Arquitectura
Pasa el cursor o tabula por un nodo para leer qué hace. Arriba: entrada; abajo: salida.
- Clasifica la intención del mensaje con un LLM; una guarda determinística maneja una confirmación HITL pendiente.
- Extrae destino, fechas, presupuesto y estilo de viaje como salida estructurada; combina con el estado previo.
- Genera la respuesta conversacional — exploración, una pregunta de aclaración a la vez, o un aviso de confirmación.
- Construye el resumen estructurado del plan para el widget de confirmación HITL, moneda resuelta por país.
- Procesa la confirmación del viajero y desbloquea el pipeline de búsqueda.
- Reparte la búsqueda de lugares, movilidad y alojamiento en paralelo — cerca de 3x más rápido que en secuencia.
- Busca puntos de interés en Google Places, un conjunto de unos 100 candidatos por viaje.
- Busca vuelos y rutas de transporte/auto en paralelo, con enlaces directos por aerolínea.
- Busca alojamiento en Airbnb, check-in/out calculado a partir de las fechas del viaje.
- Construye el itinerario día a día con el LLM en lotes adaptativos, enriquecido con fotos y coordenadas.
- Adjunta tours reservables de Viator a cada día, según proximidad y relevancia de categoría.
- Encuentra restaurantes de almuerzo/cena por día, según distancia, calificación y popularidad.
- Adjunta videos derivados de TikTok mediante búsqueda semántica sobre un índice de embeddings en pgvector.
- Extrae un delta estructurado del cambio solicitado y determina su alcance.
- Aplica el delta al estado, limpiando solo lo que el alcance requiere para rebuscar selectivamente.
El `StateGraph` de LangGraph de Vora — 13 nodos de pipeline (rellenos) más 2 de refinamiento (en anillo), de izquierda a derecha.
Evidencia
En vivo en vora-planner.lat. Una demo grabada muestra el flujo completo desde un solo mensaje hasta un itinerario terminado. Detalle completo del backend en docs/VORA_BACKEND_ARCHITECTURE.md.