Byron González
Todos los proyectos

// 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.

Concepto no oficialReact · TypeScript · Vite · TailwindPublicado desde GitHub en Vercel

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:

01

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.

02

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.

03

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.

04

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.

05

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

01

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.

02

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.

03

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í:

  1. 01Un panel para que la cooperativa edite tarifas y horarios sin tocar código.
  2. 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.
  3. 03Rastreo de encomiendas integrado, con la API del proveedor y su autorización.
  4. 04Autorización de tratamiento de datos y un canal de PQRS funcional, como exige la normativa colombiana.
  5. 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.

Hablemos