Clasificación inteligente con IA + Respuestas automáticas
El sistema actual de tickets genera:
Sistema inteligente inspirado en HubSpot:
Construcción fase por fase con Go/No-Go cada 4 semanas. Sin riesgo: Si no funciona, no perdemos dinero.
PARTE 1: EL PROBLEMA
PARTE 2: LA SOLUCIÓN
PARTE 3: IMPLEMENTACIÓN
PARTE 4: RECURSOS
ANEXOS
1. Elegir tipo (Consulta/Petición/Incidencia) 2. Elegir área (Admin/Comercial/Técnico) 3. Buscar entre 12-16 subcategorías
Resultado:
REGLA ORO NETELIP: Clientes <90 días → SIEMPRE a su SDR Sistema actual NO garantiza esto: ├─ Cliente nuevo (20 días) pregunta sobre SIP Trunking ├─ Piensa: "¿Es comercial o técnico?" ├─ Decide: "Es sobre SIP Trunking, debe ser técnico" ├─ Selecciona: "Consulta Técnica: SIP Trunking" ├─ Ticket va a → Soporte Técnico (4-6 horas después) ├─ Técnico revisa: "Esto es una consulta de ventas" ├─ Reenvía a → Comercial España ├─ Llega a SDR → 8 horas después └─ RESULTADO: Lead frío, oportunidad perdida Estimación: 20-30% leads nuevos mal enrutados = 4-9 ventas/mes perdidas
Soporte Técnico recibe: ├─ 50% Consultas técnicas reales ✓ ├─ 30% Consultas comerciales ✗ (no es su trabajo) └─ 20% Admin ✗ (no es su trabajo) Tiempo desperdiciado: 50 horas/mes × €30/h = €1,500/mes
┌────────────────────────────────┐ │ ¿En qué podemos ayudarte? │ │ [Escribe tu consulta...] │ │ [Enviar] │ └────────────────────────────────┘ Eso es TODO. 1 paso, 0 categorías.
┌─────────────────────────────────────────┐
│ CAPA 1: SERVIDOR NETELIP (Privado) │
│ ├─ PostgreSQL (clientes, tickets) │
│ ├─ N8N (workflows, reglas negocio) │
│ └─ Datos sensibles NUNCA salen │
└──────────────┬──────────────────────────┘
│ APIs HTTPS
┌────────┴────────┐
↓ ↓
┌──────────────┐ ┌─────────────────────┐
│ CAPA 2: │ │ CAPA 3: │
│ QDRANT CLOUD │ │ APIs IA │
│ (Público) │ │ ├─ OpenAI (clasif.) │
│ └─ Solo FAQs │ │ └─ Claude (respues.)│
│ y docs │ │ │
└──────────────┘ └─────────────────────┘
Emails, teléfonos, contratos, datos bancarios → NUNCA sale del servidor
FAQs, guías, docs API → 0 datos clientes específicos
"Cliente España, 25 días alta, pregunta sobre desvíos"
NO se envía: emails, nombres completos, teléfonos
Problema: Cliente confundido con 40+ categorías
ANTES: 3 pasos, 40+ opciones, 5 minutos DESPUÉS: 1 paso, 0 categorías, 1 minuto ┌────────────────────────────────────┐ │ ¿En qué podemos ayudarte? │ │ Título: ___________________ │ │ Descripción: ______________ │ │ [Adjuntar archivos] │ │ [Enviar] │ └────────────────────────────────────┘
Responsable: Mili (diseño UX) + Equipo netelip (integración)
Go/No-Go: ¿Frontend mejora experiencia?
Problema: 40-50% tickets mal clasificados
Solución: IA + Reglas de Negocio netelip
Ticket entra ↓ Enriquecer datos cliente (PostgreSQL) ↓ Clasificar con IA (GPT-4o-mini) ├─ Analiza: contenido + contexto ├─ Aplica: Reglas netelip └─ Decide: Departamento + Prioridad ↓ Validar confianza ├─ >90% → Asignar automático ├─ 70-90% → Sugerir └─ <70% → Revisión manual ↓ Notificar agente + cliente
SI días_desde_alta <= 90: departamento = Comercial [España|LATAM] asignado_a = SDR_de_cartera SIEMPRE, sin excepción del contenido.
→ 0% leads comerciales perdidos
REGLA 2: Clientes >90 días → Por contenido
Input:
Título: "Información portabilidad"
Cliente: 25 días desde alta, España, 0 servicios
Output IA (98% confianza):
{
departamento: "Comercial España",
equipo: "SDR España",
prioridad: "Alta",
razonamiento: "Cliente <90 días. Regla 1 aplicada."
}
Resultado: Ticket llega a SDR en <1 minuto
Responsable: Mili (workflows N8N + prompts)
Go/No-Go: ¿Precisión >= 90% en 100 tickets test?
Problema: Respuestas inconsistentes, cada agente a su manera
Solución: Base vectorial con toda la documentación netelip
Qdrant Cloud: ├─ 200+ FAQs ├─ Guías técnicas completas ├─ Docs API ├─ Casos resueltos (anonimizados) └─ Políticas empresa 0 datos sensibles clientes
Pregunta: "¿Cómo configuro desvíos?" ↓ Generar embedding (OpenAI) ↓ Buscar en Qdrant → Top 5 docs relevantes ↓ Docs encontrados: ├─ FAQ: Configuración desvíos ├─ Guía: Paso a paso desvíos └─ Caso: Cliente sin opción desvíos ↓ Estos docs se usan en Fase 4 para generar respuesta
Responsable: Mili (setup Qdrant, indexación) + Equipo netelip (recopilar docs)
Go/No-Go: ¿Búsqueda RAG relevante >90%?
Problema: Equipo sobrecargado, 10-15 min por ticket
Solución: IA genera respuesta usando docs de Qdrant
Ticket clasificado ↓ Buscar docs relevantes (Qdrant) ↓ Generar respuesta (Claude Sonnet 4.5) ├─ System: "Eres soporte netelip" ├─ Contexto: [Docs de Qdrant] ├─ Cliente: España, nuevo/antiguo └─ Pregunta: [Contenido ticket] ↓ Respuesta IA con confianza % ↓ Agente revisa en panel: ├─ ✓ Enviar (si correcta) ├─ ✎ Editar (ajuste menor) └─ ✗ Rechazar (escribir propia)
Objetivo: >70% respuestas usables (enviar o editar leve)
Beneficio: Tiempo agente: 10-15 min → 2-3 min
Responsable: Mili (workflow RAG + prompts)
Go/No-Go: ¿IA ahorra tiempo real?
Objetivo: Sistema 100% operativo
Entregables:
| Semana | Hito | Criterio Go/No-Go |
|---|---|---|
| 2 | Frontend funcionando | Cliente crea ticket <1 min |
| 6 | Clasificación validada | Precisión >90% en 100 tickets |
| 10 | Base conocimiento completa | 200+ docs, búsqueda relevante |
| 14 | Respuestas IA validadas | >70% usables, ahorro tiempo |
| 16 | Producción completa | Todos criterios cumplidos |
┌──────────────────────────────────────────┐ │ SISTEMA TICKETS IA - HOY │ ├──────────────────────────────────────────┤ │ Tickets procesados: 47 │ │ Precisión IA: 96% │ │ Respuestas IA usadas: 32 (68%) │ │ Tiempo respuesta promedio: 45 min │ │ │ │ DISTRIBUCIÓN: │ │ ├─ Comercial España: 18 (38%) │ │ ├─ Comercial LATAM: 7 (15%) │ │ ├─ Administración: 13 (28%) │ │ └─ Soporte Técnico: 9 (19%) │ │ │ │ ALERTAS: │ │ └─ 2 tickets urgentes pendientes │ └──────────────────────────────────────────┘
Mitigación: Testing 100+ tickets, ajustes iterativos, umbral ajustable
Plan B: Más revisión humana
Mitigación: Base conocimiento exhaustiva, revisión 100% inicial, >85% confianza
Plan B: Solo sugerir, nunca enviar automático
Mitigación: Involucrar desde día 1, mostrar beneficios, training, piloto 30%
Plan B: Rollout más gradual
Mitigación: Go/No-Go cada fase, métricas claras, inversión incremental
Plan B: Abortar sin pérdida económica
Semana 1-6: Solo uso interno equipo netelip Semana 7-10: Piloto 30% tráfico real Semana 11-14: Escalar a 60-70% Semana 15-16: 100% producción Siempre con opción rollback a sistema anterior
MILI PROVEE: ├─ Diseño completo arquitectura ├─ Workflows N8N listos para usar ├─ Prompts IA optimizados ├─ Documentación técnica └─ Asesoría implementación EQUIPO NETELIP IMPLEMENTA: ├─ Backend endpoints ├─ Frontend integrado ├─ Base datos PostgreSQL ├─ Deploy y producción └─ Mantenimiento operativo
Por el momento solo necesito esto, porque tengo que tener las bases de conocimientos perfectas para montar el RAG, el cerebro de netelip. Una vez que tenga todo perfecto, va solo.
Es un estimado. Claude y mis compañeros de profesión me dan este precio por mi trabajo. ¡LO HABLAMOS Y DEFINIMOS TU Y YO!
Una cosa que quiero que quede clara: Yo tengo un timing para terminar proyecto y dejarlo funcionando, pero no dependo de las horas laborales ni la productividad de equipos. Yo cobro cuando termine y si el equipo de netelip no termina, no lo hace, no es mi problema.
Podemos poner hitos por tareas terminadas de mi parte para no eternizar el proyecto en tiempo ni costes, pero yo no trabajo con equipo de netelip, trabajo con mi equipo, porque si me atranco en algún punto o no sé terminar algo, tengo a mis colaboradores que se han comprometido a hacérmelo por intercambio de trabajos.
if cliente.dias_desde_alta <= 90:
if cliente.pais == "España":
departamento = "Comercial España"
equipo = "SDR España"
asignado_a = get_sdr_cartera(cliente)
elif cliente.pais in ["México", "Colombia", "Chile", ...]:
departamento = "Comercial LATAM"
equipo = "SDR LATAM"
asignado_a = get_sdr_cartera(cliente)
tipo = "Asesoramiento comercial"
prioridad = "Alta" if not cliente.servicios else "Media"
return clasificacion
# ESTA REGLA NO TIENE EXCEPCIONES
# Aplica SIEMPRE, independiente del contenido del ticket
if cliente.dias_desde_alta > 90:
# Administración
if any(keyword in ticket.contenido.lower() for keyword in
["factura", "pago", "datos bancarios", "iban", "titular"]):
departamento = "Administración"
equipo = "Gestión Administrativa"
prioridad = "Media"
# Soporte Técnico
elif any(keyword in ticket.contenido.lower() for keyword in
["no funciona", "error", "problema", "configurar",
"llamadas", "audio"]):
departamento = "Soporte Técnico"
equipo = "L1 Soporte"
# Subcategoría automática
if "audio" in ticket.contenido.lower():
categoria = "Problemas audio"
elif "ivr" in ticket.contenido.lower():
categoria = "Configuración IVR"
elif "api" in ticket.contenido.lower():
categoria = "API Voice"
# Prioridad por urgencia
if any(urgente in ticket.contenido.lower() for urgente in
["urgente", "crítico", "no puedo trabajar"]):
prioridad = "URGENTE"
else:
prioridad = "Alta"
# Temas sensibles → Siempre revisión humana
temas_sensibles = ["cancelar", "baja", "queja", "reclamación",
"rgpd", "protección datos", "abogado", "legal"]
if any(tema in ticket.contenido.lower() for tema in temas_sensibles):
requiere_revision_humana = True
no_respuesta_automatica = True
notificar_supervisor = True
Eres el clasificador de tickets de netelip, empresa española de telefonía IP
que opera en España y LATAM.
DATOS TICKET:
- Título: {ticket.titulo}
- Descripción: {ticket.descripcion}
CONTEXTO CLIENTE:
- Cliente ID: {cliente.id}
- Email: {cliente.email}
- Fecha alta: {cliente.fecha_alta}
- Días desde alta: {cliente.dias_desde_alta}
- País: {cliente.pais}
- Servicios contratados: {cliente.servicios}
REGLAS CLASIFICACIÓN NETELIP:
REGLA 1 (PRIORIDAD ABSOLUTA):
SI días_desde_alta <= 90:
departamento = "Comercial [España|LATAM según país]"
equipo = "SDR [España|LATAM]"
tipo = "Asesoramiento comercial"
prioridad = "Alta"
ESTA REGLA APLICA SIEMPRE, SIN EXCEPCIÓN DEL CONTENIDO.
Razón: Cliente en onboarding, su SDR gestiona TODO.
REGLA 2 (Solo si días_desde_alta > 90):
Clasificar por contenido del ticket:
- Administración:
Keywords: factura, pago, datos bancarios, IBAN, titular
Equipo: Gestión Administrativa
Prioridad: Media
- Soporte Técnico:
Keywords: no funciona, error, problema, configurar,
llamadas, audio, desvíos, IVR, API
Equipo: L1 Soporte
Prioridad: Alta (URGENTE si dice "urgente", "crítico")
REGLA 3 (Casos especiales):
Si menciona: cancelar, queja, reclamación, RGPD
requiere_revision_humana = true
RESPONDE EN JSON:
{
"departamento": string,
"equipo": string,
"tipo": string,
"categoria": string,
"prioridad": string,
"confianza": number (0-100),
"razonamiento": string,
"palabras_clave_detectadas": array,
"requiere_revision_humana": boolean
}
CREATE TABLE tickets_ia ( ticket_id SERIAL PRIMARY KEY, cliente_id INT NOT NULL, -- Contenido ticket titulo VARCHAR(200) NOT NULL, descripcion TEXT NOT NULL, archivos_adjuntos JSON, -- Clasificación IA departamento VARCHAR(50), equipo VARCHAR(50), tipo VARCHAR(50), categoria VARCHAR(100), prioridad VARCHAR(20), -- Metadatos IA confianza_ia DECIMAL(3,2), razonamiento_ia TEXT, palabras_clave JSON, requiere_revision_humana BOOLEAN DEFAULT false, -- Respuesta IA respuesta_sugerida_ia TEXT, confianza_respuesta_ia DECIMAL(3,2), documentos_usados_rag JSON, -- Asignación asignado_a VARCHAR(100), estado VARCHAR(20) DEFAULT 'pendiente', -- Acción agente accion_agente VARCHAR(20), -- 'enviado', 'editado', 'rechazado' respuesta_final TEXT, respondido_por VARCHAR(100), respondido_at TIMESTAMP, -- Timestamps created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW(), -- Foreign key FOREIGN KEY (cliente_id) REFERENCES clientes(cliente_id) ); CREATE INDEX idx_tickets_estado ON tickets_ia(estado); CREATE INDEX idx_tickets_prioridad ON tickets_ia(prioridad); CREATE INDEX idx_tickets_asignado ON tickets_ia(asignado_a); CREATE INDEX idx_tickets_created ON tickets_ia(created_at);
RAG (Retrieval Augmented Generation): Sistema que combina búsqueda en base de datos con generación de texto por IA. Busca documentos relevantes y los usa como contexto para generar respuestas precisas.
Qdrant: Base de datos vectorial open source para búsqueda semántica. Almacena documentos como vectores numéricos y encuentra similares instantáneamente.
Embedding: Representación numérica de texto (vector de 768-1536 dimensiones). Textos similares tienen embeddings cercanos matemáticamente.
N8N: Plataforma de automatización workflow (alternativa open source a Zapier). Conecta sistemas mediante workflows visuales.
Prompt: Instrucciones que se dan a un modelo de IA para que genere la respuesta deseada. Un buen prompt es crítico para resultados de calidad.
Confianza IA: Porcentaje 0-100% que indica qué tan segura está la IA de su clasificación o respuesta. Usamos umbral >85-90% para automatización.
Go/No-Go: Decisión al final de cada fase: continuar o abortar proyecto.