US-012 — Aprobación de cotización por WhatsApp
Detalle de la historia¶
Historia¶
Como cliente de FleteChat, quiero aprobar una cotización respondiendo por WhatsApp, para no tener que firmar documentos, entrar a una web ni esperar a que alguien me atienda.
Persona de usuario¶
Aplica a todo cliente verificado que recibió una cotización vigente. Aplica tanto al titular como a colaboradores autorizados, siempre dentro del alcance permitido por su rol.
Contexto de negocio¶
La fricción clásica para aprobar una cotización en logística es la firma: imprimir, firmar, escanear, mandar por correo. Cada paso añade horas o días y reduce la tasa de conversión. FleteChat cambia ese modelo sin sacrificar seguridad, con un flujo de tres pasos sobre dos canales.
Paso 1 — Intención en WhatsApp. El cliente expresa por WhatsApp que quiere aprobar la cotización. FleteChat repite los términos y pide confirmación explícita. El "sí" del cliente genera una reserva preliminar de la tarifa y dispara el envío, por correo y WhatsApp, del enlace al formulario operativo del embarque.
Paso 2 — Formulario operativo. El cliente abre el enlace, revisa los datos precargados de la cotización, completa los datos operativos faltantes (remitente, consignatario, mercancía, instrucciones especiales) y envía. Con los datos completos FleteChat genera las instrucciones del embarque (PDFs para proveedor, operador logístico y equipo interno) y las prepara para revisión del cliente.
Paso 3 — Aprobación formal. FleteChat envía al correo del cliente las instrucciones del embarque junto con un enlace de aprobación formal. El cliente revisa las instrucciones y, si está conforme, hace click en el enlace. Ese click es la aprobación formal y formaliza la operación: se emite el número de embarque definitivo, se distribuyen los PDFs a proveedor y operador logístico, y la ejecución logística arranca.
Invariante de vigencia. Los tres pasos deben completarse antes del vencimiento de la cotización (ver historia de vigencia y expiración). Si la cotización vence antes del click final, la reserva se libera y la aprobación no se produce; el cliente deberá iniciar nuevamente, con validación de vigencia de precios si la cotización estaba vencida (ver historia de vigencia y expiración).
Este diseño da cuatro cosas al mismo tiempo: (1) fricción mínima en WhatsApp para iniciar, (2) recolección estructurada de datos operativos sin contaminar el chat, (3) revisión previa a formalizar (el cliente ve las instrucciones antes de comprometer), y (4) evidencia de no-repudio en el canal correo verificado.
Flujo end-to-end¶
sequenceDiagram
autonumber
actor C as Cliente
participant W as Agente (WhatsApp)
participant S as Sistema FleteChat
participant E as Correo verificado
Note over C,E: Paso 1. Intención en WhatsApp
C->>W: Me sirve, apruébela
W->>C: Repite la cotización y pide confirmar
C->>W: Sí
W->>S: Genera reserva preliminar de la tarifa
S->>E: Envía enlace al formulario operativo
S->>C: Envía enlace al formulario operativo por WhatsApp
Note over C,E: Paso 2. Formulario operativo
C->>S: Abre el enlace del formulario
C->>S: Completa datos operativos y envía
S->>S: Genera instrucciones del embarque
S->>E: Envía correo con instrucciones y enlace de aprobación
S->>C: Avisa por WhatsApp que revise el correo y apruebe
Note over C,E: Paso 3. Aprobación formal
C->>E: Revisa las instrucciones
C->>S: Click en enlace de aprobación formal
S->>S: Registra aprobación, emite número de embarque, distribuye PDFs
S->>C: Notifica por WhatsApp la aprobación, el código corto del embarque y que la operación está en marcha
Note over C,S: Todo debe ocurrir antes del vencimiento de la cotización Diálogo de referencia¶
Paso 1 — Intención en WhatsApp¶
Cliente: Me sirve, apruébela.
Agente: Para confirmar: voy a iniciar la aprobación de la cotización C187 por USD 1,260.00, Bogotá → Miami, LCL DDP, con entrega en bodega e inspección previa incluidas. ¿Avanzo?
Cliente: Sí.
Agente: Le envié a su correo c@empresa.com y por aquí el enlace al formulario del embarque. Ábralo, revise los datos, complete lo que falta (remitente, consignatario, mercancía) y envíelo. Con eso le preparo las instrucciones y el enlace final para aprobar formalmente. Mientras tanto reservo la tarifa. El enlace y toda la aprobación están activos hasta el 24/04/2026*, fecha en que vence la cotización.
Paso 2 — Envío del formulario y preparación de instrucciones¶
[El cliente abre el enlace desde su correo, completa los datos operativos y envía.]
Agente: Recibí los datos del embarque. Le envié a su correo las instrucciones completas (documento para el proveedor, guía del operador logístico y resumen operativo) junto con el enlace para aprobar formalmente. Revíselas con calma; si está conforme, aprueba desde el enlace del correo y formalizamos la operación.
Paso 3 — Aprobación formal y formalización¶
[El cliente revisa las instrucciones en el correo y hace click en el enlace de aprobación formal.]
Agente: Cotización C187 aprobada formalmente. Su embarque queda registrado como E42 y la operación está en marcha. Ya enviamos las instrucciones a su proveedor y al operador logístico. Le iré avisando por aquí cada avance del embarque.
Cotización vencida al momento de confirmar¶
Cliente: Apruébeme la cotización que me pasó la semana pasada.
Agente: Esa cotización venció hace 3 días. Déjeme revisar si los precios siguen vigentes... [ver historia de vigencia y expiración de cotizaciones para el detalle del flujo de validación y re-cotización]
Criterios de aceptación¶
Paso 1 — Detección de intención y envío del enlace al formulario¶
- FleteChat detecta la intención de aprobar una cotización a partir de expresiones naturales del cliente ("aprobar", "me sirve, proceda", "confirmado", "sí, adelante").
- Antes de enviar el enlace al formulario, FleteChat repite la cotización (número, ruta, modalidad, total, servicios incluidos) y pide confirmación explícita del cliente.
- FleteChat no envía el enlace por un "sí" ambiguo: si no está claro que el cliente está confirmando, vuelve a preguntar.
- La confirmación en WhatsApp no aprueba formalmente: genera una reserva preliminar de la tarifa y dispara el envío del enlace al formulario operativo.
- El enlace al formulario se envía por dos canales: (a) correo al email verificado del contacto que está aprobando y (b) mensaje por WhatsApp en la misma conversación. FleteChat anuncia ambos envíos e indica la dirección de correo (ofuscada, por ejemplo
c***@empresa.com). - Si el email del contacto no está verificado, FleteChat no procede: declara la situación y ofrece handoff para que un operador gestione una verificación manual.
- El enlace al formulario es de un solo uso para ese ciclo y no tiene fecha de expiración propia: su validez se resuelve por validación de la vigencia de la cotización en cada acceso y en cada submit (ver historia del formulario operativo). Si la cotización venció al momento de abrir o enviar, el acceso o el submit se rechazan con el estado correspondiente; si la cotización se extiende, el mismo enlace sigue sirviendo.
Paso 2 — Formulario operativo y generación de instrucciones¶
- El formulario muestra en su cabecera el resumen de la cotización que el cliente está completando (número, ruta, modalidad, total, desglose, vigencia), de modo que el cliente vea exactamente qué operación está a punto de formalizar.
- El cliente completa los datos operativos del embarque (ver historia de formulario de datos operativos) y envía.
- El envío del formulario no aprueba formalmente la cotización: registra los datos operativos y dispara la generación de las instrucciones del embarque (PDFs para proveedor, operador logístico y equipo interno — ver historias correspondientes del epic de embarques).
- Una vez generadas las instrucciones, FleteChat envía al email verificado del contacto un correo con: (a) las instrucciones completas (inline o como adjuntos) y (b) un enlace firmado de aprobación formal, de un solo uso, sin fecha de expiración propia: la validez se resuelve por validación de la vigencia de la cotización en cada acceso y en cada click (mismo patrón que el enlace del formulario).
- FleteChat avisa al cliente por WhatsApp que le envió el correo con las instrucciones y el enlace de aprobación, e indica que debe revisar y aprobar desde ahí para formalizar la operación.
Paso 3 — Aprobación formal y formalización¶
- El click del cliente en el enlace de aprobación del correo de instrucciones es el acto de aprobación formal y efectivo. En ese momento: a. La cotización queda marcada como aprobada formalmente con fecha, canal (
email_instruction_link), contacto que aprobó, IP y user-agent registrados para auditoría. b. Se emite el número de embarque definitivo (formato y unicidad definidos en la historia correspondiente). c. Se distribuyen los PDFs a los destinatarios configurados (proveedor del cliente, operador logístico externo, archivo interno — ver historias del epic de embarques). d. La operación logística queda en estado de ejecución. - El enlace de aprobación es de un solo uso: un segundo click sobre el mismo enlace retorna una página indicando que ya fue consumido, con referencia al embarque registrado.
- FleteChat avisa al cliente por WhatsApp que la cotización quedó aprobada, indica el número de embarque emitido y declara que la operación está en marcha.
Invariante de vigencia¶
- Los tres pasos (intención, envío del formulario, click de aprobación) deben completarse antes del vencimiento de la cotización definido por la vigencia de la cotización original (ver historia de vigencia y expiración). Si la cotización vence en cualquier punto del flujo, la reserva preliminar se libera, los enlaces activos se invalidan y la aprobación no se produce.
- Si la cotización vencía durante el flujo, FleteChat avisa al cliente por WhatsApp y le ofrece iniciar de nuevo con validación de vigencia de precios.
Expiración y cancelación de la reserva¶
- Si el cliente no envía el formulario operativo antes del vencimiento de la cotización, la reserva preliminar vence: la cotización queda como no aprobada y la tarifa deja de estar reservada. FleteChat avisa por WhatsApp y ofrece reenvío del enlace (mientras la cotización esté vigente) o validación de vigencia de precios (si ya venció).
- Si el cliente envía el formulario pero no hace click en el enlace de aprobación formal antes del vencimiento de la cotización, la reserva y las instrucciones generadas quedan en estado preparado pero no formalizado; FleteChat avisa al cliente y ofrece reenviar el correo de instrucciones mientras la cotización siga vigente, o validación de vigencia de precios si ya venció.
Vigencia al iniciar¶
- Si al momento de la intención en WhatsApp la cotización ya está vencida, FleteChat aplica el flujo de validación de vigencia de precios (ver historia de vigencia y expiración) antes de enviar el enlace al formulario.
- Una cotización ya aprobada formalmente no puede ser re-aprobada: si el cliente pide aprobarla otra vez, FleteChat le indica que ya está aprobada y le muestra el número de embarque asociado.
Seguridad y autoría¶
- Un colaborador autorizado puede iniciar la aprobación de cotizaciones que él mismo inició; la visibilidad y el alcance de acción siguen lo definido en la historia de titular y colaboradores. Los correos (enlace al formulario y enlace de aprobación formal) van a su email verificado, no al del titular, para que la evidencia de aprobación sea de quien realmente la ejecutó.
- FleteChat no acepta la aprobación si el email del contacto no está verificado: declara la situación y ofrece handoff para verificación manual antes de proceder.
Edge cases¶
- Cliente confirma la intención pero nunca abre ni envía el formulario. La reserva vence y el agente le avisa; el cliente puede pedir reenvío del enlace o iniciar una nueva aprobación (con re-validación de vigencia si corresponde).
- Cliente abre el formulario, lo guarda sin enviar y se sale. El formulario queda en estado borrador dentro de la misma sesión; mientras no se envíe, las instrucciones no se generan. Al vencer el enlace o la cotización, el borrador se descarta.
- Cliente envía el formulario pero no hace click en el enlace de aprobación formal. Las instrucciones están generadas pero la operación no está formalizada: la reserva sigue vigente mientras no venza ni el enlace ni la cotización. FleteChat envía recordatorio antes del vencimiento y, si no recibe el click a tiempo, declara el vencimiento y ofrece reenviar el correo de instrucciones con un enlace nuevo mientras la cotización esté vigente.
- La cotización vence durante el paso 2 o el paso 3. La reserva se libera, los enlaces activos se invalidan y FleteChat avisa al cliente. Si quiere retomar, aplica el flujo de validación de vigencia de precios.
- Cliente dice "sí" pero pide cambiar algo antes de enviar el formulario. FleteChat invalida el enlace al formulario ya enviado y regenera uno nuevo con los cambios acordados, siempre dentro de la vigencia de la cotización.
- Cliente hace click en el enlace de aprobación formal y cambia de opinión inmediatamente después. FleteChat explica que la cotización ya fue aprobada formalmente y ofrece handoff para cancelar el embarque antes de que la operación arranque materialmente.
- El correo con el enlace al formulario no llega al cliente (spam, typo, buzón lleno). FleteChat pide confirmar el correo, ofrece reenvío por correo (y resalta que el enlace también está en WhatsApp), y si persiste la falla activa handoff.
- El correo con las instrucciones y el enlace de aprobación formal no llega al cliente. FleteChat lo detecta (bounce del proveedor de correo) o lo descubre al notar que el cliente no ha clickeado; ofrece reenviar, valida la dirección, y si persiste activa handoff.
- Cliente reenvía cualquiera de los enlaces a otra persona (por ejemplo, a un asistente o un superior). Los enlaces son de un solo uso; quien clickee primero consuma la acción. El sistema registra IP y user-agent para auditoría si hay disputa posterior.
- El email del contacto no está verificado al momento de aprobar. FleteChat lo declara, explica que la aprobación requiere un correo verificado, y ofrece reiniciar el flujo tras verificación o handoff humano.
- Cliente pide aprobar sin haber recibido todavía el desglose completo (por ejemplo, porque un cargo dependía de un dato aún faltante). FleteChat completa primero el dato faltante y re-presenta el total antes de enviar el enlace al formulario.
- Cliente intenta aprobar una cotización de otro cliente por confusión (por ejemplo, titular confirma una del colaborador). FleteChat aclara quién inició esa cotización y, si corresponde, ofrece al titular retomarla bajo su propio email verificado; si no corresponde, rechaza.
- Falla al generar las instrucciones tras el envío del formulario. FleteChat lo declara al cliente por WhatsApp, reintenta una vez, y si sigue fallando activa handoff; la cotización queda con datos operativos cargados pero sin instrucciones ni aprobación formal (reserva vigente hasta el límite).
- Falla al distribuir los PDFs tras el click de aprobación formal. La aprobación ya se registró y el número de embarque se emitió; la distribución de PDFs se maneja con la política de reintentos del canal correspondiente (ver historias de instrucciones para proveedor, operador y equipo interno).
- El proveedor de correo cae al momento de enviar alguno de los correos. FleteChat envía el enlace al formulario por WhatsApp de todas formas (paso 1) y, si el correo de instrucciones no sale, declara el problema al cliente en WhatsApp y ofrece handoff.
- Cliente completa el formulario con datos operativos inválidos (campos faltantes, formato incorrecto). El formulario muestra los errores y no procesa el envío; el paso 2 no avanza hasta que el cliente corrige.
Tamaño, prioridad y tipo¶
- Tamaño: M
- Prioridad: P0 — sin aprobación conversacional, el valor diferencial de FleteChat se pierde.
- 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-057 — Aprobación formal por click en el enlace del correo de instrucciones. La aprobación formal de una cotización se consuma con el click del cliente en el enlace de aprobación enviado en el correo de instrucciones del embarque. Ni el "sí" por WhatsApp ni el envío del formulario operativo aprueban formalmente: el "sí" dispara la reserva preliminar y el envío del formulario, y el envío del formulario dispara la generación y entrega de las instrucciones.
- PR-058 — Tres pasos sobre dos canales. El flujo tiene tres pasos (intención en WhatsApp, formulario operativo, click en enlace del correo de instrucciones) sobre dos canales: WhatsApp como canal principal de interacción y correo verificado como canal de entrega de enlaces firmados y evidencia de no-repudio.
- PR-059 — Correo al email verificado del contacto que aprueba. Tanto el enlace al formulario como el correo con las instrucciones y el enlace de aprobación formal van al email verificado del contacto que está aprobando (titular o colaborador, según el rol), no a un email genérico de la cuenta. Si el email no está verificado, el flujo no procede.
- PR-067 — Reserva preliminar tras la intención. El "sí" por WhatsApp genera una reserva preliminar de la tarifa que se mantiene mientras la cotización esté vigente. Si la cotización vence antes del click de aprobación formal, la reserva se libera.
- PR-068 — Vigencia de la cotización como único plazo. Los tres pasos deben completarse antes del vencimiento de la cotización. No existen plazos intermedios propios de los enlaces: la validez se resuelve en cada interacción contra la cotización.
- PR-069 — Enlaces de un solo uso. Tanto el enlace al formulario operativo como el enlace de aprobación formal son de un solo uso para su ciclo. Un reenvío invalida el anterior.
- PR-070 — Formalización post-aprobación. Tras el click de aprobación formal, el sistema emite el número de embarque definitivo y dispara la distribución automática de los PDFs a proveedor, operador logístico y equipo interno.
- PR-071 — Inmutabilidad tras aprobación formal. Una vez registrada la aprobación formal, la cotización no puede ser re-aprobada ni modificada vía agente. Cambios post-aprobación requieren handoff.
- PR-221 — La cotización honra el snapshot del nivel corporativo al momento de emisión. Toda cotización se emite con los precios y las condiciones del nivel corporativo vigente al momento de su emisión (ver la historia de asignación de nivel corporativo, PR-157). Si el nivel corporativo vence o cambia entre la emisión y la aprobación formal, la cotización mantiene el precio del snapshot mientras su vigencia propia (PR-063) no haya expirado: la aprobación formal del cliente honra el compromiso comercial emitido en su momento. Cuando el cliente solicita re-cotizar (ver historia de re-cotización corporativa), el sistema sí aplica el nivel actual y puede declinar si el nivel ya no está activo.
- PR-226 — Landing de aprobación con doble confirmación y alerta post-consumo. El click del cliente en el enlace de aprobación formal lo lleva a una página intermedia que resume la operación (código de embarque tentativo, ruta, monto, vigencia, partes) y exige un segundo click de confirmación explícita ("Apruebo formalmente") para consumar la aprobación (PR-057). Un solo click no formaliza nada. Inmediatamente después del consumo, FleteChat envía al titular por WhatsApp una notificación de confirmación con los datos principales y una indicación de cómo proceder si la aprobación no fue suya (handoff con operador). Los intentos de consumo del enlace registran IP y user-agent en audit log (ya contemplado en el diseño original de los edge cases).
Refinamiento y Definition of Ready¶
Notas¶
| Fecha | Participantes | Acuerdo / Nota |
|---|---|---|
| 2026-04-17 | Kaeus | Versión inicial. |
| 2026-04-18 | Kaeus | Refinamiento del flujo: tres pasos (intención WhatsApp → formulario → click en enlace del correo de instrucciones = aprobación formal); todo antes del vencimiento de la cotización. Diagrama mermaid del flujo end-to-end añadido. |
| 2026-04-18 | Kaeus | Propagación de códigos cortos CNNN / ENNN a los diálogos. Español panameño (sin voseo). |
| 2026-04-18 | Kaeus | Aprobación interna: pase a 🔵 Refinada. |
| 2026-04-20 | Kaeus | Se añaden PR-221 (la cotización honra el snapshot del nivel corporativo al momento de emisión hasta que expire la vigencia; resolución P6-08) y PR-226 (landing de aprobación con doble confirmación + alerta WhatsApp inmediata al titular; resolución P3-09). Hallazgos de la revisión exhaustiva. |
Checklist¶
- ✅ Historia escrita en formato Como / Quiero / Para
- ✅ Persona de usuario identificada
- ✅ Contexto de negocio documentado
- ✅ Flujo end-to-end diagramado (mermaid)
- ✅ Criterios de aceptación observables y pass/fail
- ✅ Edge cases relevantes listados
- ✅ Tamaño y prioridad asignados
- ⬜ Premisas PR-057 a PR-059, PR-067 a PR-071, PR-221 y PR-226 confirmadas por el cliente
- ⬜ Reglas de negocio aplicables aprobadas
- ⬜ Requerimientos funcionales aplicables aprobados
- ⬜ Historia aprobada formalmente por el cliente