Inicio de sesión
Las personas entran una sola vez con su cuenta de Auth0; la aplicación necesita un correo para saber quiénes son y las identifica por él, en minúsculas.
- De vuelta donde estabas. Después de entrar, cada persona regresa a la página que pidió (solo páginas del mismo sitio).
- Los accesos de clientes no entran. Un acceso creado para la app de un acreditado no puede abrir el back office; recibe una página de “Este es un acceso de cliente”.
- Ingreso al entrar. Un correo verificado de un dominio que acepta una organización se une a ella de inmediato.
- A qué organización corresponde una página. La elegida en el selector; si no hay, la última usada; si no, la primera a la que se unió. Quien no tiene ninguna va a la página de Bienvenida.
- Cerrar sesión. Borra la sesión y también cierra la sesión de Auth0.
Organizaciones
Cada prestamista es una organización con sus propios clientes, créditos, fondeos, pagos, documentos, contratos, plantillas, pipelines, reportes, configuración y personas. Nadie ve los datos de otra organización.
- Crear una. Cualquier persona que haya entrado puede crear una organización: un nombre (hasta 120 caracteres) y su idioma, y queda como propietaria. Con la suscripción activada empieza una prueba gratuita sin tarjeta. Las plantillas de contrato, dos clientes de ejemplo y la guía de inicio se preparan de inmediato.
- Página de Bienvenida. Quien no pertenece a ninguna organización ve las invitaciones enviadas a su correo, cada una con Unirme, y un formulario para crear una.
- Selector. El menú bajo el logo lista las organizaciones de la persona con su rol en cada una. Una persona puede tener un rol distinto en cada organización.
Roles
Cada rol puede hacer todo lo que hace el anterior. Los roles se verifican de forma central en cada petición.
| Rol | Qué puede hacer |
|---|---|
| Lector | Ve todo y no cambia nada. Aun así puede usar calculadoras y vistas previas (cotizaciones; vistas previas de pago, disposición y ministración; vistas previas y revisiones de contratos), cambiar de organización, salir de ella o crear una, aceptar invitaciones y aprobar o terminar su propia conexión con Claude. |
| Miembro | Trabaja la cartera: clientes, créditos, pagos, fondeos, documentos, contratos y pipelines. |
| Administrador | Además invita, cambia de rol y da de baja a personas (no a propietarios); abre Configuración y sus páginas de Desarrolladores; contrata y administra la suscripción; guarda diseños de cotización; elimina los datos de ejemplo. |
| Propietario | Además nombra y quita propietarios. Una organización siempre conserva al menos un propietario. |
En el editor de contratos, los lectores siguen siendo lectores y los administradores y propietarios son publicadores; los miembros reciben el rol propio del editor (lector, editor o publicador).
Equipo, invitaciones e ingreso por dominio
- Página de Equipo. Cada miembro ve el nombre, correo, último acceso y rol de cada persona. Los administradores cambian roles y dan de baja a personas; cualquiera puede salir. Salir o ser dado de baja también termina las conexiones de esa persona con Claude en la organización.
- Invitaciones. Los administradores invitan hasta 25 correos a la vez con un rol (solo un propietario puede invitar a un propietario). Cada liga funciona una vez, durante 14 días y solo para el correo invitado; solo se guarda su huella SHA-256. Si el servidor tiene configurado el correo, las invitaciones se envían en el idioma de la organización; si no, cada liga se muestra con un botón Copiar. Los administradores pueden emitir una Nueva liga (14 días más; la anterior deja de servir) o Retirar una invitación.
- Aceptar. La persona entra con el correo invitado. Si el rol de la invitación es más alto que el que ya tiene, recibe el más alto. La página explica cada falla (inválida, usada, retirada, vencida, otro correo).
- Ingreso por dominio de correo. Los administradores registran los dominios de la empresa y eligen si las personas entran como lectores o como miembros. Solo se unen correos verificados. Un dominio se acepta solo si un miembro ya lo usa; se rechazan unos 30 servicios de correo público (gmail.com, outlook.com, yahoo.com.mx, prodigy.net.mx…), y quien salió o fue dado de baja necesita una nueva invitación.
- Bitácora de actividad. La página de Equipo muestra los últimos 60 eventos: organización creada o renombrada, cambios en las reglas de ingreso, cambios de rol, personas que se unieron (y cómo), que salieron o fueron dadas de baja, invitaciones enviadas, retiradas o renovadas, y cada cambio de estado de la suscripción que reporta Stripe.
Guía de inicio
Una organización nueva recibe sus plantillas de contrato iniciales (contrato de crédito, reestructura y contrato de inversionista), firmadas por su propia persona moral, y dos clientes de ejemplo con correos de example.com: Ana Ejemplo Ruiz, acreditada con un límite de $150,000.00, y Carlos Ejemplo Torres, inversionista.
- Crear un crédito — el formulario abre prellenado con $100,000.00 al 36% a 12 meses.
- Revisar su contrato.
- Agregar un fondeo — prellenado con $500,000.00 al 18% a 12 meses.
- Revisar el contrato de inversionista.
- Ver los reportes.
Un paso se completa cuando su registro existe o su página se ha abierto, en cualquier orden, con un contador “n/5”. Una tarjeta de apoyo en la esquina de cada una de las demás páginas explica el lugar de esa página en la guía. Al completar los cinco, la guía sugiere llenar los datos legales de la empresa, invitar al equipo, registrar clientes reales e importar la cartera.
“Ocultar la guía” la oculta para todos; los lectores nunca la ven. Los administradores pueden eliminar los datos de ejemplo de forma permanente (clientes, créditos, fondeos, calendarios, pagos, contratos, documentos y sus archivos), salvo que el crédito de otro cliente esté ligado a ellos.
Suscripción
Hay un solo plan: un precio recurrente en Stripe definido por el operador, leído en vivo desde Stripe y actualizado cada hora. Mutio Core nunca ve la tarjeta.
| Estado | Significado |
|---|---|
| Desactivada | Sin llaves de Stripe en el servidor: la suscripción no se muestra y nada termina. |
| Cortesía | Gratis de forma permanente (la organización 1, o cuando lo define el operador). |
| Prueba | Prueba gratuita desde la creación, con todas las funciones y sin tarjeta. La barra lateral cuenta los días; un aviso aparece en los últimos 3. |
| Suscrita | Stripe la reporta activa (o en prueba, si se suscribió durante la prueba). |
| Pago vencido | Falló un cargo. Todo sigue funcionando mientras Stripe reintenta; un aviso pide actualizar la tarjeta. |
| Terminada | Prueba concluida sin suscripción, o suscripción cancelada, impagada, pausada o incompleta. La organización queda en solo lectura. |
- Suscribirse. Los administradores abren Stripe Checkout en el idioma de la página, con códigos de promoción. El resto de la prueba sigue siendo gratis, así que el primer cargo cae cuando la prueba terminaría. La aplicación consulta primero a Stripe, para que una organización no pague dos veces.
- Regreso de Checkout. Lee la suscripción desde Stripe de inmediato, sin esperar el webhook.
- Administrar suscripción. Abre el portal de Stripe: cambiar la tarjeta, descargar facturas, cancelar o renovar. Una suscripción cancelada funciona hasta el final del periodo pagado.
- Solo lectura cuando termina la suscripción. No se borra nada y todo se puede seguir viendo y exportando. Solo siguen funcionando las vistas previas, el cambio de organización, la suscripción y las acciones de seguridad (revocar llaves de API, desactivar endpoints de webhook, rotar secretos). La API responde a las escrituras con
402; Claude sigue leyendo, pero rechaza cambios. - Webhook de Stripe. Se acepta solo si viene firmado, para cuatro tipos de evento; cada suscripción se vuelve a leer desde Stripe, así que no importa si los eventos llegan fuera de orden.
- Recibos. Stripe envía sus propios recibos y avisos de cobro. Las facturas de Stripe no son CFDI.
Configuración
Solo administradores y propietarios abren Configuración. Los ajustes se guardan por organización y llegan a todos los procesos del servidor en menos de 5 segundos.
| Ajuste | Qué hace |
|---|---|
| Nombre de la organización | Hasta 120 caracteres; se muestra bajo el logo y en la lista de organizaciones de cada persona. Los cambios de nombre quedan en la bitácora. |
| Idioma | English o Español para las páginas de la aplicación. Contratos, cotizaciones, estados de cuenta y correos a clientes siguen en español. |
| Nombre en documentos | Hasta 120 caracteres; el nombre que ven los clientes en cotizaciones, recordatorios y estados de cuenta (si no hay, el nombre de la organización). |
| Logo | PNG, JPEG o SVG de hasta 400 KB. Los PDF muestran logos PNG y JPEG; con un SVG se escribe el nombre en su lugar. |
| Diseños de cotización | Ligado a Cotizaciones › Diseños: Moderno (predeterminado), Clásico o Claro, por producto de crédito o de fondeo. |
| Webhook de recordatorios de pago | La dirección de Make que envía los correos de recordatorio desde el buzón del prestamista (https, hasta 1,000 caracteres). |
| Webhook de estados de cuenta | La dirección de Make que envía los estados de cuenta a fondeadores. |
| Conector de Claude | La liga del conector para copiar y una contraseña compartida opcional (32–200 caracteres, botón Generar, única entre organizaciones), con una casilla para indicar si también puede crear y cambiar registros. |
| Conexiones de Claude | Las conexiones de todos: correo, app, lectura o lectura y cambios, fecha de conexión y último uso, cada una con Revocar. |
| Desarrolladores | Conteo de llaves de API y endpoints de webhook, con ligas a las páginas de Desarrolladores. |
| Datos de ejemplo | Se muestra mientras existen los clientes de ejemplo, con Eliminar. |
Seguridad
- Cada prestamista por separado. Cada consulta a la base de datos se limita automáticamente a la organización actual; una consulta sin organización no devuelve nada. Cada registro nuevo lleva el sello de su organización. Los valores únicos (correo, RFC, CURP, ID externo) lo son por organización. Los archivos viven en la carpeta de S3 propia de cada organización. Las llaves de API, las conexiones de Claude y las contraseñas del conector funcionan cada una para una sola organización.
- Tokens CSRF. Cada POST, PUT, PATCH o DELETE desde un navegador con sesión debe llevar el token de la sesión, que las páginas agregan a cada formulario y a cada llamada de script del mismo sitio. Sin él, la página avisa que había caducado y que no se guardó nada. Las cookies de sesión además son HttpOnly y SameSite=Lax.
- Webhooks firmados en ambos sentidos. Los salientes van firmados con HMAC-SHA256 por endpoint; las llamadas entrantes de Stripe deben llevar la firma de Stripe. Las direcciones salientes deben ser hosts https públicos, verificados de nuevo en cada entrega.
- Llaves de API. Se muestran una sola vez y se guardan solo como huella SHA-256; revocarlas es inmediato. Los tokens de invitación, los tokens de OAuth y las contraseñas del conector se guardan igual.
- Ligas y confirmaciones firmadas. Las ligas a los PDF de cotización van firmadas, vencen a los 7 días y solo llevan el id de un cliente. Las confirmaciones de cambios de Claude van firmadas, ligadas a la conexión que las pidió y valen 30 minutos. Ambas dependen de una llave secreta del servidor, que también firma las sesiones.
- Claude lee de forma segura. Las lecturas de Claude corren en transacciones de base de datos de solo lectura, y las respuestas omiten CURP, números de identificación, fechas de nacimiento, estado civil y cuentas bancarias, salvo dentro de documentos leídos a propósito.