En diciembre de 2022 escribí sobre SnowTeach, nuestro primer marketplace de dos lados, y terminé ese artículo con una pregunta que sinceramente no sabía responder: si funciona, ¿hay debajo una versión más general de esta plataforma — no un marketplace específico para clases de deportes de nieve, sino para otras actividades al aire libre que se topan con el mismo problema de dos lados? Dije en su momento que no saber la respuesta era precisamente el motivo de escribirlo. Han hecho falta unos dos años y medio, y dos marcas más funcionando sobre el mismo código, para averiguarlo de verdad.
1. Qué ha cambiado desde SnowTeach
SnowTeach funcionó lo bastante bien, y nos enseñó lo suficiente sobre cómo llevar un marketplace, que la siguiente prueba natural no era "¿deberíamos construir otro?" sino "¿puede la misma plataforma sostener una marca distinta?". RocRoi fue esa prueba: actividades de aventura en España, rafting y kayak entre ellas, un deporte distinto y un cliente distinto al de las escuelas de esquí y snowboard, pero con la misma forma de dos lados reconocible debajo.
Luego llegó KayakGrandTour, y esa marca estiró el modelo mucho más de lo que lo había hecho RocRoi. No es un marketplace de una sola región como lo fueron al principio SnowTeach y RocRoi; es un catálogo nacional, multi-destino, que abarca Cantabria, León, Menorca, Valencia, Zaragoza, Lleida, Málaga y más, entre kayak, rafting, barranquismo, piragüismo, SUP, vía ferrata, triatlón, senderismo y paquetes multiaventura. Conseguir que un catálogo tan variado se comportara de forma consistente fue lo que realmente forzó la pregunta que SnowTeach solo había planteado.
Cuando llegó NaturaAdventour como tercera marca, el patrón ya era innegable: ya no estábamos construyendo marketplaces uno a uno, estábamos construyendo el mismo marketplace tres veces con ropa distinta.
2. Un solo código, tres marcas
Lo que generalizamos es un backend en Go con Ent como ORM, Directus como CMS, y un storefront y backoffice en Next.js — un único código que hoy da servicio a RocRoi, KayakGrandTour y NaturaAdventour mediante variables de entorno en lugar de tres bifurcaciones. Un solo pipeline de despliegue, un solo motor de reservas e inventario, un solo modelo de catálogo. Lo que cambia por marca es la configuración: identidad de marca, dominio, textos y presentación del storefront, no la lógica subyacente.
Este es el beneficio aburrido y poco glamuroso de generalizar tarde en lugar de pronto. Si hubiéramos intentado diseñar un "marketplace genérico de aventura al aire libre" desde el primer commit de SnowTeach, habríamos estado adivinando requisitos que RocRoi y KayakGrandTour todavía no nos habían enseñado.
3. Un "un núcleo, muchas caras" distinto al de Lueira
Ya he escrito antes sobre por qué Lueira, nuestra plataforma de reservas para escuelas deportivas, se diseñó multi-tenant desde el primer día. Es el mismo instinto en juego aquí — un núcleo que sirve a muchos — pero el eje de variación es genuinamente distinto.
Los tenants de Lueira son negocios distintos: una escuela de esquí en el Pirineo y un centro de buceo en Canarias, que comparten infraestructura y back office, pero que nunca ven los datos del otro ni compiten por el mismo cliente. El aislamiento es todo el objetivo.
RocRoi, KayakGrandTour y NaturaAdventour no son negocios separados en ese sentido — son un solo negocio con tres escaparates distintos, y esos escaparates sí pueden competir de verdad por la misma persona. Alguien buscando una excursión en kayak en España podría acabar en RocRoi o en KayakGrandTour. Eso significa que la marca, el SEO y el contenido de cada marca no pueden ser un simple cambio de piel cosmético — cada marca necesita su propia voz, su propio posicionamiento, su propia huella de búsqueda, o se canibaliza a sí misma en lugar de sumar alcance. Lo difícil no es compartir la lógica de reservas e inventario; lo difícil es hacer que tres marcas que comparten columna vertebral parezcan y se lean como si no la compartieran.
4. Qué viene: una capa de IA en el núcleo compartido
El repositorio central sobre el que corren las tres marcas ha empezado a hacer crecer una capa que ninguna tenía en la etapa de SnowTeach: un servicio de IA basado en Mastra que genera SEO y descripciones de producto y se encarga de las traducciones, combinando Claude Sonnet, Claude Haiku y GPT-5-mini según la tarea. Junto a él hay un servidor MCP de catálogo que expone widgets interactivos de tipo "MCP App" — tarjetas de producto, un calendario de disponibilidad — pensados para renderizarse dentro de un cliente compatible con MCP como Claude o ChatGPT. Ya he escrito en otro sitio sobre por qué en Maladeta construimos servidores MCP para casi todo, así que no repetiré ese argumento aquí.
Nada de esto era el plan cuando lanzamos SnowTeach. La pregunta con la que terminé aquel artículo se quedó sin respuesta durante dos años y medio, y no se respondió sentándonos a diseñar una plataforma genérica — se respondió llevando una segunda marca, luego una tercera, y dándonos cuenta de cuánto código no necesitaba cambiar para hacerlo.
