El cliente y el problema

Distribuidora de materiales de construcción con presencia en cinco estados, equipo de ventas de 8 personas, 240 cotizaciones promedio al mes. Cada cotización requería leer un PDF o documento del cliente con specs de la obra, identificar SKUs en un catálogo de 12,000 productos, validar disponibilidad por sucursal, calcular margen objetivo según volumen y armar PDF formal con condiciones.

Tiempo promedio antes de la intervención: 2 horas 40 minutos por cotización. El cuello de botella era 100% identificación de SKUs y validación de catálogo. Los vendedores se quejaban — con razón — de que pasaban más tiempo en Excel que vendiendo.

La arquitectura

El agente vive en una interfaz web simple. El vendedor sube el PDF/imagen del cliente y arranca una conversación. Por debajo:

  1. Extracción: Claude lee el PDF (con vision) y extrae items mencionados en lenguaje natural — "varilla del 3/8", "cemento gris 50kg", "50 metros lineales de tubo PVC 4 pulgadas".
  2. Tool use: El agente llama a una función buscar_sku(descripcion, cantidad) que consulta Postgres con búsqueda semántica + reglas de negocio.
  3. Validación cruzada: Para cada match, agente y vendedor confirman. Si la confianza es baja, el agente pregunta antes de asumir.
  4. Cálculo: Función calcular_precio(skus, sucursal, volumen) aplica reglas de pricing y disponibilidad.
  5. Render: El agente arma un draft de PDF que el vendedor edita en línea antes de mandar al cliente.

Los gotchas reales

Gotcha 1: el catálogo no estaba listo para búsqueda semántica

El primer rollout falló estrepitosamente. El agente identificaba items pero los SKUs que regresaba eran del lado izquierdo del catálogo. La razón: las descripciones de SKU eran códigos internos ("VAR-038-3M-CMP") sin texto descriptivo. Tuvimos que invertir 3 semanas en enriquecer el catálogo con descripciones largas, sinónimos y embeddings antes de que el agente fuera útil.

Esta es la lección que más cuesta: la IA no resuelve catálogos sucios. La IA expone catálogos sucios.

Gotcha 2: alucinaciones de precios

En una versión temprana, el agente infería precios cuando no encontraba un match exacto. Catastrófico. La solución no fue prompting — fue arquitectónica: el agente nunca emite precios; solo el tool calcular_precio lo hace. Si el tool retorna error, el agente lo escala al vendedor explícitamente.

Gotcha 3: el costo de inferencia explotó al inicio

En las primeras dos semanas el costo de Claude pasó los $18K MXN. La razón: el sistema prompt incluía el catálogo entero (12K SKUs) en cada llamada. Al mover a tool use con búsqueda y eliminar el catálogo del contexto base, el costo bajó a $4,800 MXN/mes.

Resultados después de 6 meses

  • Tiempo medio por cotización: 2h 40min → 1h 1min.
  • Tasa de error en SKUs: 8.4% → 1.2%.
  • Capacity de cotizaciones del equipo: 240/mes → 580/mes (sin contratar).
  • NPS interno del equipo de ventas: 41 → 78.

Si tu equipo dedica >2 horas a tareas que parecen mecánicas pero requieren juicio (cotizaciones, propuestas, onboarding documentado, revisiones de contratos), hablemos. Hacemos POCs con métricas claras de impacto en 4–6 semanas.