Propuesta Técnica — Proyecto MGP

Sistema de Captación de Talento
para Red de Tiendas

Automatización end-to-end de solicitudes de empleo vía WhatsApp con formularios progresivos, geolocalización, y seguimiento proactivo mediante plantillas Meta aprobadas.

Fecha: Mayo 2026 Stack: n8n · Chatwoot · PostgreSQL · Next.js Segmento: Retail / Multi-tienda

Diagnóstico del Problema

Lo que el cliente experimenta hoy vs. lo que el sistema entregará

❌ Situación Actual

  • Candidatos abandonan la postulación y regresan días después sin continuidad
  • No existe sistema que valide ni responda automáticamente
  • El talento se pierde por falta de seguimiento oportuno
  • Los postulantes de retail no tienen CV formal — proceso inadecuado
  • Sin centralización: cada tienda maneja su proceso de forma aislada
  • Reclutadores no saben de qué zona/municipio viene el candidato

✅ Con MGP

  • El candidato puede abandonar y retomar exactamente donde se quedó
  • Respuesta automática 24/7 vía bot de WhatsApp
  • Plantillas Meta aprobadas para re-engagement proactivo sin esperar al candidato
  • Formulario conversacional reemplaza el CV — accesible para todos
  • Un solo dashboard centralizado para todas las tiendas del país
  • Captura de departamento, municipio, zona y tienda preferida

Flujo del Candidato

Experiencia completa desde el primer mensaje hasta la convocatoria

1

Inicio de conversación

Candidato escribe al número de WhatsApp de la empresa. El sistema lo identifica por teléfono: si es nuevo, inicia el flujo; si ya tiene una solicitud, retoma desde el avance guardado.

Flow A — Identificación
2

Captación geográfica

Menú interactivo (botones de respuesta rápida de WhatsApp): selección de Departamento → Municipio → Zona/Colonia de residencia.

Flow B — Geolocalización
3

Selección de tienda preferida

Basado en la zona seleccionada, el sistema presenta las tiendas más cercanas. El candidato elige la que más le conviene.

Flow B — Multi-tienda
4

Formulario de solicitud de empleo

Cuestionario paso a paso vía WhatsApp (o link a formulario web): datos personales → DPI → educación → experiencia laboral → disponibilidad → referencias. Cada respuesta se guarda en tiempo real.

Flow C — Formulario progresivo
5

Retorno al formulario (característica clave)

Si el candidato regresa 2 días después: el bot detecta su número, consulta el avance guardado y le envía el link del formulario con todos sus datos pre-llenados para que continúe desde donde paró.

Session persistence · JWT token
6

Confirmación y notificación al reclutador

Al completar el formulario: plantilla Meta de confirmación al candidato + notificación automática al reclutador de la tienda correspondiente en el dashboard.

Flow E — Notificaciones
7

Seguimiento proactivo (sin esperar al candidato)

Para candidatos con formulario incompleto por más de 48h: el sistema envía automáticamente una plantilla Meta aprobada con el link para retomar. No requiere que el candidato escriba primero.

Flow D — Re-engagement · Meta Templates
8

Decisión del reclutador

Desde el dashboard: invitar a entrevista (dispara plantilla Meta) o descartar con motivo. Todo queda registrado en el historial de la solicitud.

Dashboard · Flow F

Característica Clave: Formulario con Retorno

El diferenciador más importante de este sistema para el cliente

🔄 ¿Cómo funciona la continuidad?

Cada solicitud tiene un token JWT de sesión único vinculado al número de teléfono. Al guardar cada respuesta del formulario, el sistema actualiza el campo form_step y el JSONB form_progress en la base de datos.

Cuando el candidato vuelve a escribir (puede ser días después), el bot identifica su número, consulta el avance, y responde: "Hola Juan, tienes una solicitud en progreso. Continúa aquí donde la dejaste: [link]". El formulario web carga automáticamente todos los datos ya capturados.

Si el candidato no vuelve, el Flow D (re-engagement) envía una plantilla Meta aprobada después de 48h de inactividad. Esto es proactivo — el sistema actúa sin esperar.

Plantillas WhatsApp (Meta Approved)

Mensajes proactivos que el sistema puede enviar sin que el candidato escriba primero — requieren aprobación previa de Meta Business

📋 solicitud_recordatorio
Hola {{nombre}}, tienes una solicitud de empleo pendiente de completar. Continúa aquí donde la dejaste: {{link}}

Solo te tomará unos minutos más. ¡No pierdas tu oportunidad!
✅ solicitud_recibida
¡Hola {{nombre}}! Recibimos tu solicitud completa para {{tienda}}.

Nuestro equipo la revisará y nos contactaremos contigo en los próximos días. ¡Gracias por tu interés!
📅 invitacion_entrevista
Hola {{nombre}}, nos da gusto informarte que has sido seleccionado/a para una entrevista.

📍 Tienda: {{tienda}}
📅 Fecha: {{fecha}}
🕐 Hora: {{hora}}

Confirma tu asistencia respondiendo este mensaje.
🚀 captacion_proactiva
Hola {{nombre}}, tenemos oportunidades laborales disponibles en tiendas cerca de {{zona}}.

¿Te interesa conocerlas? Inicia tu solicitud en 5 minutos: {{link}}

Comparativa: Sistema Actual vs. MGP

Qué se replica, qué se adapta, qué es nuevo

AspectoSistema Actual (reclutamiento/)MGP
SegmentoPerfiles TI (DevOps, Backend...)Perfiles retail (tiendas, operativos)
Entrada de datosCV en PDF (upload)Nuevo Formulario conversacional paso a paso
ContinuidadNo — proceso lineal sin retornoNuevo Session persistence + link de retorno
Seguimiento proactivoNo — reactivo al candidatoNuevo Templates Meta, re-engagement automático
GeolocalizaciónNoNuevo Dept / Municipio / Zona / Tienda preferida
Multi-tiendaNoNuevo Catálogo de tiendas, asignación geográfica
Análisis con IAGemini analiza el CVGemini valida coherencia del formulario (opcional)
Orquestaciónn8n (Flows 01-07)n8n (Flows A-F, arquitectura adaptada)
WhatsAppChatwoot + Meta APIChatwoot + Meta API (inbox separado)
DashboardNext.js — pipeline TINext.js — filtros por tienda y región
Stack baseDocker Compose en VPS GCPRéplica en mgp/ (mismo VPS o nuevo)

Arquitectura Técnica

Flows n8n necesarios para el nuevo sistema

🔀

Flow A — Identificación y Enrutamiento

Recibe webhook de Chatwoot. Detecta si el candidato es nuevo o tiene solicitud en progreso. Enruta al flujo correspondiente.

📍

Flow B — Captura Geográfica

Menús interactivos WhatsApp para Departamento → Municipio → Zona → Tienda preferida. Guarda en DB en tiempo real.

📝

Flow C — Formulario Progresivo

Cada pregunta del formulario como nodo n8n. Guarda respuesta, avanza al siguiente paso. Genera link web para datos complejos.

📨

Flow D — Re-engagement Proactivo

Scheduler que detecta solicitudes inactivas >48h. Envía plantilla Meta aprobada con link de retorno. Sin esperar al candidato.

🔔

Flow E — Notificaciones

Alerta al reclutador de la tienda cuando llega un formulario completo. Envía confirmación al candidato vía template Meta.

⚖️

Flow F — Decisión del Reclutador

Webhook desde el dashboard. El reclutador invita a entrevista o descarta. Dispara template Meta correspondiente al candidato.

Esquema de Base de Datos

Tablas principales del sistema MGP — nuevas y específicas para retail

departments
id INT PK
name VARCHAR(100)
-- Catálogo de departamentos
municipalities
id INT PK
department_id INT FK
name VARCHAR(100)
zones
id INT PK
municipality_id INT FK
name VARCHAR(100)
stores
id INT PK
name VARCHAR(200)
department_id INT FK
municipality_id INT FK
zone_id INT FK
address TEXT
active BOOLEAN
applicants
id UUID PK
phone VARCHAR UNIQUE
name VARCHAR(200)
dpi VARCHAR(20)
birth_date DATE
email VARCHAR
created_at TIMESTAMPTZ
applications
id UUID PK
applicant_id UUID FK
preferred_store_id INT FK
position_id INT FK
form_step INT DEFAULT 0
form_progress JSONB
-- datos capturados hasta ahora
status ENUM
resume_token VARCHAR
resume_expires_at TIMESTAMPTZ
conversation_id INT
form_responses
id UUID PK
application_id UUID FK
section VARCHAR(100)
field VARCHAR(100)
value TEXT
captured_at TIMESTAMPTZ
template_logs
id UUID PK
applicant_id UUID FK
template_name VARCHAR(100)
sent_at TIMESTAMPTZ
status ENUM(SENT, DELIVERED, READ)

Stack Técnico

Réplica del stack existente adaptado en directorio mgp/

⚙️

n8n

Flows A–F, self-hosted

💬

Chatwoot

Inbox WhatsApp separado

🐘

PostgreSQL

Schema retail nuevo

🔴

Redis

Sessions, queues BullMQ

Next.js 14

Dashboard de reclutadores

🌐

Traefik

Proxy + SSL (ya existente)

🤖

Gemini AI

Validación de formulario

📱

Meta Cloud API

WhatsApp + Templates

Plan de Implementación

4 fases incrementales — cada una entrega valor tangible al cliente

Fase 1

Foundation

  • Directorio mgp/ + Docker stack
  • Schema PostgreSQL completo
  • Chatwoot nuevo inbox WhatsApp
  • Flow A: identificación candidato
  • Flow B: selección geográfica y tienda
2–3 semanas
Fase 2

Formulario Progresivo

  • Flow C: formulario paso a paso
  • Guardado en tiempo real por campo
  • Sistema de retorno (JWT token)
  • Formulario web con datos pre-llenados
  • Validaciones básicas (DPI, fechas)
2–3 semanas
Fase 3

Templates y Re-engagement

  • Solicitud y aprobación de templates Meta
  • Flow D: scheduler de recordatorios
  • Flow E: confirmación al candidato
  • Flow F: decisión del reclutador
  • Plantilla de invitación a entrevista
1–2 semanas
Fase 4

Dashboard

  • Next.js adaptado para retail
  • Filtros por tienda, región, estado
  • Vista de formulario completo por candidato
  • Gestión de tiendas y puestos
  • Reporte: funnel de conversión
2–3 semanas

Consideraciones Clave

Puntos que requieren definición con el cliente antes de iniciar

📋

Formulario de solicitud

¿Qué secciones y campos necesita el cliente? (datos personales, educación, experiencia, referencias). Necesitamos el formato actual en papel para digitalizarlo.

🏪

Catálogo de tiendas

Lista completa de tiendas con nombre, dirección, departamento y municipio. Se carga como seed inicial a la base de datos.

📱

Número WhatsApp Business

¿El cliente ya tiene número aprobado en Meta Business? ¿Tiene acceso al Business Manager para aprobar las plantillas?

👥

Puestos disponibles

Listado de posiciones para las que se recluta. ¿Son fijos para todas las tiendas o varía por tienda/región?

🔐

Acceso al dashboard

¿Quién usa el dashboard? ¿Hay un reclutador por tienda o un reclutador central? Esto define los roles y filtros.

🌐

Infraestructura

¿Se despliega en el mismo VPS existente (mgp/ separado) o el cliente requiere su propio servidor? ¿Dominio propio o nip.io?