ProfiLab
← ProyectosProducto propio

Hourgrid — el sistema para espacios que venden por horas

Platós y estudios fotográficos, salas y salas de reuniones, coworkings, locales de ensayo, consultas. Agenda, reservas, dinero, clientes y equipo en un solo sitio — y una página pública donde el cliente elige por sí mismo la hora libre.

  • Next.js 16 · TypeScript
  • Supabase · PostgreSQL · RLS
  • Stripe · suscripciones y Connect
  • Anthropic SDK · Groq
  • 3 idiomas

En cifras

5roles delimitados en la base de datos, no en la interfaz
3idiomas de la interfaz: inglés, ruso y español
16secciones de la aplicación más las páginas públicas
41tablas en la base de datos, 84 migraciones

El problema

Un espacio que vende horas se gestiona con un calendario compartido y una hoja de cálculo con las tarifas. Mientras reserva una sola persona, funciona; en cuanto son dos, dos reservas caen sobre la misma sala a la misma hora y se descubre el día del rodaje. La tarifa de tarde y las horas extra se calculan de cabeza y se olvida cobrarlas, las solicitudes se dispersan entre WhatsApp, Instagram y el correo, y el enlace a la hoja con teléfonos e importes lo ve cualquiera a quien se lo reenvíen. Aquí un error no cuesta tiempo, cuesta la sala: un solape es una jornada de rodaje cancelada.

Qué hace

Una agenda donde dos reservas no caben a la vez

Vista de día y de semana: las horas en vertical, las salas o los días en columnas, la línea del momento actual. El solape lo impide la propia base de datos, con una restricción por rango y no con una comprobación en el formulario: una segunda petición simultánea se salta esa comprobación. El margen de limpieza forma parte del tramo ocupado, una solicitud retiene la hora y una cancelación la libera.

Página pública de reserva

En la dirección propia del espacio, cualquiera sin cuenta elige sala, día y hora, ve tachado lo ocupado y deja su solicitud. El precio lo calcula el servidor según las reglas del espacio, la disponibilidad se devuelve sin nombres de clientes y hay límites de frecuencia. Dieciocho comprobaciones se hicieron desde fuera, sin sesión: qué contiene la respuesta, los rechazos por solape, el horario de apertura, el horizonte de reserva y el intento de leer las tablas directamente.

Precio según la franja horaria

55 + 55 + 90 = 200, si la tercera hora entra en tarifa de tarde: el importe se compone por tramos, no multiplicando por una única tarifa. Se calculan las horas extra con su multiplicador y su redondeo por bloques, la señal y la fianza por daños van en campos distintos, y las condiciones de cancelación se definen por escalones. La aceptación del contrato por parte del cliente se guarda como copia del texto: la discusión será sobre lo que aceptó entonces.

Captura: una foto, un documento o un audio se convierten en borrador

Se puede enviar texto, la foto de un recibo, un PDF o una nota de voz. El análisis propone borradores de cinco tipos —reserva, apunte contable, tarea, solicitud, cliente— y líneas sueltas de servicios adicionales con sus importes. El modelo no guarda nada por su cuenta: el registro lo crea una persona al pulsar, y un error de lectura cuesta un solo «descartar». El análisis corre en el servidor, así que ni minimizar la aplicación ni un corte de red lo interrumpen.

Dinero que no se puede contar dos veces

Los totales de la reserva son columnas calculadas de la base de datos, no se pueden sumar mal desde el código; lo pagado lo recalcula un trigger a partir del historial de pagos en lugar de guardarse en un campo aparte. Un apunte de ingreso no puede apuntar a una reserva: si no, un mismo cobro entraría dos veces en el mes. Listado de movimientos del mes, resumen por salas, canales y partidas, umbral de rentabilidad; los límites del mes se calculan en la zona horaria del espacio, no en UTC.

Una base de clientes que no adula

Segmentos: todos, habituales, se están perdiendo, en riesgo, duplicados. «Perdido» se mide según el ritmo del propio cliente: quien viene una vez por semana se ha perdido tras tres semanas de silencio; quien viene una vez por trimestre, no. Los duplicados se buscan por grado de parecido: teléfono coincidente, 100 %; una tilde de más o de menos, 95 %; apellidos distintos con el mismo comienzo no pasan el umbral. Sin esto, la facturación de una persona queda repartida entre dos fichas.

Cinco roles delimitados en la base de datos

Propietario, gerente, recepción, contabilidad y personal. El personal no es que «no vea» el dinero: es que el dinero no le llega. Las políticas sobre reservas, clientes y apuntes exigen el rol, y su propia agenda la recibe por una función donde las columnas de dinero no existen físicamente. Los gastos personales del propietario no los ve ni el gerente consultando directamente. Los permisos se comprobaron con peticiones reales usando tokens de cada rol, no leyendo las políticas.

Solicitudes y tiempo de primera respuesta

Las solicitudes llegan por un enlace-canal —formulario de la web, Tilda, Make, Zapier— y por el bot de Telegram propio del espacio: el bot del dueño, no uno compartido. El sistema marca el momento de la primera respuesta y lo contrasta con el objetivo fijado por el espacio. La recepción con IA sabe proponer horas libres y llevar hasta la solicitud por el mismo camino que la página pública; cada respuesta automática va marcada como automática.

Equipo, tareas y turnos

Invitación por enlace, no por correo: el token solo revela el nombre del espacio y el rol, y el enlace se acepta una única vez. Las tareas se ordenan por urgencia, el responsable mueve el estado y anota el siguiente paso. Los turnos son una cuadrícula semanal «personas × días» con la columna de nombres fijada; la tarifa se copia al turno como instantánea, de modo que subir la tarifa no recalcula los meses ya cerrados.

Pantallas

Las capturas usan datos de demostración: los nombres, importes y reservas son inventados. No vamos a enseñar la agenda de un espacio real: ahí hay clientes y dinero ajenos. La interfaz se cambia a inglés, ruso y español.

Hora, sala y cliente: la cuadrícula del día en lugar del cuaderno de recepción
Hora, sala y cliente: la cuadrícula del día en lugar del cuaderno de recepción
Un audio reenviado se convierte en borrador de reserva, con el original al lado y todo el margen para corregirlo
Un audio reenviado se convierte en borrador de reserva, con el original al lado y todo el margen para corregirlo
El mes en una sola cifra: ingresos, gastos, deudas y punto de equilibrio
El mes en una sola cifra: ingresos, gastos, deudas y punto de equilibrio
Tiempo medio de respuesta a una solicitud: el dato que antes no medía nadie
Tiempo medio de respuesta a una solicitud: el dato que antes no medía nadie
La base avisa por sí sola de quién lleva tiempo sin venir y quién está en riesgo
La base avisa por sí sola de quién lleva tiempo sin venir y quién está en riesgo
Página pública de reserva: el cliente elige él mismo la hora libre, sin llamadas ni mensajes
Página pública de reserva: el cliente elige él mismo la hora libre, sin llamadas ni mensajes

Qué sustituye

A la izquierda, cómo se lleva la agenda en la mayoría de espacios pequeños. A la derecha, lo mismo en un solo sistema.

Cómo se lleva ahora

Hoja de cálculo y chat

no cuesta nada exactamente hasta el primer solape

  • Calendario compartido y el acuerdo de «pregunta antes en el chat»
  • Tarifas de memoria; el recargo de tarde y las horas extra, a mano
  • Solicitudes en WhatsApp, Instagram y el correo, sin medir el tiempo de respuesta
  • El enlace a la hoja lo ve cualquiera a quien se lo reenvíen
  • Por la noche, todo eso se vuelve a pasar a la hoja

Hourgrid

Una suscripción

te registras tú mismo, con datos de demostración dentro y nada que configurar a mano

  • Agenda, reservas, dinero, clientes y equipo en un solo sitio
  • Página pública de reserva en la dirección del espacio
  • Precio por franja horaria, horas extra y fianza calculados por el servidor
  • Cinco roles delimitados a nivel de fila en la base de datos
  • Fotos, PDF y audios convertidos en borrador de registro

No indicamos el precio en esta página: cambia, y el vigente está siempre en la web del producto.

En qué se diferencia de una hoja de cálculo y un calendario compartido

Calendario y hoja de cálculoHourgrid
Dos personas y una salaDos recepcionistas reservan a la vez y el solape se descubre el día del rodajeEl solape lo impide una restricción de la base de datos, margen de limpieza incluido; una solicitud retiene la hora y una cancelación la libera
Precio de tarde y de fin de semanaTarifas de memoria o en una hoja; el recargo de tarde y las horas extra se calculan a mano y se olvida cobrarlosReglas de precio por franja, horas extra con multiplicador y redondeo, suplementos por servicios: el importe lo compone el servidor por tramos
Quién ve quéUna sola hoja para todos: quien tiene el enlace ve importes, teléfonos y notas sobre los clientesCinco roles con delimitación a nivel de fila en la base; al personal las columnas de dinero no le llegan, no es que se oculten con estilos
Solicitudes de la web y de los mensajerosLos mensajes se dispersan entre WhatsApp, Instagram y el correo; se responde cuando se ve y nadie mide la rapidezUn canal por enlace y un bot propio de Telegram reúnen las solicitudes en una sola lista; el tiempo de primera respuesta se registra y se contrasta con el objetivo
Registrar lo que ha pasado durante el díaPor la noche, pasar a mano a la hoja los recibos, lo acordado por chat y el «luces 100, traslado 50»Una foto, un PDF o un audio se convierten en borrador de reserva, apunte o tarea; la persona revisa el importe y confirma
Zona horaria y cambio de horaUn servicio extranjero muestra la hora del navegador; el día del cambio de hora la cuadrícula deja de coincidir con las etiquetasLa hora se guarda con su zona y se muestra en la del espacio; los días de 23 y de 25 horas están cubiertos por tests propios

No comparamos con programas concretos, sino con la forma en que se lleva la agenda en la mayoría de espacios pequeños: calendario compartido, hoja con las tarifas y conversaciones en mensajería. No damos nombres a propósito: las tarifas y las funciones cambian más rápido que esta página. Si tu programa ya hace algo de la columna derecha, escríbenos y lo corregimos. Una tabla incómoda es mejor que una tabla falsa.

Cómo va el lanzamiento

De todos nuestros productos, este es el que mejor ha arrancado. En sus tres primeros días: más de cien solicitudes y los primeros pedidos. La demanda de un sistema pensado para quien vende horas resultó más fuerte de lo que esperábamos.

Funciona entero, no a medias: la agenda que impide solapamientos, la página pública de reserva, el dinero, los clientes, el equipo y el análisis de lo que llega — todo lo descrito arriba ya está en uso.

Tecnologías

Next.js 16 y TypeScript en modo estricto del lado de la interfaz; Supabase y PostgreSQL del lado de los datos: 41 tablas y 84 migraciones. Los permisos viven ahí mismo, en la base, y no en la interfaz ni en una comprobación al entrar en la pantalla: un empleado no verá lo ajeno aunque acceda a los datos saltándose la interfaz. Los totales de las reservas y los importes pagados también los calcula la base, con columnas calculadas y triggers, para que un mismo número no se componga de dos maneras distintas en dos sitios.

Del análisis de lo enviado se ocupan dos modelos: Anthropic para texto y documentos, Groq para la transcripción de voz. El acabado es Tailwind 4 con una capa de cristal propia por encima; la interfaz está en inglés, ruso y español mediante next-intl; las suscripciones y el cobro, con Stripe y Stripe Connect; los errores los recoge Sentry. La hora se guarda siempre con su zona y se muestra en la del espacio: los días de 23 y de 25 horas están cubiertos por tests propios, porque el día del cambio de hora la cuadrícula deja de coincidir con las etiquetas justo a quien no pensó en ello.

¿Vendes el tiempo de tu local?

Estudio, sala, coworking, local de ensayo, consulta: si tu unidad de venta es la hora, mira el sistema por dentro. Te registras tú mismo, hay datos de demostración dentro y no hay nada que configurar a mano. Y si tu agenda funciona de otra manera que la de todos, cuéntanoslo y vemos qué se puede ajustar.

Rellenar el formularioAbrir gethourgrid.com
WhatsApp