AMR TECH™ · Roadmap 10/10
WhatsApp CRM — Brecha de calidad hacia excelencia
FOLIO: AUD-20260925-013 Secuencia: Auditoría #013 del día 2026-09-25
📅 2026-09-25 · COT 👤 Auditor: Anderson Mares (AMR TECH) ● VIGENTE
Análisis de Brecha — Gap Analysis

¿Qué le falta al sistema para estar 10 de 10?

El reporte AUD-20260925-006 evaluó el WhatsApp CRM en 4.8/10. Tras múltiples sprints, el sistema hoy está en 7.5/10. Este documento mapea exactamente lo que falta para llegar a 10/10 — ordenado por impacto, con estimaciones de esfuerzo realistas.

Arquitectura & Código 7.5 → 9.0
Falta: N+1 fix, caché products.json
Seguridad 7.0 → 9.5
Falta: CSRF, rate limiting, session regeneration
DB & Performance 6.5 → 9.0
Mayor brecha: índices DB, TRM cache, N+1
UX & Frontend 7.0 → 9.0
Falta: búsqueda, móvil, modales, analytics
Calidad Bot IA 7.5 → 9.5
Falta: temperatura LLM, tests automatizados
DevOps & Ops 8.0 → 10.0
Falta: backups, monitoreo uptime, notifs Slack

Lo que ya está hecho — desde AUD-20260925-006

Medios de pago automáticos
IA envía Bancolombia/Nequi/Wompi al detectar cierre de venta
CI/CD GitLab completo
Pipeline 5 etapas: validate → staging → smoke → prod (manual gate)
Buyer Bot Test Matrix
6 perfiles × 5 nichos, dual-AI, replay animado + JSON export
License Audit Dashboard
Matriz Key×Modelo, Gemini dynamic discovery, sub-tabs por proveedor
Fix 504 scan licencias
Scan 1×1 por proveedor, sin timeout masivo
Multi-key LLM cascade
Groq → Gemini → OpenRouter → OpenAI → Ollama, sin punto único de falla

Semana 1 — Bloqueadores críticos

URGENTE · 1-5 días c/u

Estas cinco brechas son las que un atacante o un auditor externo encontraría en la primera revisión. Su ausencia baja el score de Seguridad y Rendimiento en 2 puntos.

CRÍTICO CSRF tokens en todos los endpoints de escritura ~2h

Los endpoints save_lead_field, update_tags, manual_toggle, clear_chat y send_message aceptan POST sin validar el origen. Un atacante puede forzar al admin a ejecutar acciones por CSRF desde cualquier sitio.

Fix: generar token en sesión PHP, validarlo en cada POST. 1 helper + include en cada endpoint afectado.
CRÍTICO Rate limiting en login.php + session_regenerate_id() ~1h

login.php acepta intentos ilimitados por IP — fuerza bruta trivial. Además, no se llama session_regenerate_id(true) post-login, lo que expone a session fixation.

Fix: contador en $_SESSION['login_attempts'] + lockout 15 min. Una línea para regenerar sesión.
ALTO Índice en messages.wamid + índice compuesto anti-loop ~15 min

Sin índice en wamid, cada mensaje entrante hace un full-table scan para deduplicación. A 500+ mensajes diarios, esto es una degradación medible en p99 latency.

ALTER TABLE messages ADD INDEX idx_msg_wamid (wamid);
ALTER TABLE messages ADD UNIQUE INDEX idx_loop_guard (phone_from, wamid);
ALTO Búsqueda funcional en sidebar del CRM ~3h

El campo de búsqueda en el sidebar es decorativo: no tiene id, ni evento, ni lógica backend. Con 20+ contactos activos, los usuarios no pueden filtrar conversaciones — dolor real de usabilidad diaria.

Fix: input con debounce 300ms → POST a api/search_contacts.php → re-render lista sidebar.
ALTO Fix layout móvil/tablet ~2h

El chat usa md:flex lo que lo oculta en viewports menores a 768px. En un negocio de WhatsApp, muchas operaciones son desde celular. El CRM es ciego en móvil.

Fix: panel toggle en mobile con slide-in del sidebar; el chat ocupa 100% en mobile, sidebar es overlay.

Mes 1 — Mejoras importantes

Semanas 2-4

Estas brechas no bloquean el MVP pero determinan si el producto se siente profesional o artesanal. Son las que separan un 7.5 de un 9.0.

ALTO Resolver N+1 en getActiveConversations() ~4h

El método ejecuta una subquery correlacionada por cada contacto para traer el último mensaje. Con 300+ contactos activos, esto son 300+ queries en cada carga del panel — se sentirá a partir de los primeros 50 usuarios reales.

Fix: JOIN con subquery en FROM (derived table) o window function ROW_NUMBER(). Una sola query para todos los contactos.
ALTO Caché de TRM con TTL 1 hora en DB ~2h

Cada mensaje que involucra conversión de moneda llama al API externo de TRM. Eso agrega ~2 segundos de latencia al tiempo de respuesta del bot y puede fallar si el servicio externo cae.

Fix: guardar TRM en ai_settings con key trm_usd_cop + trm_updated_at. Si tiene menos de 1h de antigüedad, usar el cacheado.
MEDIO Temperatura LLM 0.3–0.4 para turns de precio/datos ~30 min

Con temperatura 0.7 y un modelo 8B, el bot puede "alucinar" precios o ignorar restricciones de descuento en turns críticos. Los turns donde se informa precio, cuenta bancaria o condiciones de pago necesitan determinismo.

Fix: detectar keywords de precio en el historial → bajar temperatura a 0.3 en ese turno específico dentro de AIService.
MEDIO Reemplazar confirm() / alert() con modales y toasts ~3h

Los diálogos nativos del browser bloquean el hilo principal, tienen aspecto de sistema operativo desactualizado y en algunos browsers móviles no aparecen. Es la señal visual más evidente de software no terminado.

Fix: implementar un toast container + modal de confirmación con Tailwind puro. 1 JS function reutilizable para todo el CRM.
MEDIO Caché estático en CatalogService para products.json ~20 min

En cada mensaje el bot llama a file_get_contents('products.json') — un I/O que repite la lectura de disco por request. Con alto tráfico es un cuello de botella innecesario.

// En CatalogService
private static ?array $cache = null;
if (self::$cache !== null) return self::$cache;
self::$cache = json_decode(file_get_contents(...), true);
return self::$cache;

Mes 2-3 — Para calidad comercial 10/10

Sprint 2-3

Estas features son las que hacen la diferencia entre un CRM funcional y uno que se puede vender como SaaS. No bloquean el MVP, pero sin ellas el sistema no llega a 10/10.

Dashboard de Analytics

Conversiones cerradas/día, tasa de cierre por perfil IA, tiempo promedio de respuesta. Sin métricas, no sabes si el bot está vendiendo o perdiendo clientes.

~2 días
Notificaciones Slack en ventas cerradas

Cuando el bot detecta "cierre de venta", un webhook al canal de Operaciones muestra nombre, producto y monto. Real-time para el equipo.

~3h
Backup automático MySQL

mysqldump vía cron diario en Hostinger, exportado a una carpeta fuera del webroot + rotación de 7 copias. Sin backup, cada falla es pérdida permanente.

~1h
Monitoreo de uptime

UptimeRobot (plan gratuito) pinguea el webhook y el panel cada 5 min. Alerta por email si caen. Actualmente el sistema puede estar caído horas sin que nadie lo sepa.

~30 min
Exportación de conversaciones

Descarga de historial de un contacto en CSV o formato legible. Los clientes del CRM necesitan reportes para sus equipos comerciales.

~4h
Etiquetas y pipeline de conversiones

Sistema de etiquetas Kanban (Nuevo → En Negociación → Cerrado → Perdido). Permite a un equipo de ventas tener visibilidad del estado del pipeline sin leer cada chat.

~1 día

Checklist completo para el 10/10

Ítem Impacto Esfuerzo Plazo Dimensión Estado
CSRF tokens en endpoints escritura +1.5 pts 2h Sem 1 Seguridad PENDIENTE
Rate limiting login + session regen +1.0 pts 1h Sem 1 Seguridad PENDIENTE
Índice messages.wamid + anti-loop +0.8 pts 15 min Sem 1 DB & Perf PENDIENTE
Búsqueda funcional en sidebar +0.7 pts 3h Sem 1 UX PENDIENTE
Mobile layout fix +0.5 pts 2h Sem 1 UX PENDIENTE
Fix N+1 getActiveConversations() +0.5 pts 4h Mes 1 DB & Perf MES 1
TRM cache TTL 1h en DB +0.3 pts 2h Mes 1 DB & Perf MES 1
Temperatura LLM 0.3 en turns precio +0.4 pts 30 min Mes 1 IA Bot MES 1
Reemplazar confirm/alert con modales +0.3 pts 3h Mes 1 UX MES 1
products.json static cache +0.2 pts 20 min Mes 1 Arquitectura MES 1
Dashboard Analytics (conversiones) +0.5 pts 2 días Mes 2 UX BACKLOG
Backup automático MySQL diario +0.5 pts 1h Mes 2 DevOps BACKLOG
Monitoreo uptime (UptimeRobot) +0.3 pts 30 min Mes 2 DevOps BACKLOG
Notificaciones Slack ventas cerradas +0.3 pts 3h Mes 2 DevOps BACKLOG
Exportación conversaciones CSV/PDF +0.2 pts 4h Mes 3 UX BACKLOG
Pipeline Kanban de conversiones +0.2 pts 1 día Mes 3 UX BACKLOG

Proyección de score por sprint

7.5
HOY (MVP lanzado)
Estado actual post-sprint
8.5
SEMANA 1
CSRF + Rate limit + Índices + Búsqueda + Mobile
9.3
MES 1
N+1 + TRM cache + temperatura LLM + modales
10.0
MES 2-3
Analytics + Backups + Monitoreo + Slack + Export + Kanban
Resumen ejecutivo: la Semana 1 (≈8h totales de trabajo) elimina todos los riesgos de seguridad y hace el sistema usable en móvil y con búsqueda real. El Mes 1 (+~10h) lo lleva a calidad percibida comercial. El Mes 2-3 lo convierte en un SaaS vendible con métricas, backups y visibilidad operativa completa.

Presencia digital — Ecosistema AMR TECH completo

NUEVO · Fuera del CRM

Para un 10/10 comercial, el WhatsApp CRM necesita un ecosistema digital de soporte. Actualmente faltan varios modelos de negocio con su presencia web propia.

📺 Landing de ventas — Streaming

Página de ventas externa para combos de streaming (Netflix, Disney+, MAX, IPTV). Debe funcionar como embudo de captación que lleva al WhatsApp con mensaje pre-armado.

FALTANTE ~1 día
📦 Landing — Dropshipping / Reventa

Página para reclutar revendedores: márgenes, catálogo, proceso de pedido. Debe capturar prospectos que quieran revender licencias y streaming.

FALTANTE ~1 día
🖥️ Web Technology Colombia — Dolibarr / ERP

Sitio web para la marca "Web Technology Colombia" — implementación Dolibarr, desarrollo web, tiendas en línea, consultoría digital para pymes. Brand y propuesta de valor separada de AMR Tech.

FALTANTE ~2 días
🏠 Landing general AMR TECH

Página principal del ecosistema: quiénes somos, todos los servicios (streaming, dropshipping, Web Tech Colombia, CRM), testimonios y CTA directo a WhatsApp.

FALTANTE ~1 día
🛠️ Portal de Soporte

Página de soporte con: FAQ por producto, formulario de ticket, horarios de atención, tutoriales básicos. Reduce la carga de mensajes de soporte al bot de ventas.

FALTANTE ~1 día
🔄 Política de Garantías

Página pública con política de garantías, condiciones de reembolso y proceso de reclamación. Aumenta confianza del comprador y reduce disputas.

FALTANTE ~3h
Nota: el Buyer Bot Test Matrix ya fue actualizado para incluir estos 4 nuevos escenarios (Dropshipping, Web Tech/Dolibarr, Soporte y Garantías) — se pueden simular conversaciones en cada uno antes de construir las landings.