Plan B2B: LMS Corporativo para Empresas
Sección titulada «Plan B2B: LMS Corporativo para Empresas»📋 Resumen Ejecutivo
Sección titulada «📋 Resumen Ejecutivo»Pregunta central: ¿Puede TalentBricks convertirse en LMS corporativo para empresas que necesitan entrenamientos comerciales a la medida?
Respuesta: ✅ SÍ - Es altamente viable
| Aspecto | Evaluación |
|---|---|
| Viabilidad técnica | ✅ 90% del código ya existe - solo falta multi-tenancy |
| Time to market | ✅ MVP en 4-6 semanas |
| Fit producto-mercado | ✅ Necesidad real validable (caso Talento Para Ti) |
| Ventaja competitiva | ✅ Híbrido (custom + público), nicho (Data/AI), LATAM |
| Modelo de negocio | ✅ SaaS B2B (ARR predecible, CAC recuperable) |
| Riesgo técnico | 🟡 Medio (multi-tenancy bien diseñada = crítico) |
| Riesgo de mercado | 🟡 Medio (competencia establecida, pero diferenciados) |
Recomendación: Proceder con validación comercial (2-3 entrevistas) → Landing /teams → MVP Fase
1 si hay interés confirmado.
Inversión inicial: 4-6 semanas dev + $2-5k marketing → Potencial: $144k ARR en 12 meses (conservador)
Contexto del Negocio
Sección titulada «Contexto del Negocio»Oportunidad Identificada
Sección titulada «Oportunidad Identificada»Las empresas necesitan plataformas para:
- Entrenamientos comerciales a la medida
- Capacitación de vendedores sobre productos
- Evaluación de conocimiento (quizzes)
- Tracking de progreso por empleado/equipo
- Certificación de entrenamiento completado
Ejemplo de uso: Que Laura y Winny aprendan qué vende Talento, con quizzes para verificar conocimiento.
✅ Análisis de Viabilidad Técnica
Sección titulada «✅ Análisis de Viabilidad Técnica»Lo que YA tenemos (90% del código necesario):
Sección titulada «Lo que YA tenemos (90% del código necesario):»| Feature | Estado | Notas |
|---|---|---|
| Sistema de cursos | ✅ Completo | Course/Lesson con videos |
| Quizzes y evaluación | ✅ Completo | Implementado Feb 2026 |
| Tracking de progreso | ✅ Completo | LessonProgress por usuario |
| Certificados | ✅ Completo | Certificate con verificación |
| Sistema de usuarios | ✅ Completo | Auth completo (email/Google/GitHub) |
| Inscripción a cursos | ✅ Completo | Enrollment model |
| Admin dashboard | ✅ Funcional | Gestión de cursos y usuarios |
| Video hosting | ✅ Completo | YouTube (dev) / S3+CloudFront (prod) |
| Pagos | ✅ Completo | Stripe (individual y subscripciones) |
| i18n | ✅ Completo | ES/EN |
Lo que FALTA para ser LMS corporativo:
Sección titulada «Lo que FALTA para ser LMS corporativo:»| Feature | Prioridad | Esfuerzo | Notas |
|---|---|---|---|
| Multi-tenancy (Organizations) | 🔴 Crítico | Alto | Nuevo modelo Organization/Team |
| Roles granulares | 🔴 Crítico | Medio | Admin empresa, manager, empleado |
| Cursos privados por org | 🔴 Crítico | Bajo | Flag organizationId en Course |
| Dashboard de managers | 🟡 Alta | Alto | Ver progreso del equipo |
| Analytics por org/equipo | 🟡 Alta | Medio | Reportes de completación |
| Asignación forzosa | 🟡 Alta | Medio | Cursos obligatorios (compliance) |
| SSO/SAML | 🟢 Media | Alto | Solo para empresas grandes (100+) |
| Pricing por seats | 🟡 Alta | Bajo | Stripe subscriptions ajustados |
| Bulk user import | 🟢 Media | Bajo | CSV upload de empleados |
🎯 Recomendación: Misma Marca
Sección titulada «🎯 Recomendación: Misma Marca»Opción A: TalentBricks con plan “Teams/Enterprise” ⭐ RECOMENDADO
Sección titulada «Opción A: TalentBricks con plan “Teams/Enterprise” ⭐ RECOMENDADO»Pros:
- ✅ Aprovecha el 90% del código existente
- ✅ Un solo codebase (menos mantenimiento)
- ✅ Sinergias B2C ↔ B2B (empleados toman cursos personales)
- ✅ Lanzamiento rápido (MVP en 4-6 semanas)
- ✅ Validación de mercado sin inversión grande
- ✅ SEO y brand awareness ya construido
Contras:
- ⚠️ Posicionamiento dual (requiere messaging claro)
- ⚠️ UI debe servir a dos audiencias (pero manejable con roles)
Estrategia de marca:
- Homepage: sección “For Teams” + “For Individuals”
- Pricing: “Individual” / “Teams” / “Enterprise” (como GitHub, Notion, etc.)
- URL:
/teamspara landing B2B
Opción B: Marca separada (ej: “TalentBricks Enterprise”)
Sección titulada «Opción B: Marca separada (ej: “TalentBricks Enterprise”)»Pros:
- ✅ Posicionamiento B2B puro
- ✅ UI/UX especializada
Contras:
- ❌ Dos sitios web (2x esfuerzo marketing)
- ❌ No aprovecha SEO/tráfico actual
- ❌ Más tiempo para lanzar
- ❌ Más complejo de mantener
🏗️ Arquitectura del Sistema (Big Picture)
Sección titulada «🏗️ Arquitectura del Sistema (Big Picture)»Diagrama de Entidades Principales
Sección titulada «Diagrama de Entidades Principales»┌─────────────────────────────────────────────────────────────────┐│ MODELO B2C (ACTUAL) ││ ││ User ─────< Enrollment >───── Course ────< Lesson ││ │ │ ││ └──< LessonProgress >──────────┘ ││ └──< Certificate >─────────────┘ ││ │└─────────────────────────────────────────────────────────────────┘ ↓ AGREGAR CAPA B2B ↓┌─────────────────────────────────────────────────────────────────┐│ MODELO B2B (NUEVO) ││ ││ Organization ││ ├──< OrganizationMember >────┬─ User (existente) ││ │ │ ││ ├──< Team >─────┬ ││ │ │ ││ │ └──< TeamMember >───┘ ││ │ ││ └──< Course (custom) >────< Lesson ││ ││ TeamCourseAssignment (conecta Team con Course) ││ ├── isRequired (obligatorio?) ││ └── dueDate (fecha límite) ││ ││ Enrollment (modificado) ││ ├── organizationId (nuevo) ││ ├── assignedByTeam (nuevo) ││ └── dueDate (nuevo) ││ │└─────────────────────────────────────────────────────────────────┘Flujo de Datos: Asignar Curso a Equipo
Sección titulada «Flujo de Datos: Asignar Curso a Equipo»1. Admin asigna "Curso X" a "Equipo Ventas" (10 miembros) ↓2. Sistema crea TeamCourseAssignment ├─ teamId: ventas ├─ courseId: X ├─ isRequired: true └─ dueDate: 2026-03-15 ↓3. Sistema auto-crea 10 x Enrollment (uno por miembro) ├─ userId: [cada miembro del equipo] ├─ courseId: X ├─ organizationId: empresa123 ├─ assignedByTeam: true └─ dueDate: 2026-03-15 ↓4. Sistema envía emails de notificación ↓5. Empleados ven curso en "Mis Cursos > Asignados por mi empresa"Arquitectura de Permisos (RBAC)
Sección titulada «Arquitectura de Permisos (RBAC)»┌────────────────────────────────────────────────────────────┐│ Rol: OWNER (dueño de la organización) ││ ✅ Gestionar billing y subscripción ││ ✅ Invitar/remover miembros ││ ✅ Cambiar roles (incluido crear otros OWNERs) ││ ✅ Crear/editar/eliminar teams ││ ✅ Crear cursos custom ││ ✅ Ver analytics de toda la org ││ ✅ Configurar SSO │└────────────────────────────────────────────────────────────┘ ↓┌────────────────────────────────────────────────────────────┐│ Rol: ADMIN (administrador) ││ ✅ Invitar/remover miembros ││ ✅ Crear/editar teams ││ ✅ Crear cursos custom ││ ✅ Ver analytics de toda la org ││ ❌ No puede cambiar roles ││ ❌ No puede gestionar billing │└────────────────────────────────────────────────────────────┘ ↓┌────────────────────────────────────────────────────────────┐│ Rol: MANAGER (líder de equipo) ││ ✅ Ver progreso de SU equipo ││ ✅ Asignar cursos a SU equipo ││ ✅ Enviar recordatorios a SU equipo ││ ❌ No puede ver otros equipos ││ ❌ No puede cambiar roles ││ ❌ No puede crear cursos custom │└────────────────────────────────────────────────────────────┘ ↓┌────────────────────────────────────────────────────────────┐│ Rol: MEMBER (empleado) ││ ✅ Ver sus cursos asignados ││ ✅ Completar lecciones y quizzes ││ ✅ Descargar sus certificados ││ ❌ No puede ver progreso de otros ││ ❌ Solo lectura en la organización │└────────────────────────────────────────────────────────────┘Flujo de Usuario: B2C vs B2B
Sección titulada «Flujo de Usuario: B2C vs B2B»┌─────────────────────────────────────────────────────────────┐│ USUARIO INDIVIDUAL (B2C) ││ ││ 1. Signup → user@gmail.com ││ 2. Browse courses → Enroll (pago individual $29/mes) ││ 3. Ver "Mis Cursos" → todos son auto-enrollados ││ 4. Completar → Certificado a nombre personal ││ │└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐│ USUARIO CORPORATIVO (B2B) ││ ││ 1. Recibe invitación → juan@empresa.com ││ 2. Signup / Auto-join a "Empresa X" ││ 3. Ver "Mis Cursos" → Dos tabs: ││ ├─ "Asignados por mi empresa" (🔒 obligatorios) ││ └─ "Explorar catálogo público" (opcional) ││ 4. Completar curso asignado → Certificado + notif a manager││ 5. PLUS: También puede tomar cursos personales ││ │└─────────────────────────────────────────────────────────────┘
VENTAJA: El mismo usuario puede ser: - Empleado de "Empresa X" (cursos corporativos) - Usuario individual (cursos personales)Stack Técnico (Sin cambios vs actual)
Sección titulada «Stack Técnico (Sin cambios vs actual)»Frontend: React 19 + TailwindCSS + ShadCNBackend: Node.js + Wasp 0.20+DB: PostgreSQL + PrismaAuth: Wasp Auth (email, Google, GitHub) + SSO (nuevo)Payments: Stripe (individual + subscriptions)Storage: S3 (videos) + CloudFront (CDN)Email: SendGridAnalytics: Plausible / Google AnalyticsCambio clave: Agregar modelos multi-tenancy sin tocar la arquitectura base existente.
Decisiones Arquitectónicas Clave
Sección titulada «Decisiones Arquitectónicas Clave»1. Multi-tenancy: Shared DB vs Separate DBs
Sección titulada «1. Multi-tenancy: Shared DB vs Separate DBs»Decisión: ✅ Shared Database (un solo PostgreSQL)
| Aspecto | Shared DB | Separate DBs |
|---|---|---|
| Complejidad | ✅ Baja (solo agregar organizationId) | ❌ Alta (múltiples conexiones) |
| Costo | ✅ Bajo (un DB para todos) | ❌ Alto (DB por cliente) |
| Escalabilidad | ✅ Hasta 100k+ usuarios | ⚠️ Complejo de gestionar |
| Aislamiento | ⚠️ Requiere RLS estricto | ✅ Aislamiento total |
| Backup | ✅ Simple | ❌ N backups |
| Best for | ✅ MVP → 1000 clientes | Enterprise (regulación estricta) |
Trade-off aceptado: Menor aislamiento pero mucho más simple de implementar y operar.
Mitigación: Row-Level Security (RLS) en todas las queries + auditoría.
2. Cursos custom: Misma tabla vs tabla separada
Sección titulada «2. Cursos custom: Misma tabla vs tabla separada»Decisión: ✅ Misma tabla Course con flag organizationId
Course { id title organizationId ← null = curso público isPrivate ← true = solo visible para org}Ventaja:
- Reutiliza toda la lógica existente (Lesson, Enrollment, Certificate)
- Búsqueda unificada (cursos públicos + custom en una sola query)
- Admin puede copiar curso público → custom (fork)
Alternativa descartada: Tabla CustomCourse separada → duplicaría código.
3. Roles: Enum vs tabla separada
Sección titulada «3. Roles: Enum vs tabla separada»Decisión: ✅ Enum OrganizationRole
enum OrganizationRole { OWNER ADMIN MANAGER MEMBER}Razón: Roles simples y fijos (no necesitamos permisos granulares custom por ahora).
Alternativa futura: Si clientes piden roles custom → migrar a RBAC con tabla Permission.
4. Video hosting para cursos custom
Sección titulada «4. Video hosting para cursos custom»Decisión: ✅ Híbrido - YouTube (free) + S3 (private)
type VideoSource = | { type: "youtube"; url: string } // Cursos públicos | { type: "s3"; key: string } // Cursos custom privados | { type: "vimeo" | "wistia"; url: string }; // Enterprise (opcional)Trade-off:
- S3 = costo de storage ($0.023/GB/mes) + bandwidth ($0.09/GB)
- Empresas pequeñas → YouTube OK
- Empresas con contenido sensible → S3 con signed URLs
Límites por plan:
- Teams 10: 5GB storage
- Teams 50: 25GB
- Teams 100: 100GB
- Enterprise: Ilimitado (o custom pricing)
Consideraciones de Escalabilidad
Sección titulada «Consideraciones de Escalabilidad»Límites del MVP (hasta 100 organizaciones)
Sección titulada «Límites del MVP (hasta 100 organizaciones)»| Recurso | Límite MVP | Escala futura |
|---|---|---|
| DB queries | N+1 queries OK | Optimizar con include y select |
| Analytics | Calcular on-demand | Pre-computar métricas (jobs nocturnos) |
| Storage | S3 estándar | S3 + CloudFront CDN |
| SendGrid (100k/mes gratis) | Upgrade a plan pago | |
| Concurrent users | 500-1000 | Load balancer + múltiples instancias |
Cuellos de botella potenciales (Fase 2+)
Sección titulada «Cuellos de botella potenciales (Fase 2+)»-
Analytics complejos (muchos usuarios/cursos)
- Solución: Pre-computar con Wasp Jobs (cron nocturno)
- Almacenar snapshots diarios en
DailyStats(ya existe)
-
Búsqueda de cursos (cuando hay 1000+ cursos)
- Solución: Algolia o ElasticSearch
- MVP: PostgreSQL full-text search es suficiente
-
Video transcoding (si permitimos upload directo)
- Solución: AWS MediaConvert o Cloudflare Stream
- MVP: Aceptar solo YouTube URLs (gratis)
-
Notificaciones masivas (enviar a 5000+ empleados)
- Solución: Queue con BullMQ + Redis
- MVP: Enviar emails en batch (100 por vez)
Costos de infraestructura (estimados)
Sección titulada «Costos de infraestructura (estimados)»MVP (10-50 clientes, 500 usuarios activos):
Railway/Fly.io (server + DB): $30-50/mesS3 storage (100GB): $3/mesS3 bandwidth (500GB): $45/mesSendGrid (email): $0 (free tier)CloudFront (CDN): $10/mes─────────────────────────────TOTAL: $88-108/mesEscala (100+ clientes, 5000 usuarios):
Server instances (2x): $150/mesDB (production grade): $100/mesS3 storage (1TB): $30/mesS3 bandwidth (5TB): $450/mesSendGrid (100k emails/mes): $20/mesCloudFront (CDN): $50/mes─────────────────────────────TOTAL: $800/mesBreak-even: Con $12k MRR (50 clientes Teams) → $800 infra = 6.7% de revenue (saludable).
🎯 Estrategia de Producto: B2C → B2B/B2C Híbrido
Sección titulada «🎯 Estrategia de Producto: B2C → B2B/B2C Híbrido»Transformación del Posicionamiento
Sección titulada «Transformación del Posicionamiento»Antes (B2C puro):
Sección titulada «Antes (B2C puro):»Target: Profesionales individualesValue prop: "Aprende Data Engineering y AI a tu ritmo"Monetización: Subscripción individual ($29/mes)Customer journey: Browse → Enroll → Learn → CertificateDespués (B2B/B2C híbrido):
Sección titulada «Después (B2B/B2C híbrido):»Target: Empresas tech (primario) + Profesionales (secundario)Value prop: - B2B: "Capacita a tu equipo de data en 1/3 del tiempo" - B2C: "Aprende Data Engineering y AI a tu ritmo"Monetización: Dual (B2B seats + B2C individual)Customer journey: - B2B: Demo → Trial → Team setup → Onboard empleados → Analytics - B2C: Browse → Enroll → Learn → CertificateEjemplos de Posicionamiento Dual Exitoso
Sección titulada «Ejemplos de Posicionamiento Dual Exitoso»| Empresa | Modelo | Pricing |
|---|---|---|
| GitHub | B2C (free/pro) + B2B (Teams/Enterprise) | $0 / $4 / $21 / Custom |
| Notion | B2C (free/plus) + B2B (Business/Enterprise) | $0 / $8 / $15 / Custom |
| Figma | B2C (starter) + B2B (Professional/Org/Enterprise) | $0 / $15 / $45 / $75 |
| Canva | B2C (free/pro) + B2B (Teams/Enterprise) | $0 / $13 / $30 / Custom |
Patrón común:
- Free tier fuerte (B2C acquisition)
- Pricing escalonado (Individual → Teams → Enterprise)
- Misma plataforma, features desbloqueadas por tier
- Landing pages separadas (
/vs/teams)
Propuesta de Pricing para TalentBricks
Sección titulada «Propuesta de Pricing para TalentBricks»Opción A: Pricing por seat (recomendado para MVP)
Sección titulada «Opción A: Pricing por seat (recomendado para MVP)»┌─────────────────────────────────────────────────────────────┐│ Individual (B2C) ││ ✓ Free: 3 cursos gratis ││ ✓ Pro: $29/mes (todos los cursos públicos) ││ ✓ Annual: $290/año (-20%) │└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐│ Teams (B2B) - Seat-based ││ ✓ Teams 10: $199/mes (hasta 10 seats) = $19.90/seat ││ ✓ Teams 50: $899/mes (hasta 50 seats) = $17.98/seat ││ ✓ Teams 100: $1,699/mes (hasta 100 seats) = $16.99/seat ││ ││ Incluye: ││ • Acceso a catálogo completo ││ • Crear hasta 3/10/25 cursos custom ││ • Analytics y reportes ││ • Soporte por email ││ • 5GB/25GB/100GB storage para videos │└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐│ Enterprise (B2B) - Custom pricing ││ ✓ Seats ilimitados ││ ✓ Cursos custom ilimitados ││ ✓ SSO/SAML ││ ✓ API access ││ ✓ Dedicated customer success manager ││ ✓ Custom onboarding + white-glove service ││ ✓ SLA 99.9% uptime ││ ✓ Priority support (Slack connect) ││ ││ Precio: $3,000+/mes (negociable) │└─────────────────────────────────────────────────────────────┘Ventajas de este modelo:
- ✅ Simple de entender para clientes
- ✅ Predecible (ARR calculable)
- ✅ Escala con el crecimiento del cliente
- ✅ Competitivo vs Udemy Business ($30/seat/mes)
Opción B: Flat rate + overage (alternativa)
Sección titulada «Opción B: Flat rate + overage (alternativa)»Teams: $499/mes base (incluye 20 seats) + $20/seat adicional por mes
Ejemplo: - 30 empleados = $499 + (10 × $20) = $699/mes - 75 empleados = $499 + (55 × $20) = $1,599/mesPros: Más flexible para empresas que crecen rápido Contras: Menos predecible para presupuestación
Recomendación: Opción A para MVP (más simple)
Strategy Canvas: TalentBricks vs Competencia
Sección titulada «Strategy Canvas: TalentBricks vs Competencia»Factor | Udemy B | Coursera | LinkedIn | TalentBricks──────────────────────────|─────────|──────────|──────────|─────────────Precio (lower = better) | 3 | 2 | 4 | 5 ★Catálogo público | 5 | 4 | 4 | 3Contenido custom | 1 | 1 | 1 | 5 ★Nicho Data/AI | 3 | 4 | 2 | 5 ★Español nativo (LATAM) | 2 | 2 | 2 | 5 ★Onboarding rápido | 3 | 3 | 3 | 5 ★Analytics por equipo | 4 | 4 | 4 | 4SSO/Enterprise features | 5 | 5 | 5 | 3Mobile app | 5 | 5 | 5 | 2Brand awareness | 5 | 5 | 5 | 1Diferenciadores clave (★):
- Precio: 33% más barato que Udemy Business
- Contenido custom incluido: Competencia no lo ofrece (o es addon caro)
- Nicho vertical: Expertise en Data/AI (no generalistas)
- LATAM-first: Contenido en español de calidad, soporte local
- Speed to value: Self-service signup vs sales cycle de semanas
Desventajas vs competencia:
- Catálogo más pequeño (enfocado vs amplio)
- Menos brand awareness (startup vs giants)
- Sin app móvil nativa (por ahora)
Estrategia: Competir en nicho vertical (Data/AI para empresas tech LATAM) donde somos más fuertes que generalistas.
📋 Plan Técnico de Implementación
Sección titulada «📋 Plan Técnico de Implementación»Fase 1: MVP Multi-Tenancy (4-6 semanas)
Sección titulada «Fase 1: MVP Multi-Tenancy (4-6 semanas)»1.1 Cambios al Database Schema
Sección titulada «1.1 Cambios al Database Schema»// ============================================// B2B / Corporate LMS Models// ============================================
enum OrganizationRole { OWNER // Administrador principal de la empresa ADMIN // Admin de la organización (puede gestionar cursos y usuarios) MANAGER // Puede ver analytics de su equipo MEMBER // Empleado normal}
model Organization { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt
name String slug String @unique domain String? // Validar emails @company.com logoUrl String?
// Subscription & billing subscriptionStatus String? // 'active', 'trial', 'cancelled' subscriptionPlan String? // 'teams-10', 'teams-50', 'enterprise' seats Int @default(10) // Número de licencias usedSeats Int @default(0) billingEmail String?
// Settings allowSelfSignup Boolean @default(false) // Empleados pueden auto-inscribirse con email corporativo ssoEnabled Boolean @default(false) ssoProvider String? // 'saml', 'oidc'
members OrganizationMember[] teams Team[] courses Course[] // Cursos privados de la empresa enrollments Enrollment[] // Inscripciones gestionadas
@@index([slug])}
model OrganizationMember { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade) organizationId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String
role OrganizationRole @default(MEMBER)
teams TeamMember[]
@@unique([organizationId, userId]) @@index([organizationId]) @@index([userId])}
model Team { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade) organizationId String
name String description String?
members TeamMember[] assignedCourses TeamCourseAssignment[]
@@index([organizationId])}
model TeamMember { id String @id @default(uuid()) createdAt DateTime @default(now())
team Team @relation(fields: [teamId], references: [id], onDelete: Cascade) teamId String
organizationMember OrganizationMember @relation(fields: [organizationMemberId], references: [id], onDelete: Cascade) organizationMemberId String
isManager Boolean @default(false) // Manager del equipo
@@unique([teamId, organizationMemberId]) @@index([teamId])}
model TeamCourseAssignment { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt
team Team @relation(fields: [teamId], references: [id], onDelete: Cascade) teamId String
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade) courseId Int
isRequired Boolean @default(false) // Curso obligatorio dueDate DateTime? // Fecha límite para completar
@@unique([teamId, courseId]) @@index([teamId]) @@index([courseId])}1.2 Modificaciones a modelos existentes
Sección titulada «1.2 Modificaciones a modelos existentes»// En User model:model User { // ... campos existentes ...
organizationMemberships OrganizationMember[] // Nuevo}
// En Course model:model Course { // ... campos existentes ...
// B2B fields organizationId String? // null = curso público organization Organization? @relation(fields: [organizationId], references: [id]) isPrivate Boolean @default(false) // Solo visible para la org teamAssignments TeamCourseAssignment[]
@@index([organizationId])}
// En Enrollment model:model Enrollment { // ... campos existentes ...
// B2B fields organizationId String? // Inscripción por empresa organization Organization? @relation(fields: [organizationId], references: [id]) assignedByTeam Boolean @default(false) // Asignado vs auto-inscrito dueDate DateTime? // Fecha límite
@@index([organizationId])}1.3 Arquitectura de Operations (Alto Nivel)
Sección titulada «1.3 Arquitectura de Operations (Alto Nivel)»Queries necesarias (solo lectura):
getMyOrganizations→ Organizaciones donde soy miembrogetOrganizationMembers→ Lista miembros con roles, equipos, progresogetOrganizationCourses→ Cursos propios + públicos accesiblesgetTeamProgress→ Analytics de completación por equipogetOrganizationAnalytics→ Métricas agregadas (admins only)
Actions necesarias (escritura):
createOrganization→ Crear nueva organización (trial automático)inviteUserToOrganization→ Enviar invitación por emailcreateTeam→ Crear equipo dentro de orgaddMemberToTeam→ Agregar miembro a equipoassignCourseToTeam→ Asignar curso + auto-enroll miembrosupdateMemberRole→ Cambiar rol (OWNER → ADMIN → MANAGER → MEMBER)importUsersFromCSV→ Importación masiva de empleados
Consideraciones de arquitectura:
- Todas las operaciones validan permisos basados en rol (OWNER/ADMIN/MANAGER/MEMBER)
- Row-level security: usuarios solo ven datos de sus organizaciones
- Auto-enrollment cuando se asigna curso a equipo
- Límite de seats por plan (validar antes de invitar)
- Audit log para acciones sensibles (opcional Fase 2)
1.4 Nuevas Páginas y Rutas
Sección titulada «1.4 Nuevas Páginas y Rutas»Rutas de gestión de organización:
/org/:slug→ Dashboard principal de la organización/org/:slug/members→ Gestión de miembros y roles/org/:slug/teams→ Gestión de equipos/org/:slug/courses→ Catálogo de cursos (propios + públicos)/org/:slug/analytics→ Analytics y reportes (admins)/org/:slug/settings→ Configuración (SSO, billing, etc.)
Rutas de equipo:
/team/:teamId→ Dashboard del equipo/team/:teamId/progress→ Progreso detallado de miembros
Rutas de marketing B2B:
/teams→ Landing page para empresas/teams/pricing→ Pricing específico B2B/teams/demo→ Request demo form
Fase 2: Dashboard de Managers (2 semanas)
Sección titulada «Fase 2: Dashboard de Managers (2 semanas)»2.1 Features del Dashboard
Sección titulada «2.1 Features del Dashboard»Vista de equipo:
- Lista de miembros con foto, nombre, rol
- Progreso por curso (%) con barra visual
- Quizzes: aprobados ✅ / fallados ❌ / pendientes ⏳
- Última actividad (fecha)
- Filtros: por equipo, por curso, por estado
Analytics:
- Gráfico de completación semanal (ApexCharts)
- Tiempo promedio por curso
- Cursos más/menos completados
- Empleados top performers vs rezagados
- Exportar a CSV
Notificaciones:
- Alertas cuando alguien falla quiz 3+ veces
- Recordatorios de cursos con deadline próximo
- Certificados generados
Fase 3: Features Avanzadas (3-4 semanas)
Sección titulada «Fase 3: Features Avanzadas (3-4 semanas)»3.1 Asignación Forzosa de Cursos
Sección titulada «3.1 Asignación Forzosa de Cursos»model Enrollment { // ... campos existentes ...
isRequired Boolean @default(false) dueDate DateTime? completionReminders DateTime[] // Fechas de recordatorios enviados}Lógica:
- Manager asigna curso a equipo con
isRequired: trueydueDate - Sistema crea
Enrollmentautomático para cada miembro - Email de notificación a empleados
- Recordatorios automáticos (7 días antes, 3 días antes, día de)
- Dashboard muestra empleados con cursos vencidos en rojo
3.2 Bulk User Import
Sección titulada «3.2 Bulk User Import»export const importUsersFromCSV: ImportUsersFromCSV = async ( { organizationId, csvData }, context) => { // Parse CSV: name, email, role, team // Validar emails // Crear usuarios si no existen // Crear OrganizationMember // Agregar a equipos // Enviar invitaciones};Formato CSV:
name,email,role,teamJuan Pérez,juan@empresa.com,MEMBER,VentasMaría García,maria@empresa.com,MANAGER,Ventas3.3 SSO/SAML (Solo Enterprise)
Sección titulada «3.3 SSO/SAML (Solo Enterprise)»Integración con Wasp Auth:
app TalentBricksAI { auth: { userEntity: User, methods: { email: {}, google: {}, github: {}, saml: { // Nuevo configFn: import { getSAMLConfig } from "@src/auth/saml" } } }}Providers soportados:
- Okta
- Azure AD
- Google Workspace
- OneLogin
Esfuerzo: 2-3 semanas + testing con clientes enterprise
💰 Modelo de Pricing Sugerido
Sección titulada «💰 Modelo de Pricing Sugerido»Plan Individual (B2C - actual)
Sección titulada «Plan Individual (B2C - actual)»- Free: 3 cursos gratis
- Pro ($29/mes): Acceso a todos los cursos
- Annual ($290/año): -20% descuento
Plan Teams (B2B - nuevo)
Sección titulada «Plan Teams (B2B - nuevo)»- Teams 10 ($199/mes): Hasta 10 empleados, cursos ilimitados
- Teams 50 ($899/mes): Hasta 50 empleados + analytics básicos
- Teams 100 ($1,699/mes): Hasta 100 empleados + analytics avanzados
Plan Enterprise (B2B - nuevo)
Sección titulada «Plan Enterprise (B2B - nuevo)»- Enterprise (Custom pricing):
- Seats ilimitados
- SSO/SAML
- Soporte prioritario
- Onboarding personalizado
- Cursos custom a la medida
- Dedicated success manager
Implementación técnica:
// Stripe productsconst PLANS = { "teams-10": { seats: 10, price: 19900 }, // $199.00 "teams-50": { seats: 50, price: 89900 }, // $899.00 "teams-100": { seats: 100, price: 169900 }, // $1,699.00 enterprise: { seats: -1, price: null }, // Custom};📊 Estimaciones de Tiempo
Sección titulada «📊 Estimaciones de Tiempo»MVP (Fase 1) - 4 a 6 semanas
Sección titulada «MVP (Fase 1) - 4 a 6 semanas»| Tarea | Tiempo estimado | Prioridad |
|---|---|---|
| Schema DB (modelos Organization, Team, etc.) | 3-4 días | 🔴 Crítica |
| Migrations + seed data | 1 día | 🔴 Crítica |
| Operaciones backend (queries/actions) | 1 semana | 🔴 Crítica |
| UI: Organization dashboard | 1 semana | 🔴 Crítica |
| UI: Team management | 3-4 días | 🔴 Crítica |
| UI: Invite users + roles | 2-3 días | 🔴 Crítica |
| Cursos privados (organizationId) | 2 días | 🔴 Crítica |
| Stripe: planes Teams | 2-3 días | 🟡 Alta |
| Testing E2E | 2-3 días | 🟡 Alta |
| Documentación | 2 días | 🟡 Alta |
TOTAL FASE 1: 4-6 semanas (1 dev full-time)
Dashboard de Managers (Fase 2) - 2 semanas
Sección titulada «Dashboard de Managers (Fase 2) - 2 semanas»| Tarea | Tiempo estimado |
|---|---|
| Analytics queries (progreso, quizzes) | 3 días |
| UI: Dashboard con gráficos | 4 días |
| Exportar a CSV | 1 día |
| Notificaciones para managers | 2 días |
Features Avanzadas (Fase 3) - 3-4 semanas
Sección titulada «Features Avanzadas (Fase 3) - 3-4 semanas»| Tarea | Tiempo estimado |
|---|---|
| Asignación forzosa + deadlines | 1 semana |
| Recordatorios automáticos | 2-3 días |
| Bulk user import (CSV) | 3-4 días |
| SSO/SAML setup | 2-3 semanas |
🚀 Plan de Go-to-Market
Sección titulada «🚀 Plan de Go-to-Market»Validación temprana (Antes de implementar)
Sección titulada «Validación temprana (Antes de implementar)»-
Entrevistas con clientes potenciales (2-3 empresas):
- Talento Para Ti (Laura/Winny caso de uso)
- 2-3 empresas medianas (50-200 empleados)
- Validar: pricing, features must-have, dealbreakers
-
Landing page de Teams (1 semana):
/teamscon propuesta de valor- Formulario “Request Demo”
- Validar interés antes de implementar
Lanzamiento MVP (Después de Fase 1)
Sección titulada «Lanzamiento MVP (Después de Fase 1)»-
Beta privado (5-10 empresas):
- 3 meses gratis
- Feedback directo
- Iterar rápido
-
Landing page completa:
- Casos de uso por industria
- Testimonios de beta testers
- Demo interactivo
-
Marketing:
- LinkedIn Ads (B2B)
- Cold outreach a HR/L&D managers
- Partnerships con consultoras de capacitación
🎯 Métricas de Éxito
Sección titulada «🎯 Métricas de Éxito»Fase MVP (3 meses post-lanzamiento)
Sección titulada «Fase MVP (3 meses post-lanzamiento)»- ✅ 5+ empresas en plan Teams
- ✅ 200+ empleados usando la plataforma
- ✅ NPS > 40 (clientes B2B)
- ✅ <5% churn mensual
- ✅ $5k+ MRR de planes Teams
6 meses
Sección titulada «6 meses»- ✅ 20+ empresas
- ✅ 1,000+ empleados
- ✅ 1-2 clientes Enterprise
- ✅ $20k+ MRR
12 meses
Sección titulada «12 meses»- ✅ 50+ empresas
- ✅ 5,000+ empleados
- ✅ 5+ clientes Enterprise
- ✅ $50k+ MRR
- ✅ Break-even en B2B
⚠️ Riesgos y Mitigaciones
Sección titulada «⚠️ Riesgos y Mitigaciones»| Riesgo | Impacto | Probabilidad | Mitigación |
|---|---|---|---|
| Complejidad técnica subestimada | Alto | Media | Fase 1 super enfocada (solo multi-tenancy básico) |
| Pricing muy bajo/alto | Alto | Alta | Validar con 5+ empresas antes de fijar |
| Canibalizacion B2C | Medio | Baja | Messaging claro: Teams ≠ Individual |
| Feature creep | Alto | Alta | Roadmap estricto: MVP → Feedback → Iterar |
| Competencia (Udemy Business, etc.) | Alto | Alta | Diferenciador: cursos custom + industria específica |
📝 Próximos Pasos
Sección titulada «📝 Próximos Pasos»Acción Inmediata (Esta semana)
Sección titulada «Acción Inmediata (Esta semana)»- ✅ Decisión estratégica: ¿Misma marca o nueva?
- ⏳ Validación con Talento Para Ti: Entrevista con Laura/Winny
- ¿Cuántos empleados capacitarían?
- ¿Qué cursos necesitan? (productos, ventas, procesos)
- ¿Budget aproximado?
- ¿Qué features son must-have vs nice-to-have?
Semana 2-3 (Si validación positiva)
Sección titulada «Semana 2-3 (Si validación positiva)»-
⏳ Landing page
/teams(1 semana)- Propuesta de valor
- Casos de uso
- Formulario demo
-
⏳ Entrevistas con 2-3 empresas más (1 semana)
- Validar pricing
- Priorizar features
Mes 2 (Si hay interés confirmado)
Sección titulada «Mes 2 (Si hay interés confirmado)»- ⏳ Implementar Fase 1 - MVP Multi-Tenancy (4-6 semanas)
- Schema DB
- Operations
- UI básica
🔗 Referencias
Sección titulada «🔗 Referencias»-
Competencia:
- Udemy Business: https://business.udemy.com/
- LinkedIn Learning: https://learning.linkedin.com/
- Coursera for Business: https://www.coursera.org/business
-
Pricing de referencia:
- Udemy Business: $360/año por empleado ($30/mes)
- LinkedIn Learning: $300/año por empleado
- Coursera: $400/año por empleado
-
SaaS B2B Benchmarks:
- Churn mensual aceptable: <5%
- Time to value: <30 días
- CAC payback: <12 meses
- NPS target: >40
📞 Contacto para Discusión
Sección titulada «📞 Contacto para Discusión»Preguntas clave para resolver:
- ✅ ¿Viabilidad técnica? → SÍ, 90% del código ya existe
- ⏳ ¿Misma marca o nueva? → Recomendación: Misma marca
- ⏳ ¿Pricing? → Pendiente de validar
- ⏳ ¿MVP en cuánto tiempo? → 4-6 semanas
- ⏳ ¿Primer cliente beta? → Talento Para Ti (Laura/Winny)
🎨 Experiencia de Usuario por Rol
Sección titulada «🎨 Experiencia de Usuario por Rol»Flujo del Admin de Empresa (Organization Owner/Admin)
Sección titulada «Flujo del Admin de Empresa (Organization Owner/Admin)»1. Onboarding inicial (First-time setup)
Sección titulada «1. Onboarding inicial (First-time setup)»1. Crear organización → Formulario simple: ✓ Nombre de la empresa ✓ Slug (ej: talento-para-ti) ✓ Logo (opcional) ✓ Dominio corporativo (ej: @talento.com) - para auto-signup
2. Seleccionar plan → Pricing page: ✓ Teams 10 / Teams 50 / Teams 100 / Enterprise ✓ Trial 14 días gratis (no requiere tarjeta) ✓ Upgrade anytime
3. Invitar equipo → Tres opciones: ✓ Invitar por email (uno a uno) ✓ Importar CSV masivo ✓ Link de auto-registro (si dominio verificado)
4. Tour guiado (onboarding wizard): ✓ Crear primer equipo ✓ Asignar primer curso (público o crear custom) ✓ Ver dashboard de progreso2. Dashboard principal (/org/:slug)
Sección titulada «2. Dashboard principal (/org/:slug)»Layout:
┌─────────────────────────────────────────────────────────────┐│ [Logo] TalentBricks Talento Para Ti ▼ [Mi perfil] │├─────────────────────────────────────────────────────────────┤│ Sidebar: ││ 📊 Dashboard ││ 👥 Miembros (25/50) ││ 👫 Equipos (3) ││ 📚 Cursos (12 asignados) ││ 📈 Analytics ││ ⚙️ Configuración ││ 💳 Billing │├─────────────────────────────────────────────────────────────┤│ Main Content: ││ ││ Resumen General ││ ┌─────────────┬─────────────┬─────────────┬─────────────┐ ││ │ 25 Usuarios │ 12 Cursos │ 87% Compl. │ 45 Certifs. │ ││ └─────────────┴─────────────┴─────────────┴─────────────┘ ││ ││ Actividad Reciente (últimos 7 días) ││ [Gráfico de barras - Apex Charts] ││ ││ Cursos con mayor progreso ↗ ││ ✅ Fundamentos de Data Engineering 95% (19/20) ││ ⏳ Python para Análisis de Datos 60% (12/20) ││ ❌ Machine Learning Básico 30% (6/20) ││ ││ Alertas y Notificaciones ││ ⚠️ 3 empleados con cursos vencidos ││ ⚠️ Juan Pérez ha fallado quiz 3 veces ││ ✅ María completó certificación │└─────────────────────────────────────────────────────────────┘Features clave:
- Switch rápido entre organizaciones (si el usuario pertenece a varias)
- Acceso directo a su cuenta personal (cursos individuales)
- Quick actions: “Invitar usuario”, “Crear equipo”, “Asignar curso”
3. Gestión de miembros (/org/:slug/members)
Sección titulada «3. Gestión de miembros (/org/:slug/members)»Tabla interactiva:
interface MemberRow { avatar: string; name: string; email: string; role: "OWNER" | "ADMIN" | "MANAGER" | "MEMBER"; teams: string[]; // ["Ventas", "Operaciones"] coursesAssigned: number; coursesCompleted: number; lastActive: Date; actions: ["Editar rol", "Ver progreso", "Remover"];}Filtros:
- Por rol
- Por equipo
- Por estado de cursos (completados / en progreso / vencidos)
- Búsqueda por nombre/email
Bulk actions:
- Asignar curso a múltiples usuarios
- Cambiar equipo
- Enviar recordatorio
- Exportar a CSV
Flujo del Manager de Equipo (Team Manager)
Sección titulada «Flujo del Manager de Equipo (Team Manager)»Dashboard de equipo (/team/:teamId)
Sección titulada «Dashboard de equipo (/team/:teamId)»Vista principal:
Equipo: Ventas (12 miembros)
Cursos asignados:┌───────────────────────────────────┬──────────┬────────────┐│ Curso │ Progreso │ Deadline │├───────────────────────────────────┼──────────┼────────────┤│ Técnicas de Venta Consultiva │ 75% │ 15 Feb ││ CRM y Gestión de Clientes │ 45% │ 28 Feb ││ Productos TalentBricks │ 90% │ 10 Feb ✅ │└───────────────────────────────────┴──────────┴────────────┘
Progreso individual:┌──────────────┬───────────┬──────────┬─────────────┐│ Miembro │ Curso 1 │ Curso 2 │ Curso 3 │├──────────────┼───────────┼──────────┼─────────────┤│ Juan Pérez │ 100% ✅ │ 60% ⏳ │ 95% ⏳ ││ María García │ 80% ⏳ │ 100% ✅ │ 100% ✅ ││ Carlos López │ 30% ⚠️ │ 20% ⚠️ │ 50% ⏳ │└──────────────┴───────────┴──────────┴─────────────┘
⚠️ Carlos López está rezagado - última actividad hace 8 días[Botón: Enviar recordatorio]Permisos del Manager:
- ✅ Ver progreso de su equipo
- ✅ Asignar cursos a su equipo
- ✅ Enviar recordatorios
- ✅ Exportar reportes
- ❌ No puede cambiar roles
- ❌ No puede ver otros equipos
- ❌ No puede gestionar billing
Flujo del Empleado (Member)
Sección titulada «Flujo del Empleado (Member)»Vista del empleado (/dashboard o /my-learning)
Sección titulada «Vista del empleado (/dashboard o /my-learning)»Experiencia híbrida B2B + B2C:
Mis Cursos
Tabs:[Asignados por mi empresa] [Cursos públicos] [Completados]
━━━ Asignados por mi empresa (3) ━━━
┌─────────────────────────────────────────────────┐│ 🔴 OBLIGATORIO - Vence en 5 días ││ ││ Productos y Servicios de TalentBricks ││ Asignado por: Equipo Ventas ││ ││ Progreso: ████████░░ 80% (8/10 lecciones) ││ Quiz: ❌ 2/3 intentos usados ││ ││ [Continuar curso →] │└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐│ ⏳ Opcional - Vence en 20 días ││ ││ CRM y Gestión de Clientes ││ Asignado por: María García (Manager) ││ ││ Progreso: ████░░░░░░ 40% (4/10 lecciones) ││ ││ [Continuar curso →] │└─────────────────────────────────────────────────┘
━━━ Cursos públicos (explorables) ━━━
[Catálogo completo de cursos TalentBricks...]Notificaciones destacadas:
- 🔴 Curso obligatorio vence en 5 días
- ⚠️ Quiz fallado - 1 intento restante
- ✅ ¡Certificado disponible! [Descargar]
- 📧 Recordatorio de tu manager
Beneficio clave: El empleado puede tomar cursos de la empresa Y cursos personales en la misma plataforma (upsell opportunity).
📤 Creación de Contenido Custom
Sección titulada «📤 Creación de Contenido Custom»¿Cómo las empresas suben sus propios entrenamientos?
Sección titulada «¿Cómo las empresas suben sus propios entrenamientos?»Opción 1: Interfaz self-service (MVP)
Sección titulada «Opción 1: Interfaz self-service (MVP)»Flujo para Admin de Empresa:
1. /org/:slug/courses → [+ Crear curso custom]
2. Formulario similar al admin público: ✓ Título ✓ Descripción ✓ Categoría ✓ Dificultad ✓ Visibilidad: "Solo mi organización" 🔒
3. Agregar lecciones: ✓ Título de lección ✓ Contenido: - Video (upload a S3 o YouTube URL) - Texto enriquecido (TipTap editor) - PDFs descargables - Links externos
4. Agregar quiz (opcional): ✓ Misma interfaz que admin público ✓ Configurar % aprobación ✓ Intentos permitidos
5. Publicar curso: ✓ Preview ✓ Asignar a equipos ✓ Marcar como obligatorioValidación de videos:
// Permitir múltiples fuentes de videotype VideoSource = | { type: "youtube"; url: string } | { type: "s3"; key: string } // Upload directo a S3 | { type: "vimeo"; url: string } | { type: "wistia"; url: string }; // Popular en B2BLímites por plan:
const LIMITS = { "teams-10": { customCourses: 3, videoStorage: 5 * 1024 * 1024 * 1024, // 5 GB }, "teams-50": { customCourses: 10, videoStorage: 25 * 1024 * 1024 * 1024, // 25 GB }, "teams-100": { customCourses: 25, videoStorage: 100 * 1024 * 1024 * 1024, // 100 GB }, enterprise: { customCourses: -1, // Ilimitado videoStorage: -1, // Ilimitado },};Opción 2: White-glove service (Enterprise)
Sección titulada «Opción 2: White-glove service (Enterprise)»Para clientes Enterprise:
- Kickoff call con customer success manager
- Cliente envía materiales (PPTs, videos, documentos)
- TalentBricks convierte a curso estructurado
- Review y ajustes
- Publicación
Pricing: $2,500 - $5,000 por curso custom (one-time fee)
🔌 Integraciones Empresariales
Sección titulada «🔌 Integraciones Empresariales»Fase 1 (MVP) - Webhooks básicos
Sección titulada «Fase 1 (MVP) - Webhooks básicos»// Permitir a empresas recibir eventosenum WebhookEvent { USER_ENROLLED = 'user.enrolled', USER_COMPLETED_LESSON = 'user.completed_lesson', USER_COMPLETED_COURSE = 'user.completed_course', USER_PASSED_QUIZ = 'user.passed_quiz', USER_FAILED_QUIZ = 'user.failed_quiz', CERTIFICATE_ISSUED = 'certificate.issued',}
// Endpoint de la empresa recibe:{ event: 'user.completed_course', organizationId: 'org_123', data: { userId: 'user_456', courseId: 789, completedAt: '2026-02-20T10:30:00Z', certificateUrl: 'https://...', }}Use case: Sincronizar con HRIS interno, actualizar records de capacitación.
Fase 2 - Integraciones nativas
Sección titulada «Fase 2 - Integraciones nativas»Slack / Microsoft Teams
Sección titulada «Slack / Microsoft Teams»Notificaciones automáticas:
🎉 María García completó "Fundamentos de Data Engineering"📊 Progreso del equipo Ventas: 87% (+5% esta semana)⚠️ 3 empleados tienen cursos vencidosBot commands:
/talentbricks stats team Ventas/talentbricks remind @juan curso-data-engineering/talentbricks leaderboardHRIS / HR Systems (Enterprise)
Sección titulada «HRIS / HR Systems (Enterprise)»Integraciones:
- BambooHR
- Workday
- ADP
- SAP SuccessFactors
Sync bidireccional:
- Importar empleados automáticamente
- Sincronizar roles y departamentos
- Exportar certificaciones al perfil del empleado
Calendar (Google / Outlook)
Sección titulada «Calendar (Google / Outlook)»Features:
- Agregar deadlines de cursos al calendario
- Recordatorios automáticos
- Bloquear tiempo para estudiar
SSO/SAML (Enterprise)
Sección titulada «SSO/SAML (Enterprise)»Providers soportados:
- Okta
- Azure AD (Microsoft Entra)
- Google Workspace
- OneLogin
- Auth0
Implementación técnica:
import { SAMLConfig } from "wasp/server";
export async function getSAMLConfig(organizationId: string): Promise<SAMLConfig> { const org = await prisma.organization.findUnique({ where: { id: organizationId }, select: { ssoProvider, ssoMetadataUrl, ssoCertificate }, });
if (!org?.ssoEnabled) { throw new Error("SSO not enabled for this organization"); }
return { entryPoint: org.ssoMetadataUrl, cert: org.ssoCertificate, issuer: `talentbricks-${organizationId}`, };}🔒 Seguridad y Compliance
Sección titulada «🔒 Seguridad y Compliance»Requisitos para clientes Enterprise
Sección titulada «Requisitos para clientes Enterprise»1. SOC 2 Type II Compliance
Sección titulada «1. SOC 2 Type II Compliance»¿Qué es? Certificación de que TalentBricks maneja datos de forma segura.
Requerido para: Vender a empresas >500 empleados (banking, healthcare, etc.)
Esfuerzo:
- Contratar auditor (Vanta, Drata, etc.)
- Implementar controles de seguridad
- 3-6 meses de evidencia
- ~$20k-$50k costo inicial
Timing: Solo si cerramos 2+ deals Enterprise (>$50k/año cada uno)
2. GDPR Compliance (Ya implementado parcialmente)
Sección titulada «2. GDPR Compliance (Ya implementado parcialmente)»Checklist:
- ✅ Consentimiento explícito (privacy policy)
- ✅ Right to deletion (delete account)
- ⏳ Data export (agregar endpoint
/api/export-my-data) - ⏳ Data Processing Agreement (DPA) para B2B
- ⏳ Cookie banner y gestión de cookies
3. Seguridad de datos
Sección titulada «3. Seguridad de datos»Features necesarias:
// Audit log para acciones sensiblesmodel AuditLog { id String @id @default(uuid()) createdAt DateTime @default(now())
organizationId String organization Organization @relation(fields: [organizationId], references: [id])
userId String user User @relation(fields: [userId], references: [id])
action String // "deleted_user", "changed_role", "exported_data" targetType String // "User", "Course", "Organization" targetId String metadata Json? // Detalles adicionales
ipAddress String? userAgent String?
@@index([organizationId]) @@index([userId])}Encriptación:
- ✅ SSL/TLS en tránsito (HTTPS)
- ✅ Passwords hasheados (bcrypt via Wasp)
- ⏳ Datos sensibles encriptados en DB (PII, videos privados)
- ⏳ S3 buckets con encriptación server-side (AES-256)
Access control:
- ✅ Row-level security (RLS) - ya verificamos
userIden queries - ⏳ Agregar verificación de
organizationIden todas las operaciones B2B - ⏳ Rate limiting (prevenir DDoS)
4. Backups y disaster recovery
Sección titulada «4. Backups y disaster recovery»Estrategia:
- PostgreSQL automated backups (Railway/Fly.io)
- Retention: 7 días (prod), 3 días (staging)
- S3 versioning para videos
- RTO (Recovery Time Objective): <4 horas
- RPO (Recovery Point Objective): <1 hora
📊 Análisis Competitivo Profundo
Sección titulada «📊 Análisis Competitivo Profundo»Matriz de comparación
Sección titulada «Matriz de comparación»| Feature | TalentBricks | Udemy Business | Coursera | LinkedIn Learning | 360Learning |
|---|---|---|---|---|---|
| Precio por empleado/año | $240 - $420 | $360 | $400 | $300 | $480 |
| Cursos públicos | ✅ Data/AI | ✅ General | ✅ Tech | ✅ Business | ⚠️ Limitado |
| Cursos custom | ✅ | ❌ | ❌ | ❌ | ✅ |
| Quizzes/evaluación | ✅ | ✅ | ✅ | ⚠️ Básico | ✅ |
| Certificados | ✅ | ✅ | ✅ Universidad | ⚠️ Básico | ✅ |
| Analytics por equipo | ✅ | ✅ | ✅ | ✅ | ✅ |
| SSO/SAML | ⏳ Enterprise | ✅ | ✅ | ✅ | ✅ |
| Móvil (app) | ⏳ PWA | ✅ | ✅ | ✅ | ✅ |
| Español nativo | ✅ | ⚠️ Subtítulos | ⚠️ Subtítulos | ⚠️ Subtítulos | ❌ |
| Soporte LATAM | ✅ | ❌ | ❌ | ❌ | ❌ |
Ventajas competitivas de TalentBricks
Sección titulada «Ventajas competitivas de TalentBricks»1. Nicho vertical: Data Engineering & AI
Sección titulada «1. Nicho vertical: Data Engineering & AI»Diferenciador: No competir con todo el mercado, dominar un vertical.
Mensajes de marketing:
“El LMS especializado en Data Engineering y AI para empresas tech de LATAM”
Target market:
- Consultoras de tecnología (100-500 empleados)
- Software houses
- Startups tech en crecimiento
- Equipos de data/analytics en empresas grandes
2. Contenido custom + catálogo público
Sección titulada «2. Contenido custom + catálogo público»Ventaja única: Híbrido.
- Udemy/Coursera: Solo catálogo público (no custom)
- 360Learning: Solo custom (catálogo público muy limitado)
- TalentBricks: Lo mejor de ambos mundos
Use case ganador:
Empresa puede:1. Crear curso "Productos de [Empresa]" (custom)2. Asignar "Python para Data Science" (catálogo público)3. Agregar "SQL Avanzado" (catálogo público)
→ Solución completa sin contratar dos plataformas3. Pricing competitivo
Sección titulada «3. Pricing competitivo»TalentBricks Teams 10:
- $199/mes ÷ 10 empleados = $19.90 por empleado/mes = $240/año
Udemy Business:
- $30 por empleado/mes = $360/año
Diferencia: 33% más barato + contenido custom incluido.
4. Soporte y contenido en español (LATAM)
Sección titulada «4. Soporte y contenido en español (LATAM)»Pain point del mercado:
- Coursera/LinkedIn Learning: Todo en inglés (o subtítulos mal traducidos)
- Empresas LATAM necesitan contenido en español de calidad
TalentBricks:
- ✅ Interfaz ES/EN nativa
- ✅ Cursos en español (voz humana, no subtítulos)
- ✅ Soporte timezone LATAM (no India/Filipinas)
- ✅ Facturación en moneda local (opcional: MXN, COP, etc.)
5. Speed to value
Sección titulada «5. Speed to value»Onboarding:
- Udemy Business: 2-3 semanas (enterprise sales cycle)
- TalentBricks: Self-service signup + 14 días trial = usar en <1 hora
🚀 Go-to-Market Strategy Expandido
Sección titulada «🚀 Go-to-Market Strategy Expandido»Segmentación de mercado
Sección titulada «Segmentación de mercado»1. Segmento Primary: Tech companies 50-200 empleados
Sección titulada «1. Segmento Primary: Tech companies 50-200 empleados»Perfil:
- Software houses, consultoras tech
- Tienen equipos de data/engineering
- Presupuesto training: $10k-$50k/año
- Decision maker: CTO o VP Engineering
Canales:
- LinkedIn Ads (target: CTOs, Engineering Managers)
- Partnerships con aceleradoras (500 Startups, Y Combinator LATAM)
- Eventos tech (conferencias, meetups)
Mensaje:
“Capacita a tu equipo de data engineering en 1/3 del tiempo con TalentBricks Teams”
2. Segmento Secondary: Empresas tradicionales digitalizándose
Sección titulada «2. Segmento Secondary: Empresas tradicionales digitalizándose»Perfil:
- Retail, bancos, seguros con transformación digital
- 200-1000 empleados
- Necesitan upskilling en data/AI
- Decision maker: CHRO o Head of L&D
Canales:
- Cold outreach a HR
- Partnerships con consultoras de transformación digital
- Webinars educativos
Mensaje:
“Prepara a tu equipo para la era del dato: Python, SQL, AI desde cero”
Proceso de ventas
Sección titulada «Proceso de ventas»Self-service (Teams 10-50)
Sección titulada «Self-service (Teams 10-50)»1. Landing /teams → Formulario "Empezar trial 14 días"2. Email de bienvenida + onboarding wizard3. Trial 14 días (sin tarjeta)4. Día 7: Email "¿Necesitas ayuda?"5. Día 12: Email "Trial termina en 2 días - ¿Listo para upgrade?"6. Conversión → Stripe self-checkoutMétricas:
- Trial → Paid conversion target: >20%
- Time to first value: <24 horas
Enterprise sales (Teams 100+)
Sección titulada «Enterprise sales (Teams 100+)»1. Demo request → Form capture2. Sales call (30 min) - Discovery3. Custom proposal + pricing4. Pilot con 10-20 usuarios (1 mes)5. Negotiation + contratos6. Onboarding dedicado7. Quarterly business reviews (QBR)Ciclo de venta: 1-3 meses
Deal size: $20k-$100k/año
Marketing de contenido
Sección titulada «Marketing de contenido»Blog topics (SEO + thought leadership):
- “Cómo capacitar vendedores con quizzes interactivos”
- “LMS vs plataformas de cursos: ¿Cuál necesita tu empresa?”
- “Caso de éxito: Cómo [Empresa] redujo tiempo de onboarding 50%”
- “Guía: Crear tu primer curso corporativo en 1 hora”
- “ROI de capacitación: Cálculo y métricas clave”
Lead magnets:
- eBook: “Guía definitiva de L&D para empresas tech”
- Template: “Checklist de onboarding técnico”
- Calculator: “ROI de capacitación corporativa”
📈 Proyecciones Financieras
Sección titulada «📈 Proyecciones Financieras»Escenario conservador (12 meses)
Sección titulada «Escenario conservador (12 meses)»Asunciones:
- Lanzamiento: Marzo 2026
- Marketing budget: $2k/mes (LinkedIn Ads + contenido)
- CAC (Customer Acquisition Cost): $800 por cliente
- Churn: 5% mensual (promedio B2B SaaS)
Proyección:
| Mes | Nuevos clientes | Total clientes | Empleados | MRR | Costos | Profit |
|---|---|---|---|---|---|---|
| 1 | 2 (beta) | 2 | 30 | $400 | $500 | -$100 |
| 3 | 3 | 8 | 150 | $1,600 | $800 | $800 |
| 6 | 5 | 22 | 450 | $4,800 | $1,200 | $3,600 |
| 12 | 8 | 50 | 1,200 | $12,000 | $2,000 | $10,000 |
ARR (Annual Recurring Revenue) en 12 meses: $144k
Break-even: Mes 8
Escenario optimista (12 meses)
Sección titulada «Escenario optimista (12 meses)»Con 1-2 clientes Enterprise:
| Mes 6 | 25 clientes Teams + 1 Enterprise | $8,500 MRR | | Mes 12 | 60 clientes Teams + 2 Enterprise | $22,000 MRR |
ARR en 12 meses: $264k
✅ Checklist de Pre-lanzamiento
Sección titulada «✅ Checklist de Pre-lanzamiento»Antes de implementar Fase 1, validar:
Validación de mercado
Sección titulada «Validación de mercado»- Entrevista con Talento Para Ti (Laura/Winny)
- 3+ entrevistas con empresas objetivo
- Landing page
/teamscon 20+ form submissions - Pricing validado (5+ empresas dicen “sí pagaría X”)
Preparación técnica
Sección titulada «Preparación técnica»- Wasp actualizado a última versión estable
- S3 configurado para videos custom (staging + prod)
- Stripe configurado para planes Teams
- Emails transaccionales (invitaciones, recordatorios)
Legal y compliance
Sección titulada «Legal y compliance»- Terms of Service actualizados (B2B addendum)
- Privacy Policy actualizado (multi-tenancy)
- Data Processing Agreement (DPA template)
- Contrato Enterprise (template)
Documentación
Sección titulada «Documentación»- Guía de onboarding para admins
- Video tutorial: “Crea tu primera organización”
- FAQ B2B
- API docs (webhooks)
🎯 TL;DR - Guía de Decisión Rápida
Sección titulada «🎯 TL;DR - Guía de Decisión Rápida»¿Debemos hacerlo?
Sección titulada «¿Debemos hacerlo?»SÍ, si:
- ✅ Validamos demanda con 2-3 empresas (incluida Talento Para Ti)
- ✅ Al menos 1 empresa se compromete a trial de 14 días
- ✅ Presupuesto confirmado: $200-1000/mes por cliente
- ✅ Podemos dedicar 4-6 semanas a implementar MVP
NO (o posponer), si:
- ❌ No hay interés real de empresas
- ❌ Pricing es inviable (<$100/mes no vale la pena)
- ❌ No podemos dedicar recursos por 6+ semanas
- ❌ B2C actual está creciendo muy rápido (mejor enfocarnos ahí primero)
Roadmap Visual Simplificado
Sección titulada «Roadmap Visual Simplificado»┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐│ SEMANA 1 │ │ SEMANAS 2-3 │ │ SEMANAS 4-7 │ │ MES 3-6 ││ │ │ │ │ │ │ ││ Validación │→ │ Landing / │→ │ MVP Fase 1 │→ │ Iteración ││ │ │ teams │ │ │ │ │└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
✓ Entrevistar ✓ Diseñar ✓ Multi-tenancy ✓ Dashboard Talento Para Ti landing page DB schema managers✓ 2-3 empresas ✓ Pricing page ✓ Operations ✓ Analytics más ✓ Demo form ✓ UI básica ✓ Features Fase 2✓ Validar pricing ✓ Deploy ✓ Onboarding ✓ Beta con 5-10✓ Decidir GO/ ✓ Ads LinkedIn ✓ Stripe Teams empresas NO-GO campaña ✓ Testing E2E ✓ DocsDecisiones Críticas a Tomar AHORA
Sección titulada «Decisiones Críticas a Tomar AHORA»| Decisión | Opción A (Recomendado) | Opción B (Alternativa) |
|---|---|---|
| Marca | Misma (TalentBricks Teams) | Nueva (TalentBricks Enterprise) |
| Pricing | Seat-based ($19-30/seat) | Flat rate + overage |
| Target inicial | Empresas tech 50-200 empleados | Cualquier industria |
| MVP scope | Solo multi-tenancy básico | Multi-tenancy + analytics |
| Go-to-market | Self-service + Enterprise | Solo Enterprise sales |
Recomendación: Columna A (más rápido, menos riesgo)
Números Clave (Recordatorio)
Sección titulada «Números Clave (Recordatorio)»| Métrica | MVP (3 meses) | 6 meses | 12 meses |
|---|---|---|---|
| Clientes B2B | 5-8 | 15-20 | 40-60 |
| Empleados usando | 150-300 | 700-1000 | 2500-4000 |
| MRR B2B | $1.5-3k | $8-15k | $30-50k |
| ARR potencial | $18-36k | $96-180k | $360-600k |
| Break-even | Mes 8-10 | Mes 6 | — |
Risk Mitigation Checklist
Sección titulada «Risk Mitigation Checklist»- Validación de mercado: 3+ entrevistas antes de implementar
- Pricing validado: 2+ empresas dicen “sí pagaría $X”
- Landing /teams live: Captura emails para early access
- MVP super enfocado: Solo Fase 1, nada más
- Trial generoso: 14 días gratis (sin tarjeta)
- Escape hatch: Si no funciona en 6 meses, feature flag off