Correos de Startup (Registro + Ciclo de vida)
Correos enviados durante el registro publico de startups (FS), formulario detallado (FD) y ciclo de vida.
Bienvenida Startup (registro publico)
Asunto: Bienvenido al Ecosistema LPDI — Confirma tu cuenta
FuncionsendStartupWelcomeEmail
Archivoemail.ts
DestinatarioRegistrante de la startup (quien llena el FS publico)
DisparadorSubmit del formulario registro-startup
VariantesNinguna
Follow-up de Score (2 dias post-registro)
Asunto: Aumenta el score de tu perfil en el Ecosistema LPDI
FuncionsendStartupFollowupEmail
Archivoemail.ts
DestinatarioEmail de la startup registrada
DisparadorCron startup-followup (2 dias post-registro, email confirmado, sin followup previo)
VariantesNinguna
Bienvenida CEO de Startup
Asunto: Bienvenido al Sistema LPDI — ${companyName}
FuncionsendCeoWelcomeEmail
Archivoemail.ts
DestinatarioCEO de la startup (cuando su email es diferente al del registrante)
DisparadorensureCeoUser() en ceo.ts, invocado desde submit del FD
2 variantes
- Usuario nuevo: muestra contrasena temporal + boton "Confirmar mi cuenta"
- Usuario existente: boton "Ver mi registro" (sin contrasena)
Nota: Este correo es EXCLUSIVO de startups. Los ICG NO tienen CEO — usan "contacto" (EMAIL-003).
Recordatorio de Confirmacion
Asunto (dia 3): Recordatorio: confirma tu cuenta en el Ecosistema LPDI
Asunto (dia 6): Ultimo aviso: confirma tu cuenta en el Ecosistema LPDI
FuncionsendStartupReminderEmail
Archivoemail.ts
DestinatarioRegistrante de startup que no ha confirmado email
DisparadorCron startup-welcome-reminders (dia 3 y dia 6)
2 variantes
- Dia 3 (suave): recordatorio amigable
- Dia 6 (urgente): banner amarillo "24 horas para confirmar"
Startup Purgada (expirada)
Asunto: El registro de ${companyName} en el Ecosistema LPDI ha expirado
FuncionsendStartupPurgedEmail
Archivoemail.ts
DestinatarioRegistrante de startup purgada
DisparadorCron startup-welcome-reminders dia 8+ y purge-entities
VariantesNinguna
Correos de ICG (Inversionistas, Corporativos, Gestores)
Correos para entidades ICG. Usan "contacto", NUNCA "CEO".
Bienvenida Contacto ICG
Asunto: ${icgName} te ha asignado como contacto en el Ecosistema LPDI
FuncionsendContactWelcomeEmail
Archivoemail.ts
DestinatarioContacto designado del ICG
DisparadorSubmit del FI (registro-icg y dashboard/icg/nuevo)
2 variantes principales + 1 variante de copy
- Usuario nuevo: muestra contrasena temporal + boton "Establecer nueva contrasena"
- Usuario existente: boton "Ver mi registro" (sin contrasena)
- Copy variable (isNewIcg): "se ha registrado" vs "ha actualizado su perfil"
Nota: Este correo dice "contacto de la compania", NUNCA "CEO". Correcto segun decision de Frank.
ICG Purgado (expirado)
Asunto: El registro de ${organizationName} en el Ecosistema LPDI ha expirado
FuncionsendIcgPurgedEmail
Archivoemail.ts
DestinatarioContacto del ICG purgado
DisparadorCron purge-entities
VariantesNinguna
Correos de Equipo (Panel 6 — solo Startups)
Flujo de invitacion, confirmacion y permisos del equipo de startup. Solo startups tienen equipo con CEO.
Invitacion al Equipo
Asunto: ${ceoName} te ha incluido en el equipo de ${companyName} — confirma tu registro
FuncionsendTeamInvitationEmail
Archivoemail-team.ts
DestinatarioMiembro del equipo invitado
DisparadorFD panel 6 submit + cron team-reminders (reenvio)
2 variantes
- Usuario existente: "Ya tienes cuenta en LPDI"
- Usuario nuevo: "Se creara una cuenta para ti"
Bienvenida Miembro CON Edicion
Asunto: Bienvenido al equipo de ${companyName} en LPDI
FuncionsendTeamWelcomeWithEditEmail
Archivoemail-team.ts
DestinatarioMiembro que confirmo con permisos de edicion
DisparadorConfirmacion en /team/confirmar con canEdit=true
VariantesNinguna — copy incluye "tu CEO te otorgo permisos para editar"
Bienvenida Miembro SIN Edicion
Asunto: Bienvenido al equipo de ${companyName} en LPDI
FuncionsendTeamWelcomeNoEditEmail
Archivoemail-team.ts
DestinatarioMiembro que confirmo SIN permisos de edicion
DisparadorConfirmacion en /team/confirmar con canEdit=false
VariantesNinguna — copy incluye "Solo tu CEO puede editar el perfil"
Confirmacion de Rechazo
Asunto: Confirmacion: no haces parte del equipo de ${companyName}
FuncionsendTeamRejectionConfirmationEmail
Archivoemail-team.ts
DestinatarioMiembro que rechazo la invitacion
DisparadorRechazo en /team/confirmar
VariantesOpcionalmente incluye boton "Confirmar mi vinculacion" (reconfirmacion)
Notificacion al CEO: Miembro Acepto
Asunto: ${memberName} acepto la invitacion al equipo de ${companyName}
FuncionsendCeoMemberConfirmationEmail
Archivoemail-team.ts
DestinatarioCEO de la startup (notificacion)
DisparadorMiembro confirma en /team/confirmar
VariantesNinguna
Notificacion al CEO: Miembro Rechazo
Asunto: ${memberName} rechazo la invitacion al equipo de ${companyName}
FuncionsendCeoMemberRejectionEmail
Archivoemail-team.ts
DestinatarioCEO de la startup (notificacion)
DisparadorMiembro rechaza en /team/confirmar
VariantesNinguna
Cambio de Permisos
Asunto: Cambio de permisos en ${companyName}
FuncionsendPermissionChangeEmail
Archivoemail-team.ts
DestinatarioTodos los editores + CEO afectados
DisparadorAPI account/assign-editor
2 variantes
- Otorgar permisos: "Ahora puedes editar el perfil de..."
- Revocar permisos: "Ya no puedes editar el perfil de..."
Correos Generales (aplican a Startup e ICG)
Correos de cuenta y entidad que aplican a ambos tipos de entidad.
Cuenta Eliminada
Asunto: Tu cuenta en el Ecosistema LPDI ha sido eliminada
FuncionsendAccountDeletedEmail
Archivoemail.ts
DestinatarioUsuario que elimino su cuenta
DisparadorAPI account/delete
VariantesNinguna
Entidad Eliminada
Asunto: El registro de ${entityName} ha sido eliminado del Ecosistema LPDI
FuncionsendEntityDeletedEmail
Archivoemail.ts
DestinatarioTodos los asociados a la entidad (startup o ICG)
DisparadorAPI entities/delete
VariantesMuestra subtipo de entidad via ALL_ENTITY_TYPE_LABELS. Informa quien solicito la eliminacion.
Entidad Restaurada
Asunto: ${entityName} ha sido restaurado en el Ecosistema LPDI
FuncionsendEntityRestoredEmail
Archivoemail.ts
DestinatarioAsociados a la entidad restaurada (startup o ICG)
DisparadorAPI entities/restore
VariantesNinguna
Contrasena Actualizada
Asunto: Tu contrasena ha sido actualizada — Ecosistema LPDI
FuncionsendPasswordChangedEmail
Archivoemail.ts
DestinatarioUsuario que cambio su contrasena
DisparadorAPI account/update-password
VariantesNinguna
Correos Automáticos (Cron)
Correos generados y enviados automáticamente por tareas programadas.
Reporte Diario Ecosistema LPDI
Asunto: Reporte diario Ecosistema LPDI — {fecha}
FunciónsendDailyReportEmail
Archivoemail-daily-report.ts
Destinatariocomunidad@lpdi.co
DisparadorCron diario — 6:00 AM Lima (POST /api/cron/daily-report)
AdjuntoCSV ecosistema-lpdi-usuarios-YYYY-MM-DD.csv
Contenido del reporte
- Altas del día: startups, ICGs, usuarios individuales (desglosado)
- Bajas del día: startups, ICGs, usuarios (de profile_deletions_log)
- Acumulado total: todos los activos por tipo con subtotales
- CSV adjunto: Email, Nombre completo, Fecha registro, Tipo usuario
Plantillas Supabase Auth (configuradas en Dashboard)
Estas plantillas se configuran en el dashboard de Supabase, no en codigo. El sistema las dispara automaticamente.
Confirmacion de Email
Asunto: Configurado en Supabase Dashboard (por defecto: "Confirm your signup")
Tipoconfirmation
Disparadorauth.signUp() — registro de nuevas cuentas
Pendiente verificar: Que el subject y body esten personalizados en espanol con branding LPDI.
Recuperacion de Contrasena
Asunto: Configurado en Supabase Dashboard (por defecto: "Reset Your Password")
Tiporecovery
Disparadorauth.resetPasswordForEmail() y auth.admin.generateLink({type:'recovery'})
Importante: Se usa internamente en ceo.ts y registro-icg para enviar link de reset a cuentas creadas automaticamente (CEO de startup y contacto ICG).
Tabla Resumen Completa
| ID |
Asunto |
Tipo |
Destinatario |
Disparador |
Variantes |
| EMAIL-001 |
Bienvenido al Ecosistema LPDI — Confirma tu cuenta |
Startup |
Registrante startup |
FS submit |
0 |
| EMAIL-002 |
Aumenta el score de tu perfil en el Ecosistema LPDI |
Startup |
Email startup |
Cron 2 dias |
0 |
| EMAIL-003 |
${icgName} te ha asignado como contacto en el Ecosistema LPDI |
ICG |
Contacto ICG |
FI submit |
3 |
| EMAIL-004 |
Bienvenido al Sistema LPDI — ${companyName} |
Startup |
CEO startup |
FD submit (ceo.ts) |
2 |
| EMAIL-010 |
Recordatorio / Ultimo aviso: confirma tu cuenta... |
Startup |
Registrante no confirmado |
Cron dia 3 y 6 |
2 |
| EMAIL-011 |
El registro de ${companyName}... ha expirado |
Startup |
Registrante purgado |
Cron dia 8+ |
0 |
| EMAIL-012 |
Tu cuenta en el Ecosistema LPDI ha sido eliminada |
Ambos |
Usuario eliminado |
API delete |
0 |
| EMAIL-013 |
El registro de ${entityName} ha sido eliminado... |
Ambos |
Asociados a entidad |
API delete |
1 |
| EMAIL-014 |
El registro de ${organizationName}... ha expirado |
ICG |
Contacto ICG purgado |
Cron purge |
0 |
| EMAIL-020 |
${entityName} ha sido restaurado en el Ecosistema LPDI |
Ambos |
Asociados a entidad |
API restore |
0 |
| EMAIL-022 |
Tu contrasena ha sido actualizada — Ecosistema LPDI |
Ambos |
Usuario |
API update-password |
0 |
| EMAIL-T01 |
${ceoName} te ha incluido en el equipo... confirma tu registro |
Equipo |
Miembro invitado |
FD panel 6 + cron |
2 |
| EMAIL-T02 |
Bienvenido al equipo de ${companyName} en LPDI |
Equipo |
Miembro CON edicion |
Confirmacion |
0 |
| EMAIL-T03 |
Bienvenido al equipo de ${companyName} en LPDI |
Equipo |
Miembro SIN edicion |
Confirmacion |
0 |
| EMAIL-T04 |
Confirmacion: no haces parte del equipo de ${companyName} |
Equipo |
Miembro que rechazo |
Rechazo |
1 |
| EMAIL-T05 |
${memberName} acepto la invitacion al equipo... |
Equipo |
CEO startup |
Miembro confirma |
0 |
| EMAIL-T06 |
${memberName} rechazo la invitacion al equipo... |
Equipo |
CEO startup |
Miembro rechaza |
0 |
| EMAIL-T07 |
Cambio de permisos en ${companyName} |
Equipo |
Editores + CEO |
API assign-editor |
2 |
| EMAIL-019 |
Reporte diario Ecosistema LPDI — {fecha} |
Cron |
comunidad@lpdi.co |
Cron diario 6AM Lima |
1 |
| AUTH-001 |
Configurado en Supabase Dashboard |
Auth |
Nuevo usuario |
auth.signUp() |
0 |
| AUTH-002 |
Configurado en Supabase Dashboard |
Auth |
Reset password |
auth.resetPasswordForEmail() |
0 |