Documento de Requisitos del Producto
Fuente de verdad derivada del código del producto actual. Última actualización: 25 de mayo de 2026.
Cambios recientes (2026-05-25)
- Notificaciones push añadidas como canal preferido. Las instalaciones de la app móvil registran un token de Expo Push al iniciar sesión; el despachador ahora intenta push primero y, si no hay token, recurre a la cascada existente de WhatsApp → correo. Los destinatarios sin la app (o que aún no han iniciado sesión — por ejemplo, el envío de magic-link al primer pago) siguen recibiendo WhatsApp / correo exactamente como antes. Los recibos se consultan cada 15 min para que el estado de entrega refleje lo que WhatsApp muestra hoy. Los tokens caducos (cierre de sesión en otro dispositivo, desinstalación de la app) se revocan automáticamente. Ver Notificaciones.
- La aplicación móvil está disponible. Una app complementaria en Expo (iOS / Android) se distribuye junto con la web y está disponible para maestras, estudiantes y superusuarios. Se conecta al mismo backend mediante los endpoints
/api/mobile/*, por lo que el inicio de sesión, los paquetes, las reservas, los pagos y la administración funcionan igual en ambas superficies. Ver Superficies. La app web sigue siendo la superficie canónica — los enlaces de reservas (agendaprofe.com/b/<slug>) se comparten y se abren como URLs web.
Cambios recientes (2026-05-07)
- Las notificaciones por WhatsApp están activas. Las 11 plantillas fueron aprobadas por Meta en
es_MXy enen. Los mensajes ahora fluyen por WhatsApp como canal principal; el correo electrónico sigue activo como alternativa para estudiantes sin consentimiento de WhatsApp o sin número de teléfono registrado. - Se realizó una prueba de extremo a extremo del proceso de incorporación de Ana Laura (zona horaria → disponibilidad → paquetes → vista previa del enlace de reservas → reserva de prueba → confirmación de WhatsApp recibida). Su enlace de reservas está activo.
Cambios recientes (2026-05-04)
- Se agregó Wise como método de pago alterno además de Stripe. La maestra puede activar Wise desde
/settings/payments(Wisetag, nombre del titular, correo opcional), establecer un precio Wise por paquete distinto al de Stripe, y confirmar la recepción manualmente desde el detalle del pago. El estudiante elige Stripe o Wise al pagar. Ver Métodos de pago y Flujo 2 — Un estudiante compra un paquete. - Se incorporó un panel de administración para superusuarios dentro del producto (
/admin). Ver Capacidades de administración. - Se aclaró que al cobrar un paquete, los fondos se acreditan (no "se cobran") a la cuenta de Stripe conectada de la maestra — destino del cargo de Stripe.
- Los materiales de clase con envío programado a "24 h antes" o "1 h antes" ahora se envían de inmediato si en el momento de adjuntarlos el horario de envío ya pasó.
- Se exige explícitamente que los reagendados caigan dentro de la vigencia del paquete — una clase de un paquete no puede reagendarse más allá de la fecha de vencimiento de ese paquete.
- La moneda se está adaptando para aceptar potencialmente cualquier moneda de Latinoamérica en futuros despliegues; hoy el sistema almacena y muestra pesos mexicanos.
- Las notificaciones se envían en inglés cuando la configuración regional del destinatario es inglés, independientemente del estado de aprobación de las plantillas de WhatsApp; el correo cubre la diferencia hasta que las plantillas estén aprobadas.
Descripción general del producto
AgendaProfe es una plataforma de reservas y pagos para maestras de español independientes en México y los estudiantes que toman clases con ellas.
Resuelve tres problemas operativos que una maestra independiente normalmente gestiona a mano:
- Vender paquetes de clases — los estudiantes pagan por adelantado un conjunto de clases (por ejemplo, "8 clases de 60 minutos") en lugar de pagar clase por clase. El pago puede ser con tarjeta (vía Stripe) o por transferencia Wise; la maestra puede activar uno u otro o ambos.
- Permitir que los estudiantes reserven sus propios horarios — sin mensajes de ida y vuelta por WhatsApp para encontrar un momento disponible.
- Enviar confirmaciones y recordatorios automáticos — primero por WhatsApp, con correo electrónico como alternativa.
Las maestras pueden registrarse directamente desde la app web en agendaprofe.com o desde la app móvil. Los estudiantes pueden usar el producto libremente: llegan a través del enlace de reservas público de su maestra.
El dominio de la marca es agendaprofe.com. La interfaz es bilingüe (español de México e inglés), con español como idioma predeterminado.
Superficies
El producto se entrega a través de dos clientes que comparten un solo backend, una sola base de datos y el mismo conjunto de funciones:
- App web (
apps/web) — Next.js, alojada enagendaprofe.com. Es la superficie principal y canónica. Los enlaces públicos de reservas (agendaprofe.com/b/<slug>) son siempre URLs web; los estudiantes los abren en un navegador. - App móvil (
apps/mobile) — Expo / React Native, distribuida para iOS y Android. Disponible para los tres tipos de usuario (maestra, estudiante, superusuario). Se comunica con el backend web mediante endpoints REST/api/mobile/*; la autenticación usa tokens de acceso de Supabase enviados en el headerAuthorizationen lugar de cookies.
Los tipos del contrato se comparten a través del paquete del monorepo @agendaprofe/shared, lo que evita que los dos clientes diverjan en el contrato del API.
Las rutas mencionadas en este documento (por ejemplo /admin, /mis-clases, /settings/payments, /onboarding/...) son rutas web usadas aquí como anclas de las funciones. La app móvil expone las mismas funciones como pantallas equivalentes. Cuando las dos superficies se comportan de forma diferente, la diferencia se explica en el mismo apartado; todo lo demás aplica a ambas.
Tipos de usuario
El producto tiene dos tipos distintos de usuarios:
1. Maestra
- Una maestra de español independiente que administra su propio negocio.
- Después de iniciar sesión, completa una configuración inicial única (zona horaria, disponibilidad semanal, paquetes de clases, vista previa de su enlace público) antes de poder recibir reservas.
- Conecta una cuenta de Stripe, configura Wise, o ambos para que los estudiantes puedan pagarle directamente.
2. Estudiante (Alumna/Alumno)
- Un estudiante que toma clases con una maestra específica.
- Llega a la plataforma a través del enlace de reservas público de la maestra (por ejemplo,
agendaprofe.com/b/<nombre-maestra>). - Puede comprar un paquete sin tener una cuenta; la cuenta (acceso por enlace mágico enviado por correo) se crea automáticamente la primera vez que paga.
- Puede usar el producto sin WhatsApp, pero debe dar su consentimiento explícito antes de recibir mensajes por ese canal.
3. Superusuario (administrador)
- Un operador de la plataforma (equipo de AgendaProfe).
- Accede al panel de administración del producto en
/admindespués de iniciar sesión. - Acceso restringido por la variable de entorno
SUPERUSER_EMAILSy una lista incorporada en el código. No expuesto a maestras ni estudiantes.
Funcionalidades principales
Para la maestra
Asistente de configuración inicial — un proceso de cuatro pasos que la maestra debe completar antes de que su enlace de reservas esté activo.
- Elegir su zona horaria.
- Definir su disponibilidad semanal (qué días y horarios da clases), más un tiempo de descanso entre clases, un tiempo mínimo de anticipación para reservar y un límite máximo de reserva a futuro.
- Elegir qué paquetes de clases ofrecer (número de clases, duración, precio, vigencia). Cada paquete tiene un precio Stripe y un precio Wise opcional; si el precio Wise se deja vacío, hereda el precio Stripe.
- Vista previa de su enlace de reservas público y activación.
Panel principal — la pantalla de inicio de la maestra, con sus próximas clases y accesos directos a sus vistas principales.
Lista de clases — todas sus reservas, con estado (programada, completada, cancelada, no asistió, reagendada). Puede abrir cualquier clase para tomar acción.
Detalle de clase — para cada clase puede:
- Marcarla como completada.
- Marcarla como no asistió.
- Restaurar una clase cancelada o marcada como no asistió (por ejemplo, si cambió de opinión).
- Perdonar una cancelación tardía (tratarla como si ella la hubiera cancelado, para que al estudiante no se le descuente una clase).
- Adjuntar materiales de clase (un archivo o un enlace) y elegir cuándo enviarlos: al confirmar la reserva, 5 días antes de la clase, 24 horas antes o 1 hora antes.
Lista de estudiantes — todos los estudiantes que alguna vez le han comprado, con su historial de paquetes.
Detalle de estudiante — abre el historial de un estudiante; desde aquí puede:
- Establecer un precio personalizado para ese estudiante (un precio especial que reemplaza el precio público del paquete en futuras compras).
- Extender la fecha de vencimiento de uno de los paquetes del estudiante.
Lista y detalle de pagos — todos los pagos recibidos, en los dos rieles (Stripe y Wise). El detalle muestra el riel (Stripe / Wise), el monto y los identificadores específicos del riel (Stripe PaymentIntent o referencia Wise). Los pagos por Stripe pueden reembolsarse con un solo botón (no se admiten reembolsos parciales). Los pagos por Wise no muestran un botón de reembolso — las devoluciones por Wise se hacen fuera de la plataforma desde la propia app de Wise de la maestra; la plataforma solo registra el pago original.
Para los pagos Wise pendientes, el detalle también muestra dos botones: "Marcar como recibido" (la maestra confirma que recibió la transferencia; el sistema marca el pago como pagado, activa el paquete y avisa al estudiante por correo/WhatsApp) y "Marcar como no recibido" (la maestra cierra el registro cuando el estudiante nunca completó el pago; el paquete queda cerrado y el registro deja de aparecer como pendiente).
Ajustes
- Disponibilidad — editar el horario semanal definido durante la configuración inicial.
- Fechas bloqueadas — bloquear rangos de fechas (vacaciones, festivos, días libres) para que los estudiantes no puedan reservar en esos días.
- Pagos — conectar o reconectar su cuenta de Stripe y/o configurar Wise (activar, Wisetag/handle, nombre del titular, correo Wise opcional).
- Notificaciones — ver qué mensajes automáticos están aprobados y disponibles en cada idioma.
Cambio de idioma — cambiar la interfaz entre español de México e inglés en cualquier momento.
"Reportar un problema" — un enlace de correo electrónico de un clic al soporte.
Para el estudiante
Página de reservas pública (/b/<nombre-maestra>) — el enlace público de la maestra, donde el estudiante ingresa su correo para comenzar.
Compra de paquete — elige un paquete, ingresa su nombre, correo y (opcionalmente) su número de WhatsApp con consentimiento explícito, y luego elige un método de pago:
- Tarjeta (Stripe). Se le redirige al proceso de pago de Stripe; el pago se confirma al instante.
- Transferencia Wise. Se le redirige a una página de instrucciones que muestra el enlace
wise.com/pay/<handle>?amount=...¤cy=MXNya prellenado, una referencia única copiable (por ejemplo,AGP-1A2B3C4D) y el nombre del titular de la cuenta. El estudiante hace la transferencia desde su app de Wise y luego hace clic en "Ya envié el pago". El paquete se activa una vez que la maestra confirma la recepción desde su lado.
Cuando ambos métodos están activos, la página de pago muestra un selector con los precios de Stripe y Wise en vivo, para que el estudiante vea cualquier diferencia y los ahorros que la maestra haya decidido trasladar. Cuando solo un método está activo, no se muestra selector.
Acceso por enlace mágico — tras confirmarse el pago, llega un correo con un enlace que permite al estudiante acceder a su portal. El mismo enlace se usa para iniciar sesión posteriormente.
Portal del estudiante (/mis-clases) — la pantalla de inicio del estudiante, con:
- Paquetes activos (cuántas clases le quedan y cuándo vence cada uno).
- Próximas clases.
- Historial de clases.
Reserva de horario — elige un horario disponible en el calendario de la maestra y reserva una clase. Cada reserva descuenta una clase del paquete activo.
Detalle de clase — para una clase individual el estudiante puede:
- Ver los materiales de clase que adjuntó la maestra (cuando ya pasó el tiempo de envío programado).
- Reagendar la clase a otro horario disponible (sujeto a las reglas detalladas más adelante).
- Cancelar la clase.
Detener notificaciones — cancelar la suscripción a mensajes de WhatsApp en cualquier momento mediante un enlace en el pie de cualquier mensaje.
Flujos de usuario
Flujo 1 — La maestra comienza a usar la plataforma
- Visita
agendaprofe.com, hace clic en "Crear cuenta" y se registra con su nombre, correo y contraseña. - Confirma su correo mediante el enlace que Supabase envía.
- Completa la configuración inicial: zona horaria → horario semanal → paquetes → vista previa. Al definir paquetes establece un precio Stripe para cada uno y (opcionalmente) un precio Wise distinto.
- Desde Ajustes → Pagos conecta su cuenta de Stripe y/o activa Wise (Wisetag, nombre del titular, correo opcional). Se requiere al menos un riel para que el enlace de reservas pueda recibir pagos.
- Una vez que al menos un riel está configurado y la configuración inicial está completa, su enlace de reservas queda activo.
Flujo 2 — Un estudiante compra un paquete y toma su primera clase
- La maestra comparte su enlace de reservas con el estudiante.
- El estudiante lo abre, elige un paquete, ingresa su nombre, correo y (opcionalmente) WhatsApp, y elige un método de pago (Stripe o Wise — cuando solo uno está activo la elección es implícita).
- Camino Stripe. Paga con tarjeta en el proceso de pago de Stripe. El sistema marca el paquete como activo, acredita los fondos a la cuenta de Stripe conectada de la maestra (cargo de destino de Stripe — al estudiante se le cobra y a la maestra se le acredita) y envía una confirmación de pago.
- Camino Wise. Llega a la página de instrucciones de Wise, abre Wise (o su banco para SPEI), envía el monto mostrado al Wisetag de la maestra usando la referencia única que aparece, y hace clic en "Ya envié el pago". El pago queda pendiente hasta que la maestra revisa su app de Wise y hace clic en "Marcar como recibido" desde el detalle del pago en la plataforma. Cuando lo hace, el sistema marca el paquete como activo y envía la confirmación de pago. Si pasan 14 días sin confirmación, el registro abandonado se limpia automáticamente.
- El estudiante recibe un correo con enlace mágico; al hacer clic accede al portal.
- Abre "Reservar una clase", elige un horario libre en el calendario de la maestra y confirma.
- El sistema envía una confirmación de reserva, luego un recordatorio 24 horas antes de la clase y otro 1 hora antes.
- Tras la hora de inicio de la clase, el sistema la marca como completada automáticamente.
Flujo 3 — Un estudiante necesita reagendar
- Desde el portal, el estudiante abre la clase.
- Hace clic en "Reagendar".
- Elige un horario diferente disponible.
- El sistema actualiza la clase y envía una confirmación de reagendado.
Flujo 4 — Un estudiante cancela con menos de 24 horas de anticipación
- El estudiante abre la clase y la cancela.
- La clase queda marcada como cancelada y se descuenta una clase del paquete (la maestra conserva esa clase como compensación por el aviso tardío).
- Se notifica al estudiante.
Flujo 5 — Un estudiante cancela con 24 horas o más de anticipación
- El estudiante abre la clase y la cancela.
- La clase queda marcada como cancelada. No se descuenta ninguna clase.
- Se le ofrece al estudiante la opción de reagendar en el mensaje de cancelación.
Flujo 6 — La maestra perdona una cancelación tardía
- La maestra abre la clase en su panel.
- Hace clic en "Perdonar cancelación".
- La clase cambia a "cancelada por la maestra" y la clase descontada se devuelve al paquete del estudiante.
Flujo 7 — Los materiales de clase llegan al estudiante
- La maestra sube un archivo o guarda un enlace desde el detalle de la clase, eligiendo uno de cuatro momentos de envío: al confirmar, 5 días antes, 24 horas antes o 1 hora antes.
- El sistema entrega los materiales en el momento elegido. Si el momento de envío elegido ya pasó cuando se adjuntan (por ejemplo, eligió "enviar 24 h antes" pero adjuntó el archivo cuando faltan solo 6 h), el sistema los entrega de inmediato para que el estudiante los reciba igualmente.
Reglas de negocio
Autenticación y acceso
- Las maestras se registran directamente en
agendaprofe.comcon correo y contraseña. - Los estudiantes acceden mediante enlace mágico por correo — sin contraseña.
- Una maestra no puede recibir reservas hasta que haya completado la configuración inicial y tenga al menos un riel de pago configurado (Stripe Connect verificado, Wise activo con un Wisetag, o ambos).
- El acceso de superusuario a
/adminse controla mediante la variable de entornoSUPERUSER_EMAILSy una lista incorporada en el código. Los usuarios que no son superusuarios y acceden a/adminson redirigidos a la página pública.
Paquetes y precios
- Los paquetes tienen un número fijo de clases, una duración fija, un precio fijo y una vigencia medida en meses desde la fecha de compra.
- Hoy los precios se almacenan y muestran en pesos mexicanos (MXN). El sistema se está adaptando para aceptar potencialmente cualquier moneda de Latinoamérica (MXN, COP, ARS, CLP, PEN, etc.) para que despliegues futuros puedan atender maestras fuera de México sin cambios en el código.
- Cada paquete tiene dos precios configurables: un precio Stripe (cuando el estudiante paga con tarjeta) y un precio Wise opcional (cuando paga por transferencia Wise). El precio Wise es independiente del Stripe, así la maestra puede trasladar el ahorro de comisiones, cobrar lo mismo en ambos rieles, o cobrar más en Wise. Si el precio Wise se deja vacío, hereda el de Stripe.
- La maestra puede establecer un precio personalizado para un estudiante específico — ese precio se usará en su próxima compra en cualquiera de los rieles.
- Un paquete está activo una vez recibido el pago; queda vencido al pasar la fecha de vigencia; queda reembolsado si la maestra emite un reembolso.
- Las clases deben tomarse dentro de la vigencia del paquete. Los estudiantes no pueden reservar ni reagendar a un horario que caiga después de la fecha de vencimiento del paquete.
Métodos de pago
El producto admite dos rieles. La maestra puede activar uno u otro o ambos.
- Stripe (tarjeta). El estudiante paga con tarjeta en el proceso de pago de Stripe; los fondos se acreditan a la cuenta conectada de la maestra en tiempo real mediante cargos de destino de Stripe. La confirmación es automática vía webhooks de Stripe.
- Wise (transferencia). Al estudiante se le envía a un enlace
wise.com/pay/<handle>ya prellenado con el monto y la moneda en la URL, más una referencia única emitida por la plataforma (por ejemplo,AGP-1A2B3C4D) que pega en Wise para que la maestra pueda reconocer la transferencia. La confirmación es manual: la maestra revisa su app de Wise y hace clic en "Marcar como recibido" desde el detalle del pago, lo que activa el paquete y envía al estudiante las mismas notificaciones que un pago Stripe enviaría. Un registro Wise pendiente que nunca se confirma se limpia automáticamente 14 días después de su creación.
La página de pago del estudiante muestra un selector de método cuando ambos rieles están activos, con el precio de cada método visible en vivo para que el estudiante pueda ver cualquier diferencia antes de confirmar.
Reservas y disponibilidad
- Los estudiantes solo pueden reservar dentro de los horarios de disponibilidad semanal de la maestra.
- Los estudiantes no pueden reservar en fechas bloqueadas por la maestra.
- La maestra controla un tiempo mínimo de anticipación (con cuánta anticipación pueden reservar los estudiantes) y un límite máximo a futuro (con cuánta anticipación máxima pueden reservar).
- La maestra controla un tiempo de descanso entre clases consecutivas.
- Cada reserva consume una clase del paquete activo del estudiante.
Cancelaciones y reagendados
- Regla de las 24 horas para cancelaciones iniciadas por el estudiante:
- Cancelar con menos de 24 horas de anticipación → la clase se descuenta (se pierde).
- Cancelar con 24 horas o más de anticipación → no se descuenta ninguna clase; se ofrece reagendar.
- Una clase cancelada puede ser restaurada por la maestra (la clase descontada, si la hubo, se devuelve).
- Una clase puede reagendarse a cualquier horario disponible dentro de la disponibilidad de la maestra y la vigencia del paquete. Una clase de un paquete no puede reagendarse más allá de la fecha de vencimiento de ese paquete — el sistema rechaza el reagendado.
- Al reagendar se conserva el vínculo con la clase original para el historial.
Reembolsos
- Solo se permiten reembolsos totales (no reembolsos parciales).
- Un reembolso marca el paquete como reembolsado; las clases ya tomadas de ese paquete permanecen en el historial del estudiante.
- Solo la maestra puede iniciar un reembolso.
- Pagos por Stripe se reembolsan con un solo clic desde el detalle del pago; Stripe retira los fondos automáticamente.
- Pagos por Wise se reembolsan fuera de la plataforma — la maestra devuelve el dinero desde su propia app de Wise o por SPEI. La plataforma no muestra un botón de reembolso para registros Wise; esto se alinea con la API pública de Wise (no expone un endpoint de reembolso).
Notificaciones
El producto envía notificaciones mediante una cascada de tres canales: primero push, luego WhatsApp, finalmente correo. El despachador elige el canal de mayor prioridad por el que se puede contactar al destinatario; el canal escogido queda registrado en cada notificación.
- Push (Expo) es preferido siempre que el destinatario tenga al menos un token de dispositivo activo registrado. Las instalaciones de la app móvil registran un token automáticamente al iniciar sesión y lo revocan al cerrarla; el despachador también revoca los tokens que Expo reporta como
DeviceNotRegistered. Tanto maestras como estudiantes pueden recibir push. La entrega se confirma consultando los recibos de Expo cada 15 min. Si todos los tokens del fan-out son rechazados (por ejemplo, la app fue desinstalada), el despachador cae a WhatsApp en el mismo intento. - WhatsApp (Meta) es la segunda opción. Aplica bajo las mismas reglas previas a push:
- el estudiante consintió WhatsApp, y
- el estudiante tiene número telefónico registrado, y
- la plantilla requerida para esa notificación está aprobada por WhatsApp en el idioma del estudiante.
- Correo electrónico es la alternativa terminal. Se usa cuando ni push ni WhatsApp están disponibles, o cuando el estudiante silenció WhatsApp.
- Los estudiantes pueden cancelar su suscripción a WhatsApp en cualquier momento mediante un enlace en cualquier mensaje; eso cambia la decisión de canal hacia adelante (push seguirá funcionando si tienen la app instalada).
- Las notificaciones previas a la cuenta (
magic_link,payment_received) llegan al estudiante antes de que pueda tener la app instalada, así que en la práctica siempre caen a WhatsApp o correo. El despachador no las trata como caso especial — la alternativa ocurre naturalmente porque aún no existe ningún token de dispositivo. - El texto de las notificaciones se envía en inglés cuando la configuración regional del destinatario es inglés. El español (
es-MX) es el idioma por defecto para estudiantes en México. Tanto los mensajes push como los de WhatsApp se renderizan en el idioma del destinatario; WhatsApp además requiere la aprobación de Meta de la plantilla correspondiente para poder enviar.
Privacidad
- El producto se rige bajo la Ley Federal de Protección de Datos Personales en Posesión de los Particulares (LFPDPPP) de México.
- Los registros de estudiantes se anonimizan 24 meses después de su última clase.
- Los estudiantes pueden solicitar la eliminación inmediata de su cuenta enviando un correo al soporte de privacidad; la plataforma responde en un plazo máximo de 20 días hábiles.
- Los números de tarjeta nunca se almacenan en la plataforma; los datos de pago residen en Stripe.
Historial de acciones
Cada acción de ajuste que realiza la maestra (marcar como completada, marcar como no asistió, restaurar, perdonar cancelación, extender vigencia, establecer precio personalizado, reembolso) queda registrada con el motivo indicado por la maestra, los valores antes y después, y una marca de tiempo.
Integraciones externas
El producto depende de siete servicios externos. Cada uno cuenta con un modo de desarrollo para que las pruebas locales funcionen sin credenciales reales.
| Servicio | Para qué se usa |
|---|---|
| Stripe | Procesar los pagos de los estudiantes con tarjeta. Cada maestra conecta su propia cuenta de Stripe; los fondos van directamente a ella. La plataforma no cobra ninguna comisión adicional a la tarifa de procesamiento de Stripe. |
| Wise | Recibir transferencias directas de los estudiantes. La plataforma envía al estudiante a una URL wise.com/pay/<handle> ya prellenada con una referencia única. La plataforma no llama a la API de Wise en la instalación predeterminada — la confirmación la hace la maestra desde el detalle del pago. El modelo de datos está preparado para que en el futuro pueda agregarse una conciliación automática vía la API de balance-statement sin migraciones. |
| Expo Push | Canal de notificación principal para los usuarios que tienen instalada la app móvil. El backend envía mediante el servicio push de Expo; los tickets se reconcilian con los recibos cada 15 min. Los tokens caducos se revocan automáticamente. |
| WhatsApp (Meta) | Canal de notificación de segunda prioridad — se usa cuando el destinatario no tiene token push registrado. Envía confirmaciones de reserva, recordatorios, recibos de pago, mensajes de cancelación y materiales de clase. |
| Correo electrónico | Alternativa terminal cuando ni push ni WhatsApp están disponibles, más los correos de acceso por enlace mágico (que siempre van por correo porque el estudiante aún no tiene la app en ese momento). |
| Monitoreo de errores | Solo para ingeniería — captura errores en tiempo real para que el equipo sea alertado sobre fallas. |
| Analítica del producto | Solo para ingeniería — registra eventos del producto (registros, compras, cancelaciones) para que el equipo vea cómo se usa. Los eventos de pago se etiquetan con el riel (prepaid para Stripe, wise para Wise) para poder medir la adopción por método. |
Capacidades de administración
El producto incluye un panel de administración para superusuarios dentro del producto en /admin, controlado por la lista de la variable de entorno SUPERUSER_EMAILS y una lista incorporada en el código. Está dirigido al equipo de operaciones de AgendaProfe.
El panel incluye:
- Resumen. Conteos a nivel plataforma: maestras, estudiantes, paquetes activos, total cobrado, reembolsos, notificaciones encoladas y fallidas, ajustes de auditoría. Maestras recientes y pagos recientes.
- Maestras. Cada registro de maestra, con estado de configuración inicial, estado de cobros/transferencias en Stripe, número de estudiantes, paquetes y reservas. Cada fila lleva al detalle de la maestra con sus paquetes activos y pagos recientes.
- Pagos. Lista de pagos a nivel plataforma (últimos 100). Estado y monto por fila, más el total acumulado en la ventana visible.
- Notificaciones. Conteos por estado (encoladas / enviadas / entregadas / fallidas), las últimas 50 notificaciones a nivel plataforma con plantilla, canal, idioma y mensaje de error, y la tabla de aprobación de plantillas de WhatsApp por idioma.
- Historial de auditoría. Últimos 100 ajustes hechos por maestras a nivel plataforma (marcar como completada / no asistió / restaurar / perdonar cancelación / extender vigencia / establecer precio personalizado / reembolso), con motivo, marca de tiempo y la maestra que realizó la acción.
- Integraciones. Verificación de presencia de credenciales por servicio externo (Stripe, Meta WhatsApp, Resend, Inngest, Sentry, PostHog) para que un operador vea de un vistazo qué servicios están en modo stub.
Las otras capacidades similares a administración disponibles en el producto son los ajustes de la maestra descritos en Reglas de negocio, están limitadas a sus propios estudiantes y se acceden desde el panel de la maestra.
Limitaciones actuales
- Dos rieles de pago: Stripe (tarjeta) y Wise (transferencia). No se admiten otros métodos de pago. La conciliación de Wise hoy es manual (la maestra hace clic en "Marcar como recibido"); aún no se construye la conciliación automática vía la API de balance-statement de Wise. Los reembolsos por Wise se hacen fuera de la plataforma.
- Solo clases individuales. Las clases grupales (una maestra con varios estudiantes al mismo tiempo) no están disponibles.
- Sin entrega de clases dentro del producto. La plataforma gestiona las reservas y los pagos; la clase en sí ocurre de forma externa (Zoom, Google Meet, en persona, etc.). El producto no almacena el enlace de la reunión.
- Sin reembolsos parciales. Los reembolsos son por paquete completo únicamente.
- Sin comisión de la plataforma. La plataforma actualmente no retiene una parte de los ingresos de la maestra.
- Sin contenido de ayuda en el producto. Las páginas de ayuda fueron retiradas pendientes de una reescritura; por ahora, el soporte es por correo electrónico.
- El aviso de privacidad aún indica que está pendiente de revisión legal antes del lanzamiento público.
Fuera del alcance
El producto actualmente no hace ninguna de las siguientes cosas. Es importante entender con claridad que no están construidas:
- Clases grupales o cohortes con varios estudiantes.
- Suscripciones mensuales recurrentes para estudiantes. Los pagos son compras únicas de paquetes.
- Un marketplace. No existe un directorio ni descubrimiento de maestras; cada maestra tiene su propio enlace de reservas privado.
- Entrega de clases (video, chat, pizarrón, pantalla compartida).
- Planes de estudio, planificación de clases o calificaciones.
- Sincronización de calendario con Google Calendar, Apple Calendar, etc.
- Organizaciones con varias maestras o repartos de pagos entre maestras.
- Mensajería dentro del producto entre maestra y estudiante.
- Facturación automática más allá de los recibos de pago de Stripe.
- Reportes fiscales para la maestra.
- Comisión de la plataforma sobre los ingresos de la maestra.
- Conciliación automática de Wise. La plataforma hoy no consulta la API de balance-statement de Wise ni se suscribe a webhooks de Wise; las maestras confirman las transferencias Wise manualmente. El modelo de datos es compatible para sumar automatización más adelante.
- Reembolsos de Wise dentro de la plataforma. Wise no expone una API pública de reembolso comparable a la de Stripe, por lo que las devoluciones se hacen completamente desde la app de Wise de la maestra.
Preguntas abiertas
No hay preguntas abiertas pendientes. Los puntos que se rastreaban antes (ventana de tolerancia de los recordatorios, materiales con tiempo de envío vencido, restricción de reagendado entre paquetes, monedas admitidas, notificaciones en inglés, Wise como segundo riel de pago) ya están resueltos — ver Cambios recientes y Reglas de negocio.
Fin del documento.