Saltar a contenido

US-007 — Cotización en lenguaje natural

Detalle de la historia

Historia

Como cliente de FleteChat, quiero pedir una cotización escribiendo en lenguaje natural por WhatsApp, para obtener un precio en pocos mensajes sin tener que llenar un formulario ni entender la jerga logística.

Persona de usuario

Aplica a todo cliente verificado que necesita cotizar un envío. También aplica a colaboradores autorizados que cotizan en nombre del titular. No aplica a clientes pendientes de verificación, que pueden conversar pero no recibir cotizaciones emitidas (ver historia de registro).

Contexto de negocio

La promesa central de FleteChat al cliente final es: "pida su cotización como le salga decirlo". El cliente no debería tener que aprender una estructura rígida ("escriba origen;destino;peso") ni navegar un formulario web: describe su envío en sus propias palabras y FleteChat se encarga de entender qué le están pidiendo.

Esto no significa aceptar cualquier cosa sin preguntar: para cotizar con precisión, FleteChat necesita cierta información mínima (origen, destino, modalidad, peso/volumen, tipo de operación). Lo que esta historia promete es que FleteChat extrae todo lo que ya está en el mensaje y solo pregunta lo que falta, sin obligar al cliente a estructurar su pedido. La guía conversacional de qué pedir a continuación es materia de la historia siguiente del epic.

Diálogo de referencia

Cliente da casi todo en una sola frase

Cliente: Necesito cotizar 2 pallets de 300 kilos cada uno desde Shanghái a Colón, marítimo LCL.

Agente: Perfecto. Entiendo un envío marítimo LCL con 2 pallets de 300 kg (600 kg en total) desde Shanghái a Colón. ¿Es una importación suya o está comprando CIF / FOB? Con eso calculo la cotización.

Cliente da muy poco y FleteChat pide solo lo necesario

Cliente: Quiero cotizar algo a Miami.

Agente: Con gusto. Para armar la cotización necesito un poco más de información. ¿Desde dónde sale el envío, qué modalidad piensa (aéreo, marítimo…) y cuánto pesa o mide la carga?

Cliente escribe con errores de tipeo y abreviaciones

Cliente: coti maritmo shangai a balboa 40 pies fcl DDP

Agente: Anotado: marítimo FCL 40', ruta Shanghái → Balboa, Incoterm DDP. Un solo dato más: ¿el contenedor viaja con mercancía peligrosa o refrigerada, o es carga general?

Criterios de aceptación

Detección y comprensión

  1. FleteChat detecta, desde el primer mensaje del cliente, la intención de cotizar sin requerir palabras clave específicas ("cotizar", "precio") ni formato estructurado.
  2. FleteChat extrae del mensaje los datos presentes (origen, destino, modalidad, peso/volumen, tipo de operación, Incoterm, características de la carga) aun cuando estén abreviados, mal escritos o en distinto orden.
  3. FleteChat repite al cliente lo que entendió antes de pedir más datos, para que el cliente pueda corregir si hace falta.

Manejo de ambigüedad

  1. Ante un dato que puede interpretarse de más de una forma (por ejemplo, "Colón" podría ser Colón en Panamá o Colón en Argentina), FleteChat pide aclaración en lugar de asumir.
  2. Ante una combinación no soportada o un dato que el sistema no reconoce (por ejemplo, un puerto que no está en el catálogo), FleteChat lo declara y ofrece reformular o handoff humano.

Idioma y tolerancia

  1. FleteChat entiende el pedido tanto en español como en inglés, siguiendo la política de idioma definida en la historia de identidad.
  2. FleteChat tolera errores de tipeo, falta de acentos y abreviaciones comunes del rubro (LCL, FCL, FOB, CIF, DDP, etc.).

Lo que FleteChat no hace

  1. FleteChat no emite una cotización con valores inventados ni estimados de memoria (ver historia de precisión y anti-alucinación); consulta las tarifas reales antes de entregar un precio.
  2. FleteChat no pide datos que ya tiene del cliente (nombre, empresa, correo, historial de rutas): los usa si aplican.

Edge cases

  • Cliente da dos pedidos en el mismo mensaje ("cotízame 2 pallets a Miami y 5 a Houston"). FleteChat los trata como dos cotizaciones separadas y confirma con el cliente cuál quiere procesar primero.
  • Cliente da un dato incompatible con el resto (por ejemplo, modalidad "aéreo" con "40 pies FCL"). FleteChat lo señala y pide corregir antes de seguir.
  • Cliente menciona un servicio opcional directamente ("y que lo entreguen en mi bodega"). FleteChat lo anota como una preferencia para la fase de servicios opcionales.
  • Cliente cambia de idea mid-pedido ("mejor aéreo, no marítimo"). FleteChat reinicia la parte afectada del cálculo y, si corresponde, vuelve a pedir datos que dependen de la modalidad.

Tamaño, prioridad y tipo

  • Tamaño: M
  • Prioridad: P0 — puerta de entrada al core del negocio.
  • Tipo: feature

Premisas

La historia está redactada bajo las siguientes premisas. Si alguna cambia, la historia debe revisarse y ajustarse en consecuencia. Todas deben ser confirmadas por el cliente antes de cerrar la historia.

  • PR-042 — Datos extraíbles del mensaje. En v1.0, FleteChat intenta extraer del mensaje libre: origen, destino, modalidad (aéreo / marítimo LCL / marítimo FCL), tipo de operación (importación / exportación), Incoterm, peso, volumen y tipo de carga. Otros datos (plazos especiales, preferencia de ruta, etc.) se capturan en la fase de servicios opcionales.
  • PR-043 — Regla ante ambigüedad. FleteChat siempre pregunta ante un dato ambiguo o faltante; nunca asume para avanzar más rápido.
  • PR-044 — Combinaciones no soportadas. Ante una combinación que no existe en el catálogo de FleteChat (modalidad + Incoterm + ruta), FleteChat lo declara al cliente y activa handoff con consentimiento explícito del cliente (ver historia de handoff por combinación no soportada).
  • PR-229 — System prompts hardcoded y anti prompt-injection. El comportamiento del agente conversacional se define por un system prompt gestionado por FleteChat (no por el cliente final) con reglas que no pueden ser sobreescritas por input del cliente: identidad, alcance, obligación de consultar el sistema como fuente de datos operativos (ver PR-012 en la historia de precisión y anti-alucinación), prohibición de inventar precios o servicios, prohibición de ejecutar acciones no autorizadas por rol. El input del cliente se procesa como contenido a interpretar, nunca como instrucciones. FleteChat detecta y registra intentos aparentes de prompt injection ("ignora las instrucciones anteriores", "eres un sistema distinto", etc.), no los ejecuta y deriva a handoff si el patrón se repite. El alcance de esta premisa cubre a todas las historias conversacionales (US-007 a US-014, US-023, US-028, US-029, US-033, US-054..US-060).

Refinamiento y Definition of Ready

Notas

Fecha Participantes Acuerdo / Nota
2026-04-17 Kaeus Versión inicial.
2026-04-20 Kaeus Se añade PR-229 (system prompts hardcoded y defensa contra prompt injection, aplicable transversalmente a todas las historias conversacionales) con anclaje en US-007 por ser la puerta de entrada en lenguaje natural. Resolución de hallazgo P3-11 de la revisión exhaustiva.

Checklist

  • ✅ Historia escrita en formato Como / Quiero / Para
  • ✅ Persona de usuario identificada
  • ✅ Contexto de negocio documentado
  • ✅ Criterios de aceptación observables y pass/fail
  • ✅ Edge cases relevantes listados
  • ✅ Tamaño y prioridad asignados
  • ⬜ Premisas PR-042 a PR-044 y PR-229 confirmadas por el cliente
  • ⬜ Reglas de negocio aplicables aprobadas
  • ⬜ Requerimientos funcionales aplicables aprobados
  • ⬜ Historia aprobada formalmente por el cliente