Red Moon
Volver a proyectos

Hospitality RMS, revenue management para hoteles independientes

Un sistema que prevé la demanda y recomienda precios y restricciones de estancia, conectado a seis PMS y dos channel managers.

Sector
Hostelería
Encargo
Producto propio
Mi papel
Diseño de producto, arquitectura y desarrollo
Duración
En producción desde marzo de 2026
Stack
NestJS, Python, FastAPI, LightGBM, PostgreSQL, TimescaleDB, Redis, Next.js, Docker, Hetzner

El problema

Los hoteles independientes y los aparthoteles de 30 a 150 unidades suelen fijar precios con una hoja de cálculo y la intuición de quien lleva las reservas. Las herramientas de revenue management del mercado están pensadas para cadenas y cuestan en proporción.

Qué decidí

  • El sistema recomienda y la persona decide. Cada precio o restricción propuesta (estancia mínima, cierre a la llegada) se aprueba, se ajusta o se rechaza. Mientras el hotel aprende a confiar en el sistema, eso importa más que automatizarlo todo.
  • Un modelo de datos común y un adaptador por PMS. Conectar un PMS nuevo no obliga a tocar el motor de previsión.
  • Un servidor por cliente, para que los datos de cada hotel queden aislados.

Qué construí

  • Adaptadores para Sihot (XML), Apaleo (OAuth2), Noray sobre Business Central (OData), Amenitiz, Cloudbeds y Mews, y para los channel managers Channex y SiteMinder. Las credenciales se guardan cifradas.
  • Un motor de previsión en Python con LightGBM, calibración de la incertidumbre y una explicación legible de cada recomendación.
  • Comparación con los precios de la competencia, simulación de overbooking y un banco de pruebas que reproduce temporadas pasadas para validar cada cambio del motor.
  • Panel en Next.js, backend en NestJS con PostgreSQL y TimescaleDB, y despliegue con GitHub Actions.

Resultado

Funciona en producción en un aparthotel desde marzo de 2026. Sobre unas 36.000 reservas reales, el error absoluto medio de la previsión es de 1,62 unidades.

Cuéntame tu proyecto

Una llamada de 30 minutos, sin compromiso. Si no encajo en lo que necesitas, te lo digo.