storyboard · v1.0 · septiembre 2026

Mogui por WhatsApp · fase 1 y fase 2

Reenvíalo a Mogui. La búsqueda nace sola

Un cliente pide un producto por WhatsApp, a veces con una nota de voz. Carlos reenvía esos mensajes al número de Mogos donde vive Mogui, con las pistas de proveedor que tenga. Mogui lo reconoce por su número, transcribe el audio, encuentra al cliente, pregunta lo que falta y crea la búsqueda en Mogos con su cobro; la plataforma le avisa al cliente con el botón de pago, y Grok Bot despierta. Esta pieza muestra la conversación tal como se ve en cada teléfono, y lo que pasa por detrás en cada mensaje.

Origen
Carlos, CTO · 6 de septiembre de 2026
Alcance
Fase 1 · crear la búsqueda · Fase 2 · Grok Bot
Pieza hermana
DISENO-MOGUI-FLUJO.md · el tablero admin
Datos
Ficticios · códigos con formato real
Página interna · datos ficticios

María Ferrer, sus libretas, los proveedores, los teléfonos y los montos son escena de diseño. Los códigos siguen el formato real de la plataforma (COT-AAAAMMDD-NNNN: una búsqueda es una cotización que todavía no tiene precio, y comparte el folio).

00Cómo leer esta pieza
tres capas por escena

Lo que ve la persona

El teléfono, con WhatsApp tal cual: burbujas, ticks, la nota de voz, el reenvío, los botones. Nada de lo que aparece en el cristal es un wireframe: es lo que Carlos vería mañana.

Lo que pasa por detrás

Una línea de tiempo numerada. Cada número aparece también pegado a la burbuja que lo provoca. Dice quién hace cada paso: Meta API Mogui · eve Grok Bot Persona.

La regla que lo sostiene

La decisión de producto detrás de cada pantalla, en una línea. Las que todavía son de Carlos están marcadas así en el documento de diseño, sección J.

Cada teléfono trae «Reproducir»: la conversación se escribe sola, mensaje a mensaje, con el «escribiendo…» antes de cada respuesta de Mogui. Sirve para presentarla en una reunión sin leerla en voz alta.

01El cliente escribe
fuera de Mogos
10:02
12
MF
María Ferrer
en línea
Hoy
1Hola Carlos, buenas. Quiero 500 libretas A5 tapa dura con mi logo en la portada, para regalar a clientes en diciembre. ¿Me las consigues en China?10:02
MF
0:3210:03
Algo así, azul marino con el logo dorado
10:03
2Dame un momento y te digo. Lo paso al equipo de búsquedas ahora mismo.10:08
Mensaje

El WhatsApp personal de Carlos. María escribe, deja una nota de voz de 0:32 y manda una foto de referencia.

La petición nace fuera de la plataforma, y ahí se quedaba.

Hoy este mensaje termina en un papel o en la memoria de quien lo recibió. Pedro lo dijo sin rodeos en agosto: me llamaron cinco personas, tú lo anotas en un papel de momento. La plataforma ya sabe abrir una búsqueda desde un mensaje del inbox, pero este chat no está en el inbox: es el número personal de Carlos, y Mogos no lo ve.

Por detrástodavía nada
  1. 1
    Un texto, una nota de voz y una foto Persona

    Tres mensajes distintos. La nota de voz trae lo que el texto no dice: tapa dura, azul marino, logo dorado, «si el mínimo del proveedor es más, dime cuánto».

  2. 2
    Carlos responde y promete pasarlo Persona

    La promesa es el problema: «lo paso al equipo» hoy significa abrir el admin, buscar a María, copiar el texto y transcribir el audio de oído.

Por eso existe el reenvío. Cuando la petición ya está en el inbox de Mogos, el botón «Crear búsqueda desde este mensaje» basta. Mogui resuelve el otro caso: la petición que llegó a un teléfono del equipo.
02El reenvío
dos gestos que WhatsApp ya tiene
10:09
Cancelar3 seleccionados·1
Hoy
Hola Carlos, buenas. Quiero 500 libretas A5 tapa dura con mi logo en la portada, para regalar a clientes en diciembre. ¿Me las consigues en China?10:02
MF
0:3210:03
Algo así, azul marino con el logo dorado
10:03
Dame un momento y te digo. Lo paso al equipo de búsquedas ahora mismo.10:08

Mantener pulsado el primer mensaje y tocar los otros dos. Texto, audio y foto viajan juntos.

10:09
12
MF
María Ferrer
en línea
Hoy
Hola Carlos, buenas. Quiero 500 libretas A510:02

Reenviar a… Mogos. El mismo número de empresa al que escriben los clientes. No hay un número nuevo que guardar.

WhatsApp reenvía el contenido, no al remitente.

Un mensaje reenviado llega marcado como Reenviado, con su texto, su audio y su foto intactos, pero sin decir quién lo escribió. Mogui va a recibir tres mensajes de Carlos, no de María. Por eso el protocolo pide un segundo gesto, también nativo de WhatsApp: compartir el contacto del cliente (o escribir «es para María, +58 412 555 4471»). Con el contacto, Mogui sabe a quién buscar en Mogos.

Por detráslo que viaja y lo que no
  1. 1
    Tres mensajes llegan al webhook, uno por uno Meta

    Meta entrega cada reenvío como un evento aparte, con el audio como media_id y la marca de reenviado en context.forwarded. El API ya recibe, verifica la firma y guarda los tres (webhook.processor.ts); hoy no persiste la marca de reenviado, es un campo que se añade.

  2. 2
    El contacto llega como tarjeta, no como texto Meta

    Una tarjeta de contacto es un mensaje de tipo contacts con nombre y teléfonos. El API ya lo proyecta y lo guarda tal cual (projectInboundContacts): Mogui lee el wa_id sin adivinar nada.

Un solo número. Mogui vive en el número de empresa de Mogos, el mismo que atiende a los clientes. Lo que cambia es quién escribe: un teléfono del equipo entra en modo operador; cualquier otro, al bot de clientes de siempre.
El cliente se nombra, no se infiere. Reenvío + contacto. Si Carlos olvida el contacto, Mogui lo pide antes de crear nada.
03Carlos y Mogui
detección · confirmación · creación

El mismo chat, en tres momentos. Los números de las burbujas son los de la línea de tiempo de abajo: siete pasos entre el reenvío de las 10:09 y la búsqueda con encargado de las 10:16.

10:09
11
Mogos
Cuenta de empresa
Hoy
1
Reenviado
Hola Carlos, buenas. Quiero 500 libretas A5 tapa dura con mi logo en la portada, para regalar a clientes en diciembre. ¿Me las consigues en China?10:09
Reenviado
MF
0:3210:09
Reenviado
Algo así, azul marino con el logo dorado
10:09
2
MF
María Ferrer
+58 412 555 4471
MensajeGuardar contacto
10:09
Prueba con Shenzhen Yitai, nos vendió libretas en marzo. Y mira este de Alibaba: alibaba.com/product-detail/A5-Hardcover-Notebook-Custom-Logo_1600…10:10
Mensaje

10:09 · llega el reenvío. Tres mensajes reenviados, la tarjeta de contacto de María y dos pistas de proveedor que Carlos escribe de su cabeza.

10:13
11
Mogos
escribiendo…
3Modo operador, Carlos (Admin). Leyendo los 3 reenvíos.10:13
Es María Ferrer, la encontré por el contacto. La nota de voz (0:32) dice: «…tapa dura, azul marino si se puede, logo dorado en la portada. Unas 500. Si el mínimo es más, dime cuánto y vemos.» Con eso tengo todo; te paso la tarjeta.10:13
4
Búsqueda lista para crear
Cliente: María Ferrer · +58 412 555 4471 · en Mogos
Qué pidió: 500 libretas A5 tapa dura, azul marino, logo dorado en portada
Cantidad: 500 · MOQ si el mínimo es mayor
Personalizado: con logo
Rubro: Papelería y oficina
Proveedores sugeridos: Shenzhen Yitai · 1 enlace de Alibaba
Encargado: sin asignar (queda en «Nuevas»)
Servicio de búsqueda: USD 100
Vence en 2 h · «Corregir» o «cambiar cantidad 300»
10:13
Crear y cobrar 100
No cobrar
Corregir
Mensaje

10:13 · acuse, hallazgo, tarjeta. Un acuse de una línea antes de trabajar, a quién reconoció, lo que dijo el audio, y la tarjeta con tres botones. Sin saludo de help-desk.

10:16
11
Mogos
Cuenta de empresa
5
Mogos
Búsqueda lista para crear
Crear y cobrar 10010:14
6Quedó como COT-20260906-0031 para María Ferrer: 500 libretas A5 tapa dura con logo, en Nuevas, sin encargado.10:14
María ya tiene el aviso con el botón de pago de USD 100. Su ventana estaba abierta: fue mensaje directo.10:14
Anclé la nota de voz, la transcripción y la foto. Tus dos pistas van para Grok Bot.
Búsquedas · COT-20260906-0031
María Ferrer · Libretas A5 tapa dura con logo · Nueva
admin.mogosgroup.com
10:14
Asígnasela a Jesús10:16
7Jesús Contreras queda de encargado. Sigue en Nueva hasta que María pague los USD 100 o la exoneres.10:16
Mensaje

10:14 · un botón, tres mensajes cortos. Qué quedó, qué salió, qué quedó anclado. Prosa, no memo. A las 10:16, un pedido más en la misma sesión.

Mogui sabe quién le escribe antes de leer qué le escribe.

El número de Carlos está en la plataforma, verificado, con rol de administrador y permiso para crear búsquedas. Eso es todo lo que Mogui necesita para entrar en modo operador: no hay que iniciar sesión, no hay un código, no hay un número nuevo. La prueba de identidad es la misma que usa el registro mágico del bot de clientes: la firma de Meta prueba que el mensaje viene de ese teléfono.

Lo demás es conversación: transcribe, encuentra a María, arma el resumen con los seis campos que Pedro dictó para la tarjeta de «Nueva búsqueda», y pregunta antes de crear. Un botón, y la fila existe en el tablero con su cobro disparado. Si al armar la búsqueda falta un dato que el DTO exige, lo pide antes de la tarjeta (escena 05).

Por detrásde 10:09 a 10:16
  1. 1
    Los tres reenvíos entran por el webhook de siempre MetaAPI

    Firma HMAC verificada, fila en messages bajo la conversación de Carlos, audio descargado a S3. Es el camino de cualquier mensaje entrante; nada nuevo hasta aquí.

  2. 2
    La compuerta de operador decide el camino API

    Teléfono en E.164 → usuario con phoneVerified, activo, rol de equipo, en la lista de operadores y con SERVICE_QUOTES:CREATE. Si pasa, el bot de clientes calla y el API agrupa el lote (8 s sin mensajes nuevos) antes de despachar. La tarjeta de contacto cierra el lote.

  3. 3
    Mogui recibe el lote con la identidad firmada APIMogui

    Una sesión durable por conversación de operador. El principal de la sesión es Carlos (id, rol, permisos, empresa), firmado por el API; nunca sale del cuerpo del mensaje. Mogui transcribe el audio con un paso de voz a texto y guarda el texto en el mensaje, para que el inbox también lo muestre.

  4. 4
    Busca al cliente y aparca la pregunta Mogui

    find_client por teléfono y nombre: una coincidencia. El resumen sale como tarjeta con tres botones (límite de WhatsApp: tres, de 20 caracteres) y el turno queda aparcado hasta 2 h sin consumir nada.

  5. 5
    El botón vuelve como respuesta a la pregunta aparcada MetaAPI

    Meta entrega el toque como interactive.button_reply; el API lo traduce a la respuesta de la pregunta pendiente en la sesión de Mogui. Solo el teléfono que inició la sesión puede responderla.

  6. 6
    Se crea la búsqueda y se dispara el cobro MoguiAPI

    POST /service-quotes actuando como Carlos: cliente María, tipo búsqueda de producto, estado Nueva, primer producto con cantidad, MOQ, personalizado y rubro, searchFee: 100, ancla al mensaje. El API resuelve la empresa emisora desde CompanyUser, escribe la línea «Búsqueda de productos» y corre «Cobrar»: enlace firmado + WhatsApp a María. La respuesta de Mogui vuelve por el callback del API, que la manda por MessagingService. Mogui nunca habla con Meta.

  7. 7
    Un pedido más, misma sesión MoguiAPI

    «Asígnasela a Jesús» es PATCH /service-quotes/:id con assignedAgentId, validado con el mismo predicado que usa «Tomarla». La búsqueda sigue en Nueva hasta que el pago la mueva, como dicta el ciclo comercial.

Lo que viaja del API a Mogui (el despacho) JSON · un lote por conversación
POST http://mogui:10000/channels/mogos-api/operator   · red interna de Render
Authorization: Bearer <MOGOS_EVE_SERVICE_TOKEN>

{
  "conversationId": "c7f1…",            · token de continuación → una sesión por operador
  "operator": "<JWT HS256 firmado por el API>",   · sub: userId · rol · permisos · empresas · exp 10 min
  "messages": [
    { "id": "m1", "type": "text",  "forwarded": true, "text": "Hola Carlos, buenas. Quiero 500 libretas…" },
    { "id": "m2", "type": "audio", "forwarded": true, "media": { "url": "https://s3…/m2.ogg", "mimeType": "audio/ogg", "expiresAt": "…" } },
    { "id": "m3", "type": "image", "forwarded": true, "media": { "url": "https://s3…/m3.jpg", "mimeType": "image/jpeg" }, "caption": "Algo así…" },
    { "id": "m4", "type": "contacts", "contacts": [ { "name": "María Ferrer", "phones": ["+584125554471"], "waId": "584125554471" } ] }
  ],
  "batchKey": "c7f1…:m4"                  · idempotencia: el mismo lote nunca se procesa dos veces
}
Lo que vuelve de Mogui al API (el callback) JSON · el API decide cómo entregarlo
POST https://api…/messaging/bot/reply             · firmado con el mismo secreto

{
  "conversationId": "c7f1…",
  "kind": "ask",                             · reply · ask · escalate · degraded
  "requestId": "req_01J…",                   · la pregunta aparcada que espera el botón
  "messages": [ { "type": "interactive", "header": "Búsqueda lista para crear", "body": "…", "footer": "Vence en 2 h…",
      "buttons": [ { "id": "approve", "title": "Crear y cobrar 100" }, { "id": "waive", "title": "No cobrar" }, { "id": "edit", "title": "Corregir" } ] } ],
  "intent": "operator.search.confirm",
  "toolsUsed": [ "transcribe_audio", "find_client" ]
}
El cliente de la búsqueda es María, nunca Carlos. Una búsqueda archivada bajo quien la reenvió es una búsqueda perdida para el embudo.
Nada se crea sin un botón. La tarjeta muestra exactamente lo que va a pasar; la confirmación vence a las 2 h y, si vence, no se crea nada.
Cobrar es una decisión, no un default. «Crear y cobrar 100» y «No cobrar» son los dos botones de la tarjeta del admin, llevados al teléfono. El texto del cobro a María es el que Pedro apruebe.
04María recibe el aviso
la fase 1 cierra en el teléfono del cliente
12:03
3
Mogos
Cuenta de empresa
Hoy
1Hola María, recibimos tu solicitud de búsqueda de productos.

Tu número de solicitud es COT-20260906-0031.

Para que nuestro equipo empiece a buscar proveedores, el servicio de búsqueda tiene un costo de USD 100.00. Puedes pagarlo desde el botón de abajo, de forma segura.

Apenas registremos tu pago, comenzamos.

¡Gracias por confiar en Mogos!

Mogos 10:14
2
Pagar ahora
3Listo, ya pagué por Zelle. Ref ZL-8827-4410 🙌12:03
Mensaje

El WhatsApp de María con el número de Mogos. El aviso llega a las 10:14, un segundo después de que Carlos tocara el botón. Ella paga a las 12:03.

El cliente recibe un solo mensaje, de la plataforma, con el texto que ya está escrito.

Esto no lo diseña Mogui ni lo escribe el modelo: es el aviso que la plataforma manda desde el 4 de septiembre cuando una búsqueda nace con cobro (PR #502). Dice qué pidió, cuánto cuesta empezar y cómo pagar, con el botón «Pagar ahora». Es la promesa que la fase 2 respeta: apenas registremos tu pago, comenzamos.

Por detrásde 10:14 a 12:04
  1. 1
    La creación dispara el cobro con intención «búsqueda creada» API

    create() llama a charge(quoteId, chargedBy, 'SEARCH_CREATED'). El texto es SEARCH_CREATED_TEXT de service-quotes-board.service.ts; con la ventana de 24 h abierta sale como mensaje normal con el enlace en el cuerpo, con la ventana cerrada sale la plantilla service_quote_search_created_prod con el botón. El cliente no puede notar la diferencia.

  2. 2
    El botón lleva el enlace de pago firmado Meta

    URL dinámica payments.mogosgroup.com/pay?token= + el JWT del enlace de pago (vence en 24 h; Stripe, PayPal o Binance). Categoría MARKETING, idioma es, sin cabecera, pie «Mogos». La plantilla está pendiente de aprobación en Meta (META_URLS_TO_UPDATE.md): hasta entonces, con la ventana cerrada el enlace no se entrega y Mogui se lo da a Carlos.

  3. 3
    El pago mueve la búsqueda y despierta la etapa 2 PersonaAPI

    Gaby registra el Zelle; la búsqueda pasa a «En búsqueda» porque tiene encargado (advanceSearchOnQuotationSettled) y el API publica search.sourcing_requested a Grok Bot. Escena 06.

Mogui no le escribe al cliente. El único mensaje que María recibe lo manda la plataforma, con el texto que Pedro aprueba, por el camino que ya existe.
La ventana decide texto o plantilla; el cliente no lo nota. Es la regla del PR #502 y la razón de que los dos textos sean idénticos palabra por palabra.
05Cuando algo falta
Mogui pregunta, no adivina

Ocho situaciones que van a pasar la primera semana. En todas, Mogui dice qué tiene, qué le falta y qué hacer, en su voz. Ninguna termina en una búsqueda a medias: nada se escribe en Mogos hasta el botón, y lo que el DTO exige se pregunta, no se supone.

11:04
Mogos
Cuenta de empresa
Reenviado
Hola Carlos, necesito lámparas LED de escritorio con nuestro logo para regalo corporativo. ¿Qué precio manejan?11:01
Leído. Me faltan dos cosas: para quién es (nombre o su contacto) y cuántas.11:02
Ana Torres, +58 414 200 1188. Ella habló de 20011:03
Ana no tiene cuenta en Mogos. Dame su correo y la creo; le llega un acceso.11:03
ana.torres@corpx.com11:04
Cuenta creada. Va la tarjeta: 200 lámparas con logo, rubro sin definir.11:04
Mensaje

Faltan datos

El DTO exige cliente y producto; la cantidad caería a 1 en silencio, así que Mogui la exige también. Pide lo que falta en un lote corto, en prosa, y no crea nada hasta tenerlo.

10:15
Mogos
Cuenta de empresa
Mogos
Búsqueda lista para crear
Corregir10:14
¿Qué cambio? Vale «cantidad 300», «para Jesús» o «cobrar 60».10:14
cantidad 300 y cobrar 6010:15
Búsqueda lista para crear · v2
Cantidad: 300 500 · MOQ si el mínimo es mayor
Servicio de búsqueda: USD 60 USD 100
Vence en 2 h
10:15
Crear y cobrar 60
No cobrar
Corregir
Mensaje

«Corregir»

El botón pregunta qué; el texto libre «cambiar cantidad 300» hace lo mismo sin botón. La tarjeta vuelve como v2 con el dato cambiado marcado y el botón de cobro con el monto nuevo.

10:13
Mogos
Cuenta de empresa
No encuentro a María Ferrer en Mogos: busqué por +58 412 555 4471 y por nombre. Dame su correo y le creo la cuenta; le llega un acceso.10:13
maria.ferrer@gmail.com10:14
Cuenta creada: María Ferrer · +58 412 555 4471 · maria.ferrer@gmail.com. Va la tarjeta.10:14
Mensaje

El cliente no tiene cuenta

La búsqueda exige un cliente real; crearlo pide un correo y avisa que llegará un acceso. Nunca se inventa una cuenta ni se cuelga la fila de Carlos.

10:13
Mogos
Cuenta de empresa
Hay dos clientas con ese nombre
Encontré dos cuentas llamadas María Ferrer. ¿Para cuál es la búsqueda?
Elegir
10:13
María Ferrer
+58 412 555 4471 · 3 envíos · cliente desde 2025
María Ferrer Díaz
+58 414 200 1188 · sin envíos
Ninguna: crear cuenta nueva
Mensaje

Dos clientas iguales

Una lista de WhatsApp (hasta diez filas). El teléfono compartido casi siempre desempata solo; el nombre a secas, no.

10:13
Mogos
Cuenta de empresa
No pude transcribir la nota de voz (0:32): mucho ruido de fondo. Con el texto ya tengo el producto y la cantidad; me falta lo que dijo del color y del logo. ¿Me lo escribes?10:13
Azul marino, logo dorado en la portada. Si el MOQ es más de 500 que le digan cuánto10:15
Anotado. Va la tarjeta.10:15
Mensaje

El audio no se entiende

Mogui dice qué parte ya tiene y qué le falta. La nota de voz queda anclada igual, para que quien busque la oiga.

12:20
Mogos
Cuenta de empresa
Búsqueda lista para crear
Cliente: María Ferrer
Qué pidió: 500 libretas A5…
Vence en 2 h
10:13
La confirmación de la búsqueda de María Ferrer venció: pasaron 2 h sin respuesta y no creé nada.

Reenvíamela cuando quieras y la retomo desde donde quedó.

12:13
Mensaje

Carlos no respondió

La pregunta aparcada tiene fecha de caducidad. Vencer no crea nada y lo dice: un borrador silencioso sería peor que ninguno.

16:41
Mogos
Cuenta de empresa
Reenviado
Buenas, quiero cotizar 200 sillas plegables blancas16:40
Hola, soy el asistente de Mogos. Te ayudo a rastrear tu orden, calcular tu flete o ver cómo importar desde China. ¿Qué necesitas?16:41
Mensaje

Un número que no es del equipo

Quien no está en la lista de operadores nunca ve el modo operador: recibe al bot de clientes de siempre. La compuerta niega por defecto.

10:10
Mogos
Cuenta de empresa
Reenviado
Hola Carlos, buenas. Quiero 500 libretas A510:09
Mogui no está disponible ahora mismo. Tu reenvío quedó guardado en el inbox de Mogos: puedes abrir la búsqueda desde el admin, o volver a intentarlo en unos minutos. admin.mogosgroup.com/inbox10:10
Mensaje

Mogui está caído

Lo dice el API, no Mogui. Nada se pierde: los mensajes ya están en el inbox y el camino manual sigue existiendo.

06Fase 2 · arranca la búsqueda
Grok Bot busca · Mogui avisa
13:52
11
Mogos
Cuenta de empresa
Hoy
1Arrancó COT-20260906-0031: María Ferrer pagó los USD 100 (Zelle, ref. ZL-8827-4410) y Jesús Contreras es el encargado.

Grok Bot ya revisó a los proveedores de Mogos con tus dos pistas (Shenzhen Yitai sirve) y sale a Alibaba por tres opciones. Te aviso cuando termine.

12:05
Perfecto12:07
2
Grok Bot terminó: 3 candidatas
Para las libretas de María Ferrer · COT-20260906-0031 · 1 h 40 min.
  • Shenzhen Yitai · proveedor Mogos, tu pista · USD 3,80 · MOQ 300 · 15 días
  • Yiwu Jinhao · Alibaba, tu enlace · USD 3,90 · MOQ 500 · 18 días
  • Ningbo Bright Paper · Alibaba · USD 3,60 · MOQ 1.000 · 25 días

Jesús ya tiene la tarea «Validar candidatas» en su centro de acciones, y el mensaje para Yitai está redactado: sale cuando él lo apruebe. Nada le llega a María hasta que valide.

Precios en USD por unidad, sin flete. Evidencia y fichas en el tablero.
13:51
Ver candidatas
Mensaje

Dos avisos de Mogui, horas después, en el mismo chat. Ninguno pide nada: informan y dan un enlace.

El disparo no lo da Mogui: lo da el hecho.

El API despierta a Grok Bot dos veces con el mismo sobre: al crearse la búsqueda (revisa los proveedores de Mogos y las pistas del asesor, sin coste) y al pasar a «En búsqueda», cuando entra el pago o se exonera (sale a Alibaba). Ese cruce ya existe en la plataforma; lo que se añade es el webhook firmado. Así funciona igual si la búsqueda nació de Mogui, del inbox o del formulario del admin. Las pantallas de esa corrida están en Grok Bot busca.

Grok Bot devuelve candidatas, no verdades: proveedor, origen (proveedor Mogos, Alibaba, pista del asesor), precio, MOQ, tiempo, evidencia. Se guardan como opciones marcadas con su origen y no mueven el estado; la tarea de validarlas nace en el centro de acciones del encargado. Ninguna opción pasa a cotizada sin una persona.

Por detrásel contrato de fase 2
  1. 1
    Pago registrado → «En búsqueda» → evento API

    El paso que ya hace advanceSearchOnQuotationSettled escribe además una fila en la bandeja de salida (outbox). Un despachador la entrega a GROK_WEBHOOK_URL con firma HMAC y clave de idempotencia; reintenta si Grok no responde 2xx. Mogui recibe una notificación y avisa a Carlos en su chat (ventana abierta: texto; cerrada: plantilla).

  2. 2
    Grok devuelve el resultado al API, nunca a WhatsApp Grok BotAPI

    POST /integrations/sourcing/results firmado, con el mismo requestId. El API valida, crea las opciones como candidatas (con proposedBy: GROK, sin recomendada, sin cambiar el estado) y notifica: a Jesús en el centro de acciones, a Carlos por Mogui. Un resultado repetido con la misma clave se ignora.

El evento que recibe Grok Bot search.sourcing_requested · v2026-09-06
POST {GROK_WEBHOOK_URL}
X-Mogos-Event: search.sourcing_requested
X-Mogos-Signature: t=1757160300,v1=<hmac-sha256(secret, t + "." + body)>
Idempotency-Key: search:COT-20260906-0031:1

{
  "version": "2026-09-06",
  "search": { "id": "sq_…", "code": "COT-20260906-0031", "status": "SOURCING", "companyCode": "MOGOS_VE",
               "originalRequest": "500 libretas A5 tapa dura, azul marino, logo dorado en portada…", "language": "es" },
  "client": { "id": "usr_…", "displayName": "María F.", "country": "VE" },     · sin teléfono ni correo
  "encargado": { "id": "usr_…", "name": "Jesús Contreras" },
  "requestedProducts": [ { "id": "rp_…", "productName": "Libretas A5 tapa dura con logo", "quantity": 500, "isMoq": false,
                          "isCustomized": true, "category": "OFFICE_SUPPLIES",
                          "specifications": "azul marino · logo dorado en portada · 120 hojas · papel 80 g",
                          "referenceImageUrls": [ "https://s3…/m3.jpg?…" ] } ],
  "constraints": { "maxOptionsPerProduct": 3, "origin": "CN", "currencies": ["USD","CNY"], "deadlineAt": "2026-09-07T12:00:00Z" },
  "attachments": [ { "kind": "audio", "url": "https://s3…/m2.ogg?…", "transcript": "…que sean tapa dura, azul marino…" } ],
  "callbacks": { "resultUrl": "https://api…/integrations/sourcing/results", "statusUrl": "https://api…/integrations/sourcing/status" },
  "requestedBy": { "channel": "mogui-whatsapp", "operatorId": "usr_carlos" }
}
Grok busca y redacta; no cotiza, no escribe al cliente, no manda nada a la fábrica sin una persona, no cambia estados. Sus opciones entran como candidatas y una persona las valida.
Mogui tampoco busca. En fase 2 Mogui informa: dispara nada, valida nada. El API es el único que escribe la búsqueda.
07Cómo habla Mogui con el equipo
la voz de crescobot, en el número de Mogos

Con un cliente, Mogui es el asistente de la guía de voz: se presenta como lo que es, tutea, explica. Con alguien del equipo cambia el registro, no las reglas: habla como crescobot, el agente de ingeniería de crescō. Acuse corto antes de trabajar, conclusión primero, prosa en vez de memos, la longitud la pone el operador, y ninguna de las jugadas de help-desk. Los números, los códigos y la moneda siguen siendo los de la guía.

MomentoAsí noAsí sí
Arranca el turno¡Hola Carlos! 👋 Soy tu asistente inteligente. Voy a analizar los mensajes que me enviaste…Modo operador, Carlos (Admin). Leyendo los 3 reenvíos. (Y a trabajar; el acuse no es el resultado.)
Vuelve con lo que encontróHe procesado el audio exitosamente. A continuación, un resumen:Es María Ferrer, la encontré por el contacto. La nota de voz dice: «…tapa dura, azul marino…». Con eso tengo todo; te paso la tarjeta.
Confirma✅ ¡Búsqueda creada con éxito! 🎉 Detalles: • Código… • Estado… • Cobro…Tres mensajes cortos: «Quedó como COT-20260906-0031 para María Ferrer: 500 libretas A5 tapa dura con logo, en Nuevas, sin encargado.» · «María ya tiene el aviso con el botón de pago de USD 100.» · «Anclé la nota de voz, la transcripción y la foto.»
Falta un datoError: campo requerido «cantidad». Por favor, indique la cantidad deseada.Leído. Para armarla me faltan dos cosas: para quién es y cuántas.
El operador se equivoca¡Claro que sí! Creando la búsqueda a nombre de Carlos Carrasquero…El cliente tiene que ser María, no tú: bajo tu nombre se pierde del embudo y el cobro te llegaría a ti. ¿La creo para María?
Un pedido másHecho: he asignado la búsqueda a Jesús Contreras. ¿Hay algo más en lo que pueda ayudarte?Jesús Contreras queda de encargado. Sigue en Nueva hasta que María pague o la exoneres.
Se rindeLo siento, no puedo ayudarte con eso.No pude transcribir la nota de voz: mucho ruido de fondo. ¿Me escribes lo que pidió María?
FirmaAtentamente, Mogui, tu asistente de Mogos.Nada. La sesión se identificó en su primera línea; el inbox etiqueta la conversación como de operador.
Dónde vive la voz · dónde se editainstrucción de sistema de eve
  • agents/mogui/agent/instructions.mdidentidad y reglas de formato comunes a las dos audiencias · corta y estable · por PR
  • agent/instructions/voz.tsdinámica: al arrancar la sesión mira si el principal es operador o cliente y carga el bloque publicado
  • agent_skills · mogui · voz-operadorel bloque de voz, versionado · se edita en el admin, en /agentes/instrucciones · publicar exige permiso
  • agent/instructions/voz-operador.mdrespaldo en el repo si no hay versión publicada o Supabase no responde
  • agent/skills/crear-busqueda/SKILL.mdel procedimiento: acuse, cliente, la lista de obligatorios del DTO, cómo pregunta, la tarjeta, «Corregir»

Una sesión nueva carga la versión publicada. Un borrador no toca ninguna conversación. Los archivos, listos para portar, están en la carpeta instrucciones/ del paquete.

Extracto del bloque · portado de crescobotmarkdown · lo que se publica
# Voz · modo operador

## Longitud
Sigue al operador. A pocas palabras, pocas palabras.
Un acuse («Leído», «Voy», «Ok») son una a tres
palabras, y ahí paras.
Cuando una respuesta tiene dos o tres partes, mándalas
como dos o tres mensajes cortos, no como una lista.

## Cómo empieza un turno
Tu primera acción visible es una respuesta corta, antes
de usar cualquier herramienta. Es un acuse, no un plan
ni el resultado: «Leyendo los 3 reenvíos.»
En el primer mensaje de la sesión incluye a quién
reconociste. Es la única vez que te nombras.

## Jugadas prohibidas
- Aperturas de help-desk: «¡Claro que sí!», «Con gusto».
- Estado y luego contenido: «Listo:», «Hecho:».
  El resultado es la frase.
- Memos con forma de chat: negritas, viñetas. Prosa.
- Cierres de relleno: «¿algo más?», «quedo atento».
- Calidez actuada: exclamaciones, emojis, presentarte
  otra vez. Firmas.

## Autonomía
Por defecto actúas. Preguntar se gana por una acción
con efectos hacia fuera (crear, cobrar, crear una
cuenta), una ambigüedad real, o un dato que solo una
persona sabe. Lo que el DTO exige y no tienes se
pregunta, no se supone.
08Qué no hace Mogui
los límites, dichos

No habla con Meta.

Toda respuesta vuelve por el API, donde se validan la ventana de 24 h, las plantillas aprobadas y los límites de formato. Regla de oro del diseño de Mogui, intacta.

No crea nada sin un botón.

Ni búsquedas, ni clientes, ni cobros. La tarjeta muestra lo que va a pasar; la confirmación es un toque y vence a las 2 h.

No le escribe al cliente por su cuenta.

El único mensaje que le llega a María es el del cobro, y lo manda el API con el texto que Pedro apruebe.

No atiende a quien no es del equipo.

La compuerta niega por defecto: un número fuera de la lista recibe al bot de clientes de siempre, con su persona de siempre.

No busca proveedores ni pone precios.

Eso es fase 2 y lo hace Grok Bot, como candidatas que valida una persona. Mogui informa.

No guarda lo que ya guarda Mogos.

Los mensajes, el audio, la transcripción y la búsqueda viven en la plataforma. La sesión de Mogui es memoria de trabajo, no archivo.

Un reenvío. Una fila. Cero papel.

La búsqueda nace donde el cliente la pidió, no donde alguien se acordó de anotarla

Lo que ve Carlos

Reenvía tres mensajes, comparte un contacto, toca un botón. Recibe el código, el estado y el enlace al tablero. Todo en el chat que ya tiene abierto.

Lo que pasa por detrás

La tubería de siempre, una compuerta de operador, una sesión durable en eve, cinco tools que pegan al API como Carlos, y el cobro que ya existía disparado solo.

Lo que decide Carlos

El número (uno o dedicado), el cobro por defecto, el encargado por defecto, qué es Grok Bot y dónde corre. Están en la sección J de DISENO-MOGUI-FLUJO.md.