Modos de audiencia: Organization e Individual
Estado: implementado (primera vertical). El modo es una capacidad estable del despliegue,
organizations.workspace_mode(migración 0017), fijada al crear la organización desdeWORKSPACE_MODE(por defectoorganization) y nunca inferida del número de usuarios. El documento sigue describiendo la dirección de producto; lo ya construido se resume abajo en «Estado de implementación». No implica crear una web comercial, un SaaS multi-tenant ni dos productos distintos.
Decisión
SkillNet tendrá un único núcleo de producto y dos modos de uso:
| Modo interno | Etiqueta de producto | Para quién | Propietario del espacio |
|---|---|---|---|
organization |
Company / Organization | Empresas, equipos, clases, academias, asociaciones y otros grupos | Una persona administradora gestiona contenido y participantes |
individual |
Individual | Una persona que instala y utiliza SkillNet para sí misma | La misma persona administra su contenido y aprende |
No se crea un modo separado para class. Una clase es un caso de uso de
organization: tiene una persona responsable, un conjunto de participantes,
contenido compartido y seguimiento colectivo. Las diferencias entre una empresa y
una clase pertenecen al lenguaje, las plantillas y la configuración, no a la
arquitectura principal.
Tampoco se llamará user al segundo modo. Todas las personas del sistema son
usuarios; usar ese término para un tipo de instalación haría ambiguos el código, la
documentación y el marketing.
Qué permanece común
Los dos modos comparten el flujo que constituye el producto:
- incorporar documentos propios;
- convertirlos en cursos y material de consulta;
- aprender mediante experiencias adaptadas;
- conservar progreso, preferencias y memoria personal;
- regenerar o actualizar el aprendizaje cuando cambian las fuentes.
La generación, el runtime adaptativo, los ejercicios, la tutoría, la trazabilidad de fuentes y la persistencia del perfil no deben bifurcarse por modo. Las diferencias se resuelven mediante capacidades visibles y permisos, no manteniendo dos aplicaciones.
Experiencia por modo
Organization
Mantiene el producto actual y sus roles principales:
- una persona administradora sube documentos y revisa contenido generado;
- puede invitar participantes, asignar cursos y consultar progreso colectivo;
- dispone de biblioteca compartida, habilidades, talento e informes de equipo;
- cada participante conserva su progreso y recibe una experiencia personalizada;
- la organización controla la configuración del despliegue y sus datos.
La etiqueta concreta puede cambiar según la vertical (Empresa, Clase,
Academia o Equipo) sin alterar el modo interno.
Individual
La persona es simultáneamente propietaria del espacio y alumna:
- sube sus propios documentos;
- crea, revisa y publica cursos para sí misma;
- configura el modelo y el despliegue como lo haría una persona administradora;
- conserva progreso, preferencias, historial y personalización entre cursos;
- no ve gestión de empleados, talento, asignaciones colectivas ni informes de organización;
- no necesita crear usuarios secundarios para completar su propio contenido.
Individual no es una edición desechable o sin memoria. La personalización y la
persistencia son precisamente parte de su valor: SkillNet aprende cómo estudia esa
persona y utiliza esa información en sus cursos posteriores.
Modelo técnico recomendado
La ampliación no requiere eliminar organizations ni introducir multi-tenancy.
Cada despliegue continúa teniendo una sola fila de organización:
- en modo
organization, representa a la empresa, clase o equipo; - en modo
individual, representa el espacio personal del propietario.
Cuando se implemente, el modo puede almacenarse como una capacidad estable del
despliegue, por ejemplo workspace_mode = organization | individual. No debe
inferirse repetidamente a partir del número de usuarios.
El frontend puede derivar de ese valor la navegación y las funciones disponibles. La API debe seguir aplicando permisos en el servidor: ocultar una sección no es un mecanismo de autorización.
La primera configuración debería pedir únicamente el modo de uso y los datos
necesarios para crear al propietario. Cambiar de individual a organization
puede admitirse como una ampliación no destructiva; el camino inverso exige tratar
participantes, asignaciones y datos colectivos y por tanto no debe asumirse
automático.
Producto horizontal y marketing vertical
SkillNet sigue siendo un producto horizontal: convierte conocimiento propio en aprendizaje adaptativo. La segmentación comercial no necesita convertirse en segmentación técnica.
Puede haber varias landings o narrativas verticales sobre el mismo producto:
| Página o campaña | Problema que cuenta | Modo de producto |
|---|---|---|
| Empresas | Onboarding, procedimientos y conocimiento interno | organization |
| Academias o clases | Material docente propio y seguimiento del alumnado | organization |
| Consultoras | Entrega de formación basada en documentación del cliente | organization |
| Individual | Estudiar documentos propios con memoria y adaptación | individual |
Estas páginas pueden usar ejemplos, imágenes, testimonios y llamadas a la acción distintos. No deben prometer funcionalidades exclusivas que obliguen a crear forks del producto. Una vertical es una puerta de entrada y una prioridad de marketing, no una edición independiente.
Storytelling común
La historia central debe funcionar en ambos modos y partir del conocimiento, no del organigrama:
SkillNet transforma los documentos que ya tienes en aprendizaje que se adapta a cada persona.
Después se concreta por audiencia:
- Company: el conocimiento de tu organización se convierte en formación para cada miembro del equipo.
- Individual: tus documentos se convierten en cursos que recuerdan cómo aprendes.
Así se conserva una marca única y se evita que la ampliación diluya el mercado inicial. El marketing puede seguir concentrando presupuesto y mensajes en pymes, incluso aunque el software descargable cubra más casos de uso.
Fuera de alcance de esta decisión
- ofrecer SkillNet como SaaS alojado o multi-tenant;
- crear una aplicación distinta para cada vertical;
- implementar ahora una web de marketing;
- renombrar inmediatamente roles, tablas o rutas existentes;
- diseñar facturación, licencias o precios por modo;
- convertir
classen una entidad raíz separada.
Criterios para una implementación futura
La ampliación estará bien resuelta si:
- una instalación individual puede completar el ciclo entero sin encontrar conceptos de RR. HH. o gestión de plantilla;
- una instalación de organización conserva todas las funciones actuales;
- el contenido, el progreso y la personalización utilizan los mismos servicios en ambos modos;
- añadir una nueva vertical de marketing no requiere modificar el modelo de dominio;
- una persona puede ampliar su espacio individual a organización sin perder sus cursos ni su historial;
- el aislamiento y la propiedad de los datos siguen siendo los de un despliegue self-hosted de una sola organización.
Frontera de nuevas funciones
Audio en el chat, conversaciones en vivo, mascota y podcasts pueden reutilizarse en ambos modos. Esta decisión no añade por sí sola más funciones al producto empresarial. La nota de dirección está en conversational-modalities.md.
Estado de implementación
Primera vertical construida (mantiene organization intacto por defecto):
- Datos.
organizations.workspace_mode(enumworkspace_mode, migración 0017), defaultorganization. Sin multi-tenancy: una fila por despliegue, como antes. - Arranque.
bootstrap.ensure_organizationleeWORKSPACE_MODE(env, defaultorganization) sólo al crear la organización; los despliegues existentes conservan su valor. - API. El modo viaja al cliente en
GET /auth/me(workspace_mode) y enGET /settings. Las superficies colectivas —empleados (alta/lista/reset), talento, estadísticas, asignación de cursos y catálogo de skills— pasan por la dependenciarequire_organization_workspace, que responde 404 enindividual: ahí esos conceptos no existen. La autorización sigue en el servidor; ocultar en la SPA es UX. - Frontend. La navegación se deriva del modo (
useWorkspaceMode). Enindividualel propietario es unadminque además aprende: la barra lateral omite Empleados y Talento, «Contenido» se presenta como «Mis cursos», y el panel de empresa se sustituye por un inicio personal. El propietario pasa una vez por el onboarding del aprendiz para tener perfil y personalización. - Roles. Sin rol nuevo:
individualreutilizaadmincomo propietario-alumno. - Seed. El modo
individualse fija porWORKSPACE_MODE=individualen el.envantes del primer arranque, o por el wizard/setup. (El antiguo seed dedicadosrc.seed_demo_individual, construido sobre la panadería retirada, se eliminó.)
Primer arranque por UI: GET /setup/status + POST /setup (públicos, cerrados en cuanto
existe un usuario) y el wizard /setup en la SPA eligen el modo y crean al propietario
(auto-login → onboarding). El .env (WORKSPACE_MODE + ADMIN_EMAIL/PASSWORD) sigue
siendo el camino headless equivalente.
Pendiente (fases siguientes): pulir el onboarding del propietario, y la ampliación no
destructiva individual → organization.