// De Occidente
Un buscador de rutas que sí encuentra tu ruta
Rediseño conceptual del sitio de una cooperativa de transporte de pasajeros en el Valle del Cauca. Menos plataformas que mantener, un servicio principal que se entiende a la primera y una infraestructura mucho más simple: de un WordPress con 9 plugins a un sitio estático, sin servidor propio, sin base de datos y sin APIs de IA.
114 → 22
solicitudes para cargar la portada, sitio actual frente al concepto
185
rutas y 46 poblaciones, con tarifas, paradas intermedias y trasbordos
0
servidores y bases de datos que mantener
1
sola fuente de datos: rutas, horarios y oficinas alimentan todas las pantallas
// contexto
El punto de partida
La Cooperativa de Transportadores de Occidente conecta unas 46 poblaciones del Valle del Cauca y el Eje Cafetero. Al revisar su sitio actual (octubre de 2026) encontré lo siguiente:
El servicio principal es difícil de consultar. Para saber cuánto cuesta un viaje hay que escribir el origen en una caja de texto y abrir una página por ruta (101 páginas, cada una se edita por separado). No se puede elegir origen y destino, ni saber qué hacer cuando no hay ruta directa.
Dos plataformas que mantener. El blog tiene su última entrada en agosto de 2022, mientras las redes sociales se actualizan con frecuencia. Mantener el mismo contenido en dos lugares es costoso, y el sitio es el que se queda atrás.
Problemas visuales. En el pie de página, el logotipo, el sello de Supertransporte y el crédito del desarrollador no cargan, y en la página de contacto el navegador registra al menos 6 recursos con error.
Infraestructura pesada. WordPress con un tema basado en Divi y 9 plugins. Cargar la portada requiere 114 solicitudes y 67 scripts. Cada plugin es algo que actualizar y vigilar.
El formulario de contacto se queda en «cargando» al enviar, sin confirmar el envío ni mostrar un error.
// problema → solución
Problemas que resolví
Lo que encontréDos plataformas que mantener. El blog no se actualiza desde 2022; las redes sí.
Reemplacé el blog por una sección «Lo último en nuestras redes» con las publicaciones de Facebook en vivo: se actualiza sola cuando la cooperativa publica, sin que nadie edite el sitio.
Lo que encontréImágenes que no cargan, íconos sueltos y un estilo anticuado.
Diseño limpio y moderno. Todas las imágenes referenciadas existen y cargan; fotos y videos optimizados.
Lo que encontréWordPress, 9 plugins, 114 solicitudes y 67 scripts para la portada.
Sitio estático: 22 solicitudes y 1 script. Sin base de datos ni plugins que actualizar; se publica desde GitHub en Vercel en minutos.
Lo que encontréTarifas repartidas en 101 páginas que se editan una por una.
Una sola fuente de datos. Se cambia una tarifa y se actualiza en el buscador, las tablas, las tarjetas «desde», el mapa y el asistente.
Lo que encontréEl servicio principal, viajar, era lo más difícil de consultar.
Buscador de origen y destino que solo ofrece lugares alcanzables, mapa interactivo de la red y calculador de tarifa con trasbordos.
Lo que encontréTeléfonos y oficinas dispersos.
Directorio de 20 puntos de atención con búsqueda y filtros, contrastado con las historias «Oficinas» de su Instagram.
Lo que encontréFormulario que se queda «cargando» al enviar.
Formulario funcional, con confirmación al enviar.
// lo construido
Lo que construí
Un buscador que piensa como el pasajero
- Al elegir el origen, el destino solo ofrece lugares alcanzables, separados en «ruta directa» y «con trasbordo».
- Tolera tildes y errores de escritura: «tulua», «la union», «roldanilo» funcionan.
- Las rutas de tres paradas se tratan como una sola ruta que sirve a su parada intermedia.
- Cada búsqueda queda en el enlace, para compartirla.
Un mapa de la red y tarifas con trasbordo
Se toca una ciudad y se resaltan los lugares a los que se llega directo y los que requieren trasbordo. Si no hay ruta directa, el motor calcula la mejor combinación (hasta dos trasbordos) y suma las tarifas.
Un asistente de rutas, sin IA generativa
Un chat que corre completo en el navegador. Reconoce ciudades dentro de una frase, recuerda el contexto («¿y de regreso?») y responde rutas, precios, horarios y teléfonos de oficinas. Cuando no entiende, ofrece botones con sugerencias en vez de inventar.
Horarios que se pueden consultar
Transcribí 19 bloques de horario de las historias de Instagram de la cooperativa, y la ficha de cada ruta muestra la «próxima salida» según la hora de Colombia.
Rendimiento y detalle
Frente al sitio actual, la portada del concepto pasa de 114 a 22 solicitudes, de 67 scripts a 1, de 101 páginas de tarifas a una sola fuente de datos y de 9 plugins a ninguno. Mi primera versión del rediseño pesaba 58 MB en imágenes y videos; hoy pesa 4 MB. Las animaciones de entrada respetan la opción «reducir movimiento».
// criterio
Las decisiones que más importan
Reglas en lugar de un modelo de lenguaje
El universo es pequeño y cada pregunta tiene una única respuesta correcta. Un modelo habría agregado costo por consulta, latencia y el riesgo de inventar un precio. Con reglas, la respuesta es la misma cada vez, funciona sin conexión a ninguna API y no cuesta por uso. No todo problema pide IA, y saber cuándo no usarla es parte del trabajo.
Honestidad con los datos
Reconcilié mi levantamiento de precios con las páginas públicas: 74 rutas tenían tarifas distintas y encontré errores como un municipio mal escrito y una ruta con dos precios contradictorios. De las 185 rutas, 99 están confirmadas con el sitio oficial y 86 no. La interfaz lo dice: «Precio por confirmar en taquilla». Prefiero un sitio que admite lo que no sabe a uno que aparenta certeza.
Infraestructura simple
Un WordPress necesita un servidor con PHP y base de datos, y vive de actualizar plugins y tema. Un sitio estático son archivos: se publican desde GitHub en Vercel y no hay nada que parchar. Además, el motor de rutas es independiente de la interfaz, así que el mismo código podría alimentar mañana un bot de WhatsApp o una app.
// siguiente paso
Lo que haría con acceso real
Este concepto se construyó con información pública. Con la cooperativa como cliente, seguiría por aquí:
- 01Un panel para que la cooperativa edite tarifas y horarios sin tocar código.
- 02SEO de verdad: pre-renderizar cada ruta como su propia página («bus Cali Cartago precio»), con título, descripción e imagen para compartir.
- 03Rastreo de encomiendas integrado, con la API del proveedor y su autorización.
- 04Autorización de tratamiento de datos y un canal de PQRS funcional, como exige la normativa colombiana.
- 05El mismo asistente por WhatsApp, reutilizando el motor de rutas.
Stack
React 18, TypeScript, Vite, Tailwind CSS, Motion. Código en GitHub, publicado en Vercel. El formulario de contacto usa EmailJS.
Aviso
Este proyecto es un concepto de rediseño que hice por iniciativa propia. No es el sitio oficial ni tiene vínculo con la Cooperativa de Transportadores de Occidente; sus marcas y contenidos pertenecen a sus dueños. La información sale de sus páginas y redes públicas. El formulario de contacto funciona, pero el mensaje me llega a mí, no a la cooperativa.
¿Tus clientes buscan información que ya está en tus propios datos?
Cuéntame tu caso y te propongo cómo resolverlo.