<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Gemba]]></title><description><![CDATA['Gemba' es un término japonés que significa "el lugar real". En management, se refiere a ir al lugar donde ocurre la acción. Nuestra newsletter encarna esta filosofía, trayéndote insights directamente desde la línea frontal del product management.]]></description><link>https://newsletter.gemba.es</link><image><url>https://substackcdn.com/image/fetch/$s_!bUge!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff285029f-763a-4320-aff1-86fc8c4acb63_1024x1024.png</url><title>Gemba</title><link>https://newsletter.gemba.es</link></image><generator>Substack</generator><lastBuildDate>Tue, 26 May 2026 17:45:35 GMT</lastBuildDate><atom:link href="https://newsletter.gemba.es/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[José Ramón Pérez Agüera]]></copyright><language><![CDATA[es]]></language><webMaster><![CDATA[josramnprezagera@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[josramnprezagera@substack.com]]></itunes:email><itunes:name><![CDATA[José Ramón Pérez Agüera]]></itunes:name></itunes:owner><itunes:author><![CDATA[José Ramón Pérez Agüera]]></itunes:author><googleplay:owner><![CDATA[josramnprezagera@substack.com]]></googleplay:owner><googleplay:email><![CDATA[josramnprezagera@substack.com]]></googleplay:email><googleplay:author><![CDATA[José Ramón Pérez Agüera]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[¿Por qué los LLMs olvidan?]]></title><description><![CDATA[La curva en U que pagamos cada d&#237;a. Por qu&#233; Claude o ChatGPT recuerdan el principio y el final de tu contexto y se evaporan en el medio. La mec&#225;nica matem&#225;tica del olvido, explicada desde dentro.]]></description><link>https://newsletter.gemba.es/p/por-que-los-llms-olvidan</link><guid isPermaLink="false">https://newsletter.gemba.es/p/por-que-los-llms-olvidan</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 25 May 2026 06:30:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bqih!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bqih!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bqih!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!bqih!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!bqih!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!bqih!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bqih!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37333bac-875e-4b80-909b-37cf984105ec_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58410,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198906390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bqih!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!bqih!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!bqih!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!bqih!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37333bac-875e-4b80-909b-37cf984105ec_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>En 1962, Bennet Murdock public&#243; un experimento que cambi&#243; la psicolog&#237;a cognitiva.</p><p>Pidi&#243; a sus sujetos memorizar listas de cuarenta palabras y, despu&#233;s, recitarlas en cualquier orden. Recordaban las primeras (efecto de primac&#237;a). Recordaban las &#250;ltimas (efecto de recencia). El medio se evaporaba.</p><p>Sesenta y cuatro a&#241;os despu&#233;s, los LLMs hacen exactamente lo mismo. Solo que, en lugar de palabras, lo que se evapora son los tokens por los que est&#225;s pagando.</p><p>La curva es id&#233;ntica. La explicaci&#243;n no.</p><p>Cuando empec&#233; a usar Claude y ChatGPT a diario, asum&#237; que los olvidos eran un capricho del modelo o algo relacionado con su naturaleza no determinista. Le pasaba un contexto largo, le hac&#237;a una pregunta concreta sobre algo del medio, y a veces respond&#237;a bien y a veces no. Una loter&#237;a. Tard&#233; en cogerlo. Lo cog&#237; cuando dej&#233; de leer papers y empec&#233; a visualizar la atenci&#243;n capa por capa en un transformer peque&#241;o. Ver el mapa cambia las cosas. El c&#243;digo, los demos y la reproducci&#243;n con GPT-2 est&#225;n [aqu&#237;](https://github.com/josemerca/gemba-attention-from-scratch).</p><p>Hoy te cuento por qu&#233; los LLMs olvidan, cu&#225;nto te est&#225; costando ese olvido, y qu&#233; puedes hacer para minimizarlo. Si trabajas con IA, esto es ergonom&#237;a b&#225;sica del producto.</p><div><hr></div><h2>La memoria no es lo que parece</h2><p>Cuando hablas con Claude o con ChatGPT, tienes la sensaci&#243;n c&#243;moda y enga&#241;osa de estar conversando con algo que recuerda. Le dices una cosa, le dices otra, le pides que vuelva a la primera. La mayor&#237;a de las veces parece funcionar. Y eso es justo el problema.</p><p>Lo que llamamos &#8220;memoria&#8221; en un LLM no se parece en nada a la memoria humana. No hay un sitio donde el modelo &#8220;guarda&#8221; lo que le has dicho. No aprende mientras hablas con &#233;l. Sus pesos est&#225;n congelados desde el d&#237;a en que termin&#243; de entrenarse, y no cambian ni un decimal durante toda la conversaci&#243;n. Lo que s&#237; existe es una ventana de contexto: una secuencia finita de tokens que el modelo tiene delante cada vez que genera una respuesta. Y cuando llega tu siguiente mensaje, la ventana se reescribe entera con todo lo anterior m&#225;s lo nuevo, y el modelo vuelve a procesarla desde cero.</p><p>Lo que llamamos memoria es, t&#233;cnicamente, releer.</p><p>Cada conversaci&#243;n con Claude Opus 4.7 cabe en hasta un mill&#243;n de tokens. GPT-4o trabaja en 128.000. Gemini 1.5 Pro estira hasta dos millones. Parecen cifras enormes, y lo son comparadas con los 2.048 tokens del GPT-3 original o los 4.096 con los que se lanz&#243; ChatGPT, pero siguen siendo finitas. Cuando una conversaci&#243;n pasa de ese tope, los tokens m&#225;s antiguos se descartan literalmente: el modelo deja de &#8220;verlos&#8221;. No los olvida en sentido figurado; desaparecen del input.</p><p>Dentro de la ventana, los tokens viven en una estructura de la que rara vez somos conscientes: el <strong>KV cache</strong> &#8212;cach&#233; de claves y valores, <em>keys</em> y <em>values</em> en ingl&#233;s, las dos siglas detr&#225;s de las dos letras&#8212;. Es un buffer f&#237;sico en memoria de GPU donde se almacenan, por cada token y por cada capa del modelo, esas dos matrices: una de claves y otra de valores. Piensa en la clave como la etiqueta del token &#8212;algo as&#237; como &#8220;yo soy un trozo de texto que habla de esto&#8221;&#8212; y en el valor como el contenido que ese token aporta cuando otro token decide mirarlo. Para Llama 3 70B con 100.000 tokens de contexto en precisi&#243;n BF16 (dos bytes por n&#250;mero), el KV cache ocupa unos 30 GB de VRAM &#8212;la memoria interna de la GPU&#8212;, casi la mitad de una GPU H100 dedicada solo a recordar lo que ya le has dicho. Y eso gracias a Grouped-Query Attention (GQA), una t&#233;cnica que comparte claves y valores entre varios cabezales de atenci&#243;n para abaratar el coste; sin GQA esos mismos 100k tokens ocupar&#237;an m&#225;s de 150 GB. Es por eso que GQA es est&#225;ndar de facto en casi todos los modelos abiertos modernos: Llama 3, Mistral, Qwen 2.5, Gemma. No es una met&#225;fora ni una abstracci&#243;n: es hardware. Cuando los proveedores te cobran por &#8220;input tokens&#8221;, parte de lo que est&#225;s pagando es ese hardware encendido durante el tiempo que tu contexto est&#225; cargado.</p><p>Y aun as&#237;, el KV cache no resuelve el problema. Resuelve el &#8220;c&#243;mo se almacena el contexto&#8221;, pero no el &#8220;c&#243;mo se mira&#8221;. Esa segunda parte &#8212;la atenci&#243;n&#8212; es donde nace el olvido. Y es donde se origina la factura que pagamos sin darnos cuenta.</p><div><hr></div><h2>El cuello de botella cuadr&#225;tico</h2><p>La operaci&#243;n matem&#225;tica que define a un transformer no es la multiplicaci&#243;n de matrices grande ni el softmax ex&#243;tico. Es una sola f&#243;rmula que mide <em>cu&#225;nto le importa cada token a cada otro token</em>:</p><pre><code><code>Atenci&#243;n(Q, K, V) = softmax(Q &#183; K^T / &#8730;d) &#183; V</code></code></pre><p>Donde Q, K y V son las matrices de queries, keys y values que mencionamos en &#167;1. Lo importante no es la f&#243;rmula. Lo importante es lo que hace por debajo: para cada token de la secuencia, compara su query con la key de <strong>todos los dem&#225;s tokens</strong> y calcula un peso. Luego, usando esos pesos, mezcla los values de todos los dem&#225;s tokens en una nueva representaci&#243;n.</p><p>Cada token mira a cada otro token. Cada uno. Sin excepciones.</p><p>Si tienes n tokens, eso son n &#215; n comparaciones por capa, por cabezal de atenci&#243;n y por paso de generaci&#243;n. Y en un Llama 3.1 405B (126 capas &#215; 128 cabezales), esa cifra se multiplica por unas diecis&#233;is mil veces antes incluso de empezar a generar el siguiente token. Esa propiedad &#8212;que el coste crece con el cuadrado del contexto&#8212; se escribe en la jerga como <strong>O(n&#178;)</strong>, y es lo que en este art&#237;culo llamar&#233; el cuello de botella cuadr&#225;tico.</p><p>Ve&#225;moslo con una tabla. Lo que cuesta procesar un contexto de tama&#241;o n, comparado con uno de mil tokens:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_hrQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_hrQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 424w, https://substackcdn.com/image/fetch/$s_!_hrQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 848w, https://substackcdn.com/image/fetch/$s_!_hrQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 1272w, https://substackcdn.com/image/fetch/$s_!_hrQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_hrQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png" width="810" height="482" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3467e66-563c-4745-b52a-09453386223d_810x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:810,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35724,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198906390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_hrQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 424w, https://substackcdn.com/image/fetch/$s_!_hrQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 848w, https://substackcdn.com/image/fetch/$s_!_hrQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 1272w, https://substackcdn.com/image/fetch/$s_!_hrQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3467e66-563c-4745-b52a-09453386223d_810x482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Si nunca hab&#237;as visto los n&#250;meros as&#237;, deja que asienten un segundo: una conversaci&#243;n con Claude Opus 4.7 que llena la mitad de su ventana &#8212;medio mill&#243;n de tokens&#8212; hace <strong>doscientas cincuenta mil veces m&#225;s</strong> trabajo de atenci&#243;n que una conversaci&#243;n de mil tokens. No quinientas veces. Doscientas cincuenta mil. Y si llenas la ventana entera hasta el mill&#243;n, un mill&#243;n de veces m&#225;s. Un bill&#243;n europeo de comparaciones por capa de transformer.</p><p>Doblar el contexto no cuesta el doble. Cuesta cuatro veces m&#225;s.</p><p>Aqu&#237; es donde aparece la consecuencia inc&#243;moda. Ese coste cuadr&#225;tico tiene que pagarlo alguien. Los proveedores no lo pueden absorber indefinidamente, as&#237; que aparece en tres sitios distintos: en el precio por mill&#243;n de tokens de input (que va subiendo con el tama&#241;o de la ventana), en la latencia (modelos como Claude tardan m&#225;s en arrancar cuando el contexto es muy largo), y &#8212;el m&#225;s sutil de los tres&#8212; en c&#243;mo el modelo <strong>distribuye su atenci&#243;n</strong> dentro de la ventana.</p><p>Porque cuando una operaci&#243;n cuesta n&#178;, la forma m&#225;s natural de abaratarla es no mirar a todos los tokens por igual. Y eso, aplicado mil veces durante el entrenamiento, deja una huella permanente en el modelo: aprende a atender preferentemente a unos sitios y a ignorar otros. La forma exacta de esa huella es lo que descubri&#243; Liu en 2024. Y se parece sospechosamente a lo que descubri&#243; Murdock en 1962.</p><div><hr></div><h2>Lost in the middle</h2><p>En julio de 2023, Nelson Liu y un equipo de Stanford colgaron en arXiv un paper con un t&#237;tulo poco humilde: <em>Lost in the Middle: How Language Models Use Long Contexts</em>. La versi&#243;n revisada apareci&#243; en 2024 en TACL, una de las revistas de referencia del procesamiento del lenguaje natural. Es uno de esos papers que confirman, con n&#250;meros, una sospecha que todo el mundo en el sector ten&#237;a pero nadie hab&#237;a medido bien.</p><p>El experimento es elegante por lo simple. Cogieron diez modelos &#8212;GPT-3.5-Turbo en sus dos versiones, GPT-4 en un subconjunto, Claude-1.3 y Claude-1.3-100k, MPT-30B base e Instruct, LongChat-13B-16K, Flan-T5-XXL y Flan-UL2&#8212; y les pasaron contextos largos con una t&#233;cnica que en la jerga se llama <em>needle in a haystack</em> &#8212;literalmente, &#8220;una aguja en un pajar&#8221;&#8212;: meter dentro de un texto enorme una &#8220;aguja&#8221; &#8212;un dato &#250;nico, una clave, una respuesta a una pregunta concreta&#8212; y luego preguntar por esa aguja. El truco est&#225; en variar la posici&#243;n. La aguja puede estar a la entrada del pajar, a un cuarto, en el centro, a tres cuartos o al fondo. Y medir cu&#225;ntas veces el modelo la encuentra.</p><p>Lo que descubrieron es la curva en U. Los modelos &#8212;todos&#8212; recuperan mejor lo que est&#225; al principio o al final del contexto y peor lo que est&#225; en el medio. La ca&#237;da entre la mejor posici&#243;n y la peor es de <strong>quince a veinticinco puntos porcentuales</strong>. Para GPT-3.5-Turbo en su versi&#243;n 16K, supera los veinte. No es ruido. Es un patr&#243;n sistem&#225;tico, replicable, y aparece en arquitecturas, tama&#241;os y proveedores distintos.</p><p>Pongamos a Murdock y a Liu en la misma tabla, separados por sesenta y cuatro a&#241;os:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4hPq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4hPq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 424w, https://substackcdn.com/image/fetch/$s_!4hPq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 848w, https://substackcdn.com/image/fetch/$s_!4hPq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 1272w, https://substackcdn.com/image/fetch/$s_!4hPq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4hPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png" width="982" height="427" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:427,&quot;width&quot;:982,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46120,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198906390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4hPq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 424w, https://substackcdn.com/image/fetch/$s_!4hPq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 848w, https://substackcdn.com/image/fetch/$s_!4hPq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 1272w, https://substackcdn.com/image/fetch/$s_!4hPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e372a6-4079-4a8b-aea7-d514c488c8b6_982x427.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>No es una coincidencia po&#233;tica. Es una propiedad estructural de los sistemas con atenci&#243;n limitada, biol&#243;gicos o de silicio. Cuando una operaci&#243;n cuesta n&#178;, el sistema aprende a no mirarlo todo. Y la heur&#237;stica que emerge, casualmente, prioriza los extremos. Sea porque al principio del contexto suele ir lo importante (el system prompt, la pregunta original), sea porque al final est&#225; lo m&#225;s reciente (el &#250;ltimo turno del usuario, el detalle preciso), los modelos se vuelven especialistas en los bordes y amateurs en el centro.</p><p>La consecuencia pr&#225;ctica es brutal y sorprende a casi todos los equipos que la oyen por primera vez. Si metes un PDF de cien p&#225;ginas a Claude y le preguntas algo de la p&#225;gina cincuenta, las probabilidades de que conteste bien caen entre 15 y 25 puntos porcentuales respecto a la misma pregunta sobre la p&#225;gina cinco o la noventa y cinco &#8212; esos son los &#243;rdenes de magnitud que midi&#243; Liu en los diez modelos de su experimento. No porque el modelo sea perezoso. No porque haya un bug. Porque ese token, sencillamente, est&#225; en el peor sitio posible.</p><p>Y hay algo a&#250;n m&#225;s inquietante. Hsieh y un equipo de NVIDIA (RULER, presentado en 2024 en COLM &#8212;la Conference on Language Modeling, una de las nuevas conferencias espec&#237;ficas de modelos de lenguaje) extendieron el experimento de Liu con un benchmark m&#225;s completo y midieron lo que llaman <em>context efectivo</em>: el tama&#241;o real al que el modelo funciona bien, no el que aparece en la ficha t&#233;cnica. El resultado es brutal: la mayor&#237;a de los modelos &#8212;comerciales y abiertos&#8212; tienen un context efectivo entre dos y ocho veces menor que la ventana que anuncian. Un modelo que vende 128k puede degradarse a partir de los 16k-32k. La ventana es marketing; el context efectivo es lo que importa.</p><p>Y la pregunta inmediata, claro, es: &#191;se puede arreglar?</p><div><hr></div><h2>Cuatro mecanismos esquivan el problema. Y un quinto lo elimina</h2><p>Spoiler de los cuatro primeros: ninguno lo elimina. Lo esquivan, cada uno con un compromiso distinto. Y lo esquivan con cuatro mecanismos conceptualmente independientes: <strong>truncar</strong> la atenci&#243;n (mirar solo a una ventana m&#243;vil), <strong>anclar</strong> ciertos tokens para que nunca se pierdan dentro de la ventana, <strong>externalizar</strong> el conocimiento preindexado fuera de la ventana, y <strong>navegar</strong> el entorno bajo demanda en lugar de cargarlo.</p><p>El quinto es m&#225;s radical: <strong>salir</strong> del transformer entero. Cambiar la arquitectura por otra que no tenga atenci&#243;n cuadr&#225;tica. Es lo que prometen los SSMs y los modelos h&#237;bridos, y ya hay opciones comerciales en producci&#243;n.</p><p>Entender los cinco es lo que separa a un equipo que dise&#241;a con LLMs en serio de uno que reza para que la pr&#243;xima versi&#243;n sea m&#225;gica.</p><h3>Sliding Window Attention &#8212; truncar la atenci&#243;n</h3><p>La idea m&#225;s obvia: si mirar a todos los tokens cuesta demasiado, <strong>trunca</strong> la atenci&#243;n. Que cada token solo mire a los W tokens m&#225;s recientes. El coste cae de O(n&#178;) a O(n&#183;W), que es lineal con n. Lo que se pierde son las dependencias a larga distancia.</p><p>Esta es la familia de Longformer (Beltagy, Peters y Cohan, 2020), una de las primeras propuestas serias del problema, y la que adopt&#243; Mistral 7B (Jiang et al. 2023) como pieza central de su arquitectura. Mistral usa una ventana W de 4.096 tokens en cada capa. Como los transformers tienen muchas capas apiladas, lo que un token &#8220;ve&#8221; en capas profundas es m&#225;s ancho que su ventana literal &#8212;porque cada capa intermedia ya ha mezclado informaci&#243;n de un tramo distinto&#8212;. En la pr&#225;ctica, encadenando capas, el modelo accede a un contexto efectivo de hasta 131.072 tokens sin pagar el cuadr&#225;tico.</p><p>El precio es claro: si lo importante para responder est&#225; m&#225;s all&#225; de la ventana acumulada, el modelo no lo ver&#225;. Bien para hojear un documento largo de un tir&#243;n. Mal para una conversaci&#243;n donde lo que importa se dijo hace mil turnos.</p><h3>Attention Sinks &#8212; anclar tokens cr&#237;ticos</h3><p>La segunda familia introduce un mecanismo distinto: <strong>anclar</strong> ciertos tokens para que nunca se pierdan, independientemente de cu&#225;nto crezca la conversaci&#243;n. Surgi&#243; como respuesta a un problema raro y persistente que sufr&#237;a la sliding window pura: cuando los primeros tokens de la secuencia llegaban al borde de la ventana y desaparec&#237;an, los modelos empezaban a colapsar. Salidas incoherentes, perplejidad disparada. En 2023, Guangxuan Xiao y un equipo del MIT (con Yuandong Tian, Beidi Chen, Song Han y Mike Lewis) descubrieron por qu&#233;.</p><p>Los primeros tokens de la secuencia, da igual cu&#225;les sean, acumulan una cantidad enorme de atenci&#243;n durante el entrenamiento. No porque su contenido sea m&#225;s valioso &#8212;pueden ser tokens basura, espacios o &#8212;, sino porque la softmax obliga a que los pesos sumen uno y, cuando un token no encuentra a qui&#233;n atender bien, &#8220;deposita&#8221; peso en cualquier sitio. Y los primeros tokens, por construcci&#243;n, siempre est&#225;n ah&#237;. Se vuelven <em>attention sinks</em>: sumideros de atenci&#243;n.</p><p>Su propuesta &#8212;que llamaron StreamingLLM&#8212; es preservar los primeros K tokens del contexto siempre, adem&#225;s de la sliding window normal. Esos K son las anclas; la ventana es el corto plazo. Con esa combinaci&#243;n, mostraron que un modelo puede generar de forma estable hasta <strong>cuatro millones de tokens</strong> sin fine-tuning. Sin colapsar.</p><p>La evoluci&#243;n natural de esta idea lleg&#243; en 2025 con <strong>Native Sparse Attention</strong> (DeepSeek, Best Paper de ACL 2025 &#8212;la conferencia m&#225;s importante del campo): en lugar de aplicar el ancla como parche post-hoc sobre un modelo ya entrenado, se entrena al modelo desde el principio con un patr&#243;n de atenci&#243;n dispersa que aprende qu&#233; tokens funcionan como anclas y cu&#225;les no. DeepSeek V3.2 ya lo usa en producci&#243;n. Pasamos de la atenci&#243;n dispersa como remiendo a la atenci&#243;n dispersa nativa.</p><p>El precio: hay que modificar el caching del modelo o, en el caso de Native Sparse Attention, entrenarlo desde cero con esa estructura. No es algo que se aplique transparentemente a cualquier checkpoint p&#250;blico que ya tengas.</p><h3>RAG con embeddings &#8212; externalizar el conocimiento preindexado</h3><p>La tercera familia es la que probablemente ya est&#225;s usando sin saberlo, y es estructuralmente distinta de las dos anteriores: en lugar de tocar el mecanismo de atenci&#243;n, <strong>externaliza</strong> el conocimiento. La ventana del modelo se mantiene peque&#241;a; el grueso del corpus vive fuera, en una base de datos vectorial aparte, y solo se trae a la ventana lo que parece relevante para la pregunta actual. Eso es RAG (Retrieval-Augmented Generation).</p><p>Cursor es el ejemplo m&#225;s visible en el ecosistema de desarrollo: indexa el repositorio con embeddings, los almacena en una base vectorial, y en cada consulta usa b&#250;squeda por proximidad para traer los trozos relevantes. Es tambi&#233;n la base de cualquier agente conversacional serio que tenga que trabajar sobre una base de conocimiento m&#225;s grande que la ventana del modelo.</p><p>El precio: dependes del retriever. Si el retriever falla en encontrar el trozo relevante, el modelo no tiene la informaci&#243;n y se la inventa con la confianza de quien s&#237; la tiene. La calidad del producto se vuelve, en buena medida, la calidad del recuperador.</p><h3>Agentic search &#8212; navegar el entorno bajo demanda</h3><p>La cuarta familia es la m&#225;s reciente y la m&#225;s radical: no preindexar nada. En lugar de calcular embeddings de todo el conocimiento por anticipado, el modelo navega el entorno bajo demanda usando las mismas herramientas que un programador en una terminal: <em>grep</em> &#8212;el comando de Unix de toda la vida para buscar texto dentro de los ficheros&#8212;, lectura de ficheros concretos, listar directorios, seguir referencias entre archivos.</p><p>Es la estrategia de Claude Code cuando te ayuda a editar un repositorio grande. Anthropic la defiende expl&#237;citamente frente a RAG con embeddings: <em>&#8220;Claude Code navega un repositorio como lo har&#237;a un ingeniero: recorre el sistema de ficheros, lee ficheros, usa grep para encontrar exactamente lo que necesita, y sigue referencias&#8221;</em>. El argumento es pr&#225;ctico: los pipelines de embeddings no aguantan el ritmo de equipos activos y devuelven referencias obsoletas. Mejor que el modelo decida en cada turno qu&#233; leer, como har&#237;a un humano.</p><p>El precio: latencia a&#241;adida en cada turno (cada <em>grep</em> o lectura es un viaje a la ventana del modelo), y dependencia de que el modelo razone bien sobre d&#243;nde buscar. A cambio, gana frescura (no hay &#237;ndice que se quede obsoleto) y precisi&#243;n local (el modelo lee el c&#243;digo real, no un trozo embebido hace tres semanas).</p><h3>Salir de la jaula &#8212; arquitecturas no-transformer</h3><p>Hasta aqu&#237;, todo dentro del transformer. Pero hay un quinto camino, conceptualmente distinto de los cuatro anteriores: cambiar la arquitectura. Si el problema es la atenci&#243;n cuadr&#225;tica, &#191;por qu&#233; no usar un modelo que no la tenga?</p><p>La candidata m&#225;s madura en 2026 son los SSMs (State Space Models, o modelos de espacio de estados). Mamba (Gu y Dao, 2023) y su sucesor Mamba-2 (2024) procesan secuencias en <strong>tiempo lineal con n</strong>, sin atenci&#243;n cuadr&#225;tica. La memoria del modelo se mantiene en un estado oculto que se actualiza recurrentemente, como una red neuronal recurrente (RNN) moderna, pero con una calidad de aprendizaje que se acerca a la del transformer.</p><p>&#191;Funciona en producci&#243;n? S&#237;, hay ya modelos comerciales que apuestan por esta v&#237;a. <strong>Jamba 1.5</strong> (AI21 Labs, 2024) combina capas Transformer, capas Mamba y MoE (<em>Mixture of Experts</em>, una t&#233;cnica que activa solo una fracci&#243;n de los par&#225;metros del modelo en cada paso para abaratar el c&#243;mputo). Tiene ventana de 256k tokens y un throughput (tokens generados por segundo) tres veces mayor que Mixtral. <strong>Mistral Codestral Mamba</strong>, <strong>Google RecurrentGemma</strong> e <strong>IBM Granite 4.0</strong> son apuestas comerciales del mismo enfoque.</p><p>El precio: la atenci&#243;n cuadr&#225;tica, aunque cara, captura dependencias largas con precisi&#243;n casi quir&#250;rgica. Los SSMs comprimen esas dependencias en su estado oculto, y todav&#237;a no igualan al transformer puro en algunas tareas de retrieval exacto. Por eso los h&#237;bridos llevan ventaja por ahora: combinan transformers (precisi&#243;n) con SSMs (escala) y se quedan con lo mejor de los dos mundos.</p><p>La direcci&#243;n est&#225; clara: el O(n&#178;) ha dejado de ser la &#250;nica opci&#243;n.</p><h3>Compactaci&#243;n &#8212; la pieza ortogonal</h3><p>La compactaci&#243;n (<em>compaction</em> en las docs de Anthropic) no es una quinta familia: es una pieza que <strong>combina con cualquiera de las cuatro</strong>. Cuando el historial de conversaci&#243;n empieza a llenar la ventana, le pides al modelo que resuma los turnos antiguos y sustituyes el detalle por el resumen. Pierdes precisi&#243;n sobre lo viejo, ganas espacio para lo nuevo.</p><p>Anthropic ha hecho la compactaci&#243;n expl&#237;cita en Claude Code: existe un comando <em>/compact</em> manual y un auto-compact que se dispara cuando el contexto se acerca al 95% del l&#237;mite. Es una decisi&#243;n deliberada: mejor que t&#250; o el sistema decidan qu&#233; se comprime, en lugar de dejar que el lost-in-the-middle haga la criba por sus propios mecanismos.</p><h3>Los cinco, vistos juntos</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BkvF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BkvF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 424w, https://substackcdn.com/image/fetch/$s_!BkvF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 848w, https://substackcdn.com/image/fetch/$s_!BkvF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 1272w, https://substackcdn.com/image/fetch/$s_!BkvF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BkvF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png" width="1100" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118955,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198906390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BkvF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 424w, https://substackcdn.com/image/fetch/$s_!BkvF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 848w, https://substackcdn.com/image/fetch/$s_!BkvF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 1272w, https://substackcdn.com/image/fetch/$s_!BkvF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7caabe2-3ac6-4043-80ff-c4a1a158d771_1100x677.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Los cuatro primeros esquivan el problema. El quinto lo elimina cambiando de arquitectura. Y la compactaci&#243;n es una pieza ortogonal que combina con cualquiera de ellos. La pregunta correcta para dise&#241;ar un producto con LLM no es &#8220;qu&#233; soluci&#243;n uso&#8221;, sino &#8220;qu&#233; combinaci&#243;n me conviene en cada parte de mi sistema&#8221;. Y para responder eso, conviene saber cu&#225;nto te est&#225; costando el olvido cuando no haces nada.</p><div><hr></div><h2>La factura del olvido</h2><p>En el art&#237;culo anterior de Gemba expliqu&#233; que el coste de los tokens es multiplicador, no sumatorio: si tu modelo es caro y su tokenizer es malo para tu idioma, no pagas el sobrecoste una vez, lo pagas dos. Con el olvido pasa lo mismo, pero peor, porque la factura llega en tres formatos distintos y casi nadie la suma entera.</p><p><strong>Primer formato: latencia.</strong> Generar el primer token de la respuesta requiere procesar todo el contexto. Si tu contexto crece linealmente, el tiempo hasta el primer token &#8212;<em>Time To First Token</em>, TTFT en la jerga&#8212; crece de forma m&#225;s que lineal. Los proveedores aplican optimizaciones agresivas, pero las leyes de la f&#237;sica no se negocian: Claude Sonnet 4 con mil tokens de input tarda alrededor de un segundo en empezar a responder; con cien mil, entre dos y cinco (mediciones de Artificial Analysis). El crecimiento no es lineal, y la curva se empina a medida que te acercas al techo de la ventana. Multiplica eso por el n&#250;mero de turnos de un agente que reflexiona en bucle, y la latencia agregada empieza a ser dinero.</p><p><strong>Segundo formato: repetici&#243;n.</strong> Esta es la m&#225;s invisible y la m&#225;s cara. Cuando el modelo no recupera bien algo del medio de la ventana, el usuario lo nota y lo vuelve a meter. Le copia el bloque otra vez. Le repite la instrucci&#243;n. Le recuerda el dato. Cada repetici&#243;n son tokens duplicados que vuelves a pagar y que, encima, aumentan el tama&#241;o del contexto y empeoran el problema en el siguiente turno. Es una espiral. Si llevas la cuenta de cu&#225;ntas veces le has repetido la misma cosa a un LLM en una conversaci&#243;n de tarde, la respuesta es un n&#250;mero inc&#243;modo.</p><p><strong>Tercer formato: alucinaci&#243;n.</strong> El m&#225;s sutil y el m&#225;s peligroso en producci&#243;n. Cuando el modelo no encuentra informaci&#243;n en su atenci&#243;n efectiva, no dice &#8220;no lo s&#233;&#8221;. Rellena. Inventa con la prosodia de quien sabe. Y como el dato que necesitaba <em>estaba</em> en el contexto &#8212;solo que en el medio, donde la atenci&#243;n no lo procesa bien&#8212; el operador humano conf&#237;a en que el modelo lo ha le&#237;do. La factura aqu&#237; ya no es de tokens. Es de decisiones tomadas con informaci&#243;n incorrecta.</p><p>Pong&#225;moslo en una tabla, que se ve mejor:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xB9M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xB9M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 424w, https://substackcdn.com/image/fetch/$s_!xB9M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 848w, https://substackcdn.com/image/fetch/$s_!xB9M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 1272w, https://substackcdn.com/image/fetch/$s_!xB9M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xB9M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png" width="898" height="316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/845e055e-c84b-4186-837f-23ff867b8616_898x316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:316,&quot;width&quot;:898,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38661,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198906390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xB9M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 424w, https://substackcdn.com/image/fetch/$s_!xB9M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 848w, https://substackcdn.com/image/fetch/$s_!xB9M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 1272w, https://substackcdn.com/image/fetch/$s_!xB9M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F845e055e-c84b-4186-837f-23ff867b8616_898x316.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>La parte c&#237;nica es que los tres costes se realimentan. Repites m&#225;s &#8594; contexto m&#225;s largo &#8594; latencia m&#225;s alta + m&#225;s medio donde olvidar &#8594; m&#225;s alucinaci&#243;n &#8594; m&#225;s repetici&#243;n. No es una resta. Es un multiplicador, igual que con los tokens.</p><p>Y como pasa con los tokens, esta factura no aparece en una l&#237;nea aparte de la factura de Anthropic o de OpenAI. Aparece como tiempo de tu equipo d&#225;ndole vueltas a por qu&#233; Claude &#8220;se olvid&#243;&#8221;, como horas de soporte explicando al cliente que s&#237;, que la respuesta era inventada, y como una vaga sensaci&#243;n de que la IA &#8220;no termina de hacer lo que deber&#237;a&#8221;. Eso es la factura del olvido. La pagas todos los meses, y casi nunca la mides.</p><p>&#191;Y se puede medir? S&#237;. Y es m&#225;s f&#225;cil de lo que parece, una vez sabes mirar.</p><div><hr></div><h2>Lo que puedes hacer ma&#241;ana por la ma&#241;ana</h2><p>Hasta aqu&#237; hemos visto la mec&#225;nica. La parte pr&#225;ctica es m&#225;s corta porque, una vez entiendes que el olvido es estructural y no un capricho, las decisiones de dise&#241;o se ordenan solas. Estas son las seis que mejor amortizan el esfuerzo:</p><p><strong>1) Pon lo cr&#237;tico al principio y al final, nunca en el medio.</strong> Las instrucciones de sistema, los criterios de calidad, las restricciones inviolables, el formato de salida que esperas: todo eso va en zona de primac&#237;a. La pregunta concreta, los &#250;ltimos datos, el matiz que el modelo no debe perder: zona de recencia. Lo que termine en el medio es lo que pondr&#225;s en riesgo. Dise&#241;a como dise&#241;ar&#237;as una landing: arriba lo importante, abajo el CTA, y haz que el medio sea pasaje, no producto.</p><p><strong>2) No metas un PDF de cien p&#225;ginas y reces.</strong> Si el contenido supera la mitad de la ventana, parte y recupera. Indexa el documento por secciones, monta un buscador sencillo &#8212;un <em>retriever</em>, en la jerga&#8212; y deja que el LLM solo vea los tres o cuatro trozos relevantes para la pregunta. La precisi&#243;n sube y la factura baja a la vez. RAG funciona aunque sea con embeddings b&#225;sicos &#8212;no hace falta exotismo para mejorar.</p><p><strong>3) Repite las reglas cr&#237;ticas al principio Y al final.</strong> Si tu system prompt dice &#8220;responde solo en espa&#241;ol y nunca inventes datos&#8221;, y la conversaci&#243;n es larga, el modelo ver&#225; la regla solo en zona de primac&#237;a. En conversaciones que pasen de varios miles de tokens, conviene reinyectar las restricciones cr&#237;ticas en el &#250;ltimo turno antes de la respuesta. Es feo y funciona.</p><p><strong>4) Compacta antes de que la ventana te compacte.</strong> No esperes a que el sistema decida qu&#233; tirar. Cada N turnos, p&#237;dele al modelo un resumen estructurado de la conversaci&#243;n hasta ese punto y sustituye los turnos antiguos por ese resumen. Pierdes detalle, ganas precisi&#243;n sobre lo que queda. Mejor decidir t&#250; qu&#233; se pierde a que lo decida una heur&#237;stica que no controlas.</p><p><strong>5) Subagentes para descargar contexto.</strong> Cuando una tarea requiere mucha investigaci&#243;n o exploraci&#243;n previa, hazla en un subagente con su propia ventana. El agente principal recibe solo el resultado final, no los miles de tokens intermedios. Es lo que hace Claude Code para no contaminar tu sesi&#243;n con cada exploraci&#243;n del repo. La diferencia, en conversaciones largas, es brutal.</p><p><strong>6) Mide tu propia curva en U.</strong> Los datos del paper de Liu son una referencia s&#243;lida, pero tu caso de uso &#8212; tu modelo, tu idioma, tu tipo de pregunta, tu tama&#241;o de contexto &#8212; puede tener una curva distinta. No asumas. Mide. Bastan tres tama&#241;os de contexto y cinco posiciones por cada uno para tener un mapa razonable de d&#243;nde est&#225; tu zona segura. A partir de ah&#237;, dise&#241;as con datos.</p><p>Dise&#241;ar para LLMs es, en buena medida, dise&#241;ar para sistemas con sesgo de primac&#237;a y recencia. Como dise&#241;ar p&#225;ginas web para humanos. Lo curioso es que llevamos d&#233;cadas haciendo esto &#250;ltimo por buenas razones cognitivas, y ahora descubrimos que las mismas razones cognitivas, en silicio, exigen lo mismo. Murdock se hubiera re&#237;do.</p><div><hr></div><h2>Dos toolkits abiertos</h2><p>Como hice con el art&#237;culo de tokens, he liberado dos repos en abierto (MIT) para que puedas experimentar y decidir, no solo leerme.</p><p>&#9642; <strong>Uno para entender</strong> &#8212; <em><a href="https://github.com/josemerca/gemba-attention-from-scratch">gemba-attention-from-scratch</a></em>. Los tres mecanismos de atenci&#243;n &#8212;la versi&#243;n vanilla del transformer, la sliding window de Mistral y Longformer, y los attention sinks de StreamingLLM&#8212; implementados desde cero en Python sin librer&#237;as externas. Y una demo viva que reproduce la curva en U usando GPT-2 small: mete una aguja en distintas posiciones de un texto largo y mide cu&#225;nto la recuerda el modelo. Para entender qu&#233; pasa por dentro.</p><p>&#9642; <strong>Otro para decidir</strong> &#8212; <em><a href="https://github.com/josemerca/gemba-context-needle-runner">gemba-context-needle-runner</a></em>. Una herramienta que mide el lost-in-the-middle en tu propio uso. Lanza el experimento de la aguja en el pajar contra OpenAI, Anthropic y modelos abiertos, var&#237;a el tama&#241;o del contexto y la posici&#243;n de la aguja, y te devuelve la curva de aciertos por posici&#243;n. Para que dejes de adivinar d&#243;nde colapsa tu modelo y empieces a medirlo.</p><p>Uno para entender el mecanismo. El otro para saber cu&#225;nto te afecta a ti.</p><div><hr></div><p>Sesenta y cuatro a&#241;os despu&#233;s del experimento de Murdock, encontramos su curva en U dentro de unas m&#225;quinas hechas de matrices. &#201;l la midi&#243; en sujetos humanos memorizando palabras. Nosotros la medimos en GPUs procesando tokens. Los mecanismos no tienen nada que ver. La forma s&#237;. Y la consecuencia pr&#225;ctica tambi&#233;n: lo que importa, va al principio o al final. El medio es zona muerta.</p><p>Los LLMs no olvidan. Pagan la factura cuadr&#225;tica de la atenci&#243;n. Y mientras esa factura siga siendo n&#178;, el olvido no es un bug que vayan a arreglar en la pr&#243;xima versi&#243;n. Es una propiedad estructural, y dise&#241;ar productos con LLMs es, antes que cualquier otra cosa, dise&#241;ar <strong>alrededor</strong> de ese sesgo.</p><p>La pregunta pr&#225;ctica que te lleva todo esto: &#191;en qu&#233; punto de tu contexto colocas lo cr&#237;tico?</p><p>&#191;Hab&#233;is medido en tu equipo qu&#233; porcentaje del contexto que pas&#225;is a Claude o ChatGPT influye realmente en la respuesta? Porque hasta que no lo midas, est&#225;s pagando una factura cuya magnitud no conoces.</p>]]></content:encoded></item><item><title><![CDATA[Qué es un token]]></title><description><![CDATA[La moneda en la que pagamos la era de la IA, explicada desde el algoritmo. Tres familias de tokenizadores, c&#243;mo se calculan y por qu&#233; cambian tu factura m&#225;s de lo que parece.]]></description><link>https://newsletter.gemba.es/p/que-es-un-token</link><guid isPermaLink="false">https://newsletter.gemba.es/p/que-es-un-token</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 18 May 2026 08:45:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f232cc52-3d53-46d3-bebd-a91e21f6a2ea_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Llevamos dos a&#241;os pagando IA en una moneda que casi nadie entiende.</p><p>Cada llamada a un LLM se cobra en tokens. Tu plan de Claude tiene un l&#237;mite de tokens. La ventana de contexto se mide en tokens. Las empresas comparan modelos por su precio por mill&#243;n de tokens. Y a pesar de eso, si paro a diez profesionales del sector y les pido la definici&#243;n exacta de un token, nueve me dan algo aproximado y uno me dice que &#8220;m&#225;s o menos es una palabra&#8221;.</p><p>Pues Chorprecha!! No es una palabra!!.</p><p>Hace unos meses me obligu&#233; a entenderlo de verdad. No leyendo art&#237;culos: implementando el algoritmo desde cero en Python, byte a byte, sin librer&#237;as. El c&#243;digo est&#225; al final del art&#237;culo por si te apetece mirarlo despu&#233;s.</p><p>Hoy te cuento qu&#233; es un token, c&#243;mo se inventan, por qu&#233; un emoji cuesta cinco veces m&#225;s que la palabra &#8220;el&#8221;, y qu&#233; decisiones de producto cambian cuando entiendes la unidad en la que pagas. Si trabajas con IA, esto es contabilidad b&#225;sica de tu negocio.</p><div><hr></div><h2>Un token no es una palabra</h2><p>La aproximaci&#243;n que m&#225;s oir&#225;s &#8212;&#8221;un token es m&#225;s o menos una palabra&#8221;&#8212; es &#250;til para hacer una estimaci&#243;n r&#225;pida en una pizarra y desastrosa para casi todo lo dem&#225;s. Ve&#225;moslo con tres palabras.</p><p>&#8220;Hola&#8221; es un token. Una palabra, un token. El mito sobrevive.</p><p>&#8220;Mercadona&#8221;, en cambio, se parte en tres trozos cuando la procesa el tokenizador de GPT-4: algo parecido a <em>Merc</em>, <em>ad</em>, <em>ona</em>. Tres tokens para una sola palabra. El mito empieza a romperse.</p><p>&#8220;Supermercado&#8221; se parte en dos: <em>super</em> y <em>mercado</em>. Dos tokens, dos sub-palabras que s&#237; aparecen mucho en el corpus de entrenamiento y que el algoritmo ha decidido guardar como piezas reutilizables.</p><p>Y un emoji como &#128722; puede convertirse en cuatro o cinco tokens &#233;l solo, porque ni siquiera cabe en un byte: hay que codificarlo en UTF-8 y luego volver a juntarlo.</p><p>&#191;Por qu&#233; tanta variaci&#243;n? Porque un token no es una unidad ling&#252;&#237;stica. Es una unidad estad&#237;stica. El tokenizador no sabe espa&#241;ol, no sabe ingl&#233;s y no sabe que &#8220;Mercadona&#8221; es una empresa: lo que sabe es que ciertos pedazos de texto aparecen mucho juntos en su corpus de entrenamiento, y los guarda como piezas. Lo que aparece menos, lo deja sin agrupar.</p><p>La regla &#250;til para hacer cuentas r&#225;pidas, si trabajas con tokenizadores entrenados sobre todo en ingl&#233;s (la mayor&#237;a de los grandes), es algo as&#237;:</p><ul><li><p><strong>Ingl&#233;s</strong>: 1 token &#8776; 0,75 palabras</p></li><li><p><strong>Espa&#241;ol</strong>: 1 token &#8776; 0,5 palabras</p></li><li><p><strong>C&#243;digo fuente</strong>: 1 token &#8776; 3-4 caracteres</p></li></ul><p>Si solo te llevas una cosa de esta secci&#243;n: cuando escribes en espa&#241;ol, est&#225;s pagando casi el doble que un anglosaj&#243;n por decir lo mismo. Y eso no es un accidente. Es una consecuencia directa de c&#243;mo se entrena el tokenizador, que es de lo que va la siguiente secci&#243;n.</p><div><hr></div><h2>BPE: el dominante de la era GPT</h2><p>El algoritmo m&#225;s usado se llama <strong>BPE (Byte Pair Encoding)</strong>. Es enga&#241;osamente simple y resuelve un problema concreto: c&#243;mo cubrir todo el texto del mundo &#8212;cualquier idioma, emojis, c&#243;digo, errores de teclado&#8212; con un vocabulario fijo y eficiente.</p><p>No puedes hacer un diccionario &#8220;a mano&#8221;. Tampoco puedes usar bytes sueltos (<em>H</em>, <em>o</em>, <em>l</em>, <em>a</em> son cuatro tokens para una sola palabra: ineficiente). BPE encuentra el punto medio: un vocabulario aprendido a partir de los datos.</p><p>Funciona en tres pasos. La versi&#243;n esencial:</p><p><strong>Paso 1 &#8212; Empezar por lo m&#225;s b&#225;sico.</strong> El vocabulario inicial son los 256 bytes posibles. Cualquier texto del universo se puede expresar como una secuencia de estos 256 elementos. Eso garantiza que nada queda fuera, ni los emojis ni los caracteres japoneses ni nada.</p><p><strong>Paso 2 &#8212; Contar pares por frecuencia.</strong> Aqu&#237; &#8220;frecuencia&#8221; significa algo muy concreto: cu&#225;ntas veces aparece cada par de tokens adyacentes en los documentos que forman el corpus de entrenamiento. Y ese corpus no es peque&#241;o: hablamos de cientos de miles de libros, p&#225;ginas web, repositorios de c&#243;digo, foros, conversaciones y art&#237;culos &#8212;en GPT-4 son varios billones de tokens en total&#8212;. El algoritmo recorre ese mar de texto y, para cada par adyacente posible, lleva un contador. Esa cuenta &#8212;y nada m&#225;s&#8212; es lo que decide qu&#233; tokens nacen y cu&#225;les no. No hay an&#225;lisis sint&#225;ctico, no hay reglas, no hay diccionarios. Solo recuento de coapariciones.</p><p><strong>Paso 3 &#8212; Fusionar el ganador y repetir.</strong> Coges el par m&#225;s frecuente, lo declaras un nuevo token, le asignas un identificador nuevo (256, 257, etc.) y recorres todo el corpus reemplaz&#225;ndolo. Vuelves a contar pares &#8212;ahora los nuevos tokens tambi&#233;n participan&#8212; y repites. Cada vuelta, el vocabulario crece en uno.</p><h3>Un ejemplo con la cuenta de la vieja</h3><p>Para ver qu&#233; significa exactamente esa &#8220;frecuencia&#8221;, reduzcamos el corpus a algo que se pueda contar a mano. Imagina que tu corpus de entrenamiento es min&#250;sculo: solo cuatro palabras, cada una repetida un n&#250;mero conocido de veces en los documentos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3v5t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3v5t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 424w, https://substackcdn.com/image/fetch/$s_!3v5t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 848w, https://substackcdn.com/image/fetch/$s_!3v5t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 1272w, https://substackcdn.com/image/fetch/$s_!3v5t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3v5t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png" width="370" height="255" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:255,&quot;width&quot;:370,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10372,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198002532?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3v5t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 424w, https://substackcdn.com/image/fetch/$s_!3v5t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 848w, https://substackcdn.com/image/fetch/$s_!3v5t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 1272w, https://substackcdn.com/image/fetch/$s_!3v5t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c2cc75-9e9c-4569-bdec-d99c59de9ef2_370x255.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Empezamos descomponiendo cada palabra en sus letras y contamos cu&#225;ntas veces aparece cada par adyacente en todo el corpus, multiplicando por la frecuencia de su palabra:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f4Bp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f4Bp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 424w, https://substackcdn.com/image/fetch/$s_!f4Bp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 848w, https://substackcdn.com/image/fetch/$s_!f4Bp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 1272w, https://substackcdn.com/image/fetch/$s_!f4Bp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f4Bp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png" width="575" height="341" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:341,&quot;width&quot;:575,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27462,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198002532?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f4Bp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 424w, https://substackcdn.com/image/fetch/$s_!f4Bp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 848w, https://substackcdn.com/image/fetch/$s_!f4Bp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 1272w, https://substackcdn.com/image/fetch/$s_!f4Bp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4fbafd-e95e-442f-9786-3d8a4799df84_575x341.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>El par m&#225;s frecuente es <em>e + r</em> con 11 apariciones. Lo fusionamos: nace un nuevo token, <em>er</em>, y todo el corpus se reescribe con &#233;l:</p><ul><li><p><em>lower</em> ahora es <em>l, o, w, er</em></p></li><li><p><em>newer</em> ahora es <em>n, e, w, er</em></p></li><li><p><em>wider</em> ahora es <em>w, i, d, er</em></p></li></ul><p>Volvemos a contar. Esta vez ganar&#225; <em>w + er</em>, que aparece en <em>lower</em> y <em>newer</em> un total de 8 veces, y nacer&#225; el token <em>wer</em>. Y as&#237; sucesivamente. Cada iteraci&#243;n a&#241;ade un token al vocabulario y comprime un poco m&#225;s la representaci&#243;n del corpus.</p><p>Si dejas correr el algoritmo 50.000 veces, tienes un vocabulario de 50.000 tokens. La mayor&#237;a ser&#225;n sub-palabras frecuentes (<em>ci&#243;n</em>, <em>mente</em>, <em>super</em>, <em>inter</em>), algunas ser&#225;n palabras enteras muy comunes (<em>de</em>, <em>que</em>, <em>the</em>), y otras ser&#225;n piezas raras que el algoritmo decidi&#243; guardar porque aparec&#237;an lo bastante.</p><p>Lo interesante: <strong>no hay reglas ling&#252;&#237;sticas en ning&#250;n sitio</strong>. El algoritmo no sabe que <em>ci&#243;n</em> es un sufijo ni que <em>super</em> es un prefijo. Lo descubre solo porque aparece mucho en los datos. Es el equivalente, en mi mundo de Information Retrieval cl&#225;sico, a descubrir bigramas frecuentes en un corpus &#8212;&#8221;New York&#8221;, &#8220;machine learning&#8221;&#8212; sin que nadie te diga que son entidades.</p><p><strong>Qui&#233;n usa BPE hoy.</strong> GPT-4 y GPT-4o (con <em>tiktoken</em>), Claude (variante propia de BPE), Mistral, Qwen, Llama 3 y pr&#225;cticamente todos los modelos generativos de uso masivo en producci&#243;n. Si trabajas con un LLM comercial moderno, casi seguro est&#225;s pagando en tokens BPE.</p><div><hr></div><h2>Unigram + Viterbi: el algoritmo que trabaja al rev&#233;s</h2><p>Si BPE construye el vocabulario de abajo arriba &#8212;empezando con bytes sueltos y fusion&#225;ndolos&#8212;, <strong>Unigram</strong> hace lo contrario: empieza con un vocabulario gigante de candidatos y va podando los menos &#250;tiles hasta dejar solo los que de verdad valen la pena.</p><p>Lo curioso es que aqu&#237; &#8220;frecuencia&#8221; deja de ser un simple recuento. En Unigram, cada candidato a sub-palabra tiene asociada una <strong>probabilidad</strong> estimada a partir del corpus: la probabilidad de que esa sub-palabra aparezca en un documento elegido al azar. Y la probabilidad de una palabra entera &#8212;por ejemplo, <em>lowest</em>&#8212; se calcula multiplicando las probabilidades de los trozos en los que se segmenta.</p><p>El algoritmo funciona as&#237;, simplificado en cuatro pasos:</p><p><strong>Paso 1 &#8212; Construir un vocabulario inicial enorme.</strong> Se extraen del corpus todas las sub-palabras candidatas hasta cierta longitud: las que aparecen al menos N veces se incluyen. Es habitual empezar con un vocabulario diez veces m&#225;s grande del que queremos al final.</p><p><strong>Paso 2 &#8212; Estimar la probabilidad de cada candidato.</strong> Con un algoritmo iterativo llamado <strong>EM (Expectation-Maximization)</strong>, ajustas las probabilidades de todas las sub-palabras del vocabulario de forma que el corpus completo se explique con la m&#225;xima verosimilitud posible.</p><p><strong>Paso 3 &#8212; Encontrar la mejor segmentaci&#243;n con Viterbi.</strong> Dada una palabra y un vocabulario con probabilidades, &#191;cu&#225;l es la mejor forma de partirla? Aqu&#237; entra el <strong>algoritmo de Viterbi</strong>, un m&#233;todo de programaci&#243;n din&#225;mica que encuentra el camino &#243;ptimo entre todas las segmentaciones posibles sin tener que probarlas una por una. Por cierto: es el mismo algoritmo que se usaba en los a&#241;os ochenta y noventa para etiquetar gramaticalmente las palabras de una frase &#8212;<strong>POS tagging</strong>, de <em>Part-of-Speech</em>: marcar cada palabra como sustantivo, verbo, adjetivo, etc.&#8212; combinado con <strong>HMM</strong> (<em>Hidden Markov Models</em>, modelos probabil&#237;sticos de secuencias en los que los estados que generan las observaciones permanecen ocultos). Era el estado del arte del procesamiento del lenguaje natural antes de los transformers.</p><p><strong>Paso 4 &#8212; Podar y repetir.</strong> Los candidatos cuya eliminaci&#243;n apenas afecta a la verosimilitud del corpus se descartan. Se vuelven a estimar las probabilidades, se vuelve a podar, y as&#237; hasta llegar al tama&#241;o deseado de vocabulario.</p><h3>Un ejemplo con la cuenta de la vieja</h3><p>Imagina que hemos entrenado un Unigram y la palabra <em>lowest</em> puede segmentarse de varias formas. Cada candidato tiene una probabilidad estimada a partir del corpus:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CbFg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CbFg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 424w, https://substackcdn.com/image/fetch/$s_!CbFg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 848w, https://substackcdn.com/image/fetch/$s_!CbFg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 1272w, https://substackcdn.com/image/fetch/$s_!CbFg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CbFg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png" width="580" height="255" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:255,&quot;width&quot;:580,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24112,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198002532?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CbFg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 424w, https://substackcdn.com/image/fetch/$s_!CbFg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 848w, https://substackcdn.com/image/fetch/$s_!CbFg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 1272w, https://substackcdn.com/image/fetch/$s_!CbFg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7016708-2017-48c6-9a6b-571ad2e2f070_580x255.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Viterbi recorre estas opciones eficientemente y se queda con la de mayor probabilidad: <em>low</em> + <em>est</em>. Esa es la segmentaci&#243;n que el modelo &#8220;ver&#225;&#8221;.</p><p>Mientras BPE fusiona por frecuencia bruta, <strong>Unigram elige por verosimilitud</strong>. Eso le permite manejar mejor casos ambiguos y, sobre todo, idiomas con morfolog&#237;a compleja &#8212;japon&#233;s, coreano, fin&#233;s&#8212; donde la segmentaci&#243;n no es obvia.</p><p><strong>Una nota hist&#243;rica que conviene recordar.</strong> Tendemos a pensar que todo lo que rodea a los LLMs es tecnolog&#237;a muy reciente, pero la mayor&#237;a de los ladrillos que sostienen esto llevan d&#233;cadas inventados. El algoritmo de Viterbi lo public&#243; Andrew Viterbi en <strong>1967</strong> para decodificar se&#241;ales de telecomunicaciones; lo traslad&#243; al procesamiento de lenguaje natural toda una generaci&#243;n de investigadores en los a&#241;os setenta y ochenta. Los <strong>HMM</strong> se formalizaron como modelo probabil&#237;stico a finales de los sesenta y dominaron el reconocimiento de voz y el etiquetado gramatical durante treinta a&#241;os. El algoritmo <strong>EM</strong> &#8212;el que ajusta las probabilidades del vocabulario en Unigram&#8212; lo publicaron Dempster, Laird y Rubin en <strong>1977</strong> en uno de los papers m&#225;s citados de la historia de la estad&#237;stica. Incluso BPE como t&#233;cnica de compresi&#243;n es de <strong>1994</strong> (Phillip Gage), y solo se reutiliz&#243; para NLP en <strong>2016</strong> (Sennrich, Haddow y Birch). Cuando alguien te diga que la IA generativa es &#8220;magia nueva&#8221;, recuerda que detr&#225;s de cada token que pagas hay matem&#225;ticas con cincuenta a&#241;os de historia.</p><p><strong>Qui&#233;n usa Unigram + Viterbi.</strong> T5 (Google), mBART, ALBERT, XLNet y, en general, much&#237;simos modelos entrenados con <strong>SentencePiece</strong> en modo Unigram. Es especialmente popular en modelos multiling&#252;es y en buena parte del ecosistema asi&#225;tico.</p><div><hr></div><h2>WordPiece: BPE con un criterio m&#225;s exigente</h2><p><strong>WordPiece</strong> es, esencialmente, BPE con una peque&#241;a diferencia conceptual que cambia bastantes cosas en la pr&#225;ctica. Sigue construyendo el vocabulario de abajo arriba, fusionando pares iteraci&#243;n a iteraci&#243;n, pero el criterio para elegir el par ganador es distinto.</p><p>Mientras BPE elige siempre el par <strong>m&#225;s frecuente</strong>, WordPiece elige el par que <strong>m&#225;s mejora la probabilidad del corpus</strong> al fusionarse. La f&#243;rmula que usa en la pr&#225;ctica para puntuar cada par (A, B) es:</p><p><em>score(A, B) = freq(AB) / (freq(A) &#215; freq(B))</em></p><p>L&#233;elo despacio: el numerador es cu&#225;ntas veces aparece el par junto en el corpus; el denominador es cu&#225;ntas veces aparece cada pieza por separado, multiplicadas. El cociente premia los pares cuyos componentes <strong>casi siempre van juntos</strong>, aunque su frecuencia bruta no sea la m&#225;s alta. Es, en esp&#237;ritu, una versi&#243;n simplificada del <em>pointwise mutual information</em> (PMI) que llevamos d&#233;cadas usando en ling&#252;&#237;stica computacional.</p><h3>El mismo ejemplo, otro ganador</h3><p>Volvamos al corpus de antes (<em>low: 5</em>, <em>lower: 2</em>, <em>newer: 6</em>, <em>wider: 3</em>). Comparemos dos pares:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qxmh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qxmh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 424w, https://substackcdn.com/image/fetch/$s_!qxmh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 848w, https://substackcdn.com/image/fetch/$s_!qxmh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 1272w, https://substackcdn.com/image/fetch/$s_!qxmh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qxmh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png" width="1112" height="169" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:169,&quot;width&quot;:1112,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26619,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198002532?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qxmh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 424w, https://substackcdn.com/image/fetch/$s_!qxmh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 848w, https://substackcdn.com/image/fetch/$s_!qxmh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 1272w, https://substackcdn.com/image/fetch/$s_!qxmh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b22e4-a4a3-4292-96fe-329d343a9ab2_1112x169.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>BPE habr&#237;a elegido <em>e + r</em>. WordPiece elige <em>i + d</em>, porque la fusi&#243;n es m&#225;s &#8220;informativa&#8221;: cuando ves <em>i</em> en el corpus, pr&#225;cticamente siempre viene <em>d</em> justo detr&#225;s, as&#237; que tratarlos como un solo token reduce mucho m&#225;s la ambig&#252;edad.</p><p>En la pr&#225;ctica, los vocabularios resultantes de BPE y WordPiece se parecen mucho, pero WordPiece tiende a capturar mejor las unidades con asociaci&#243;n fuerte &#8212;prefijos, sufijos, ra&#237;ces poco frecuentes pero cohesionadas&#8212; y peor las simples coapariciones de piezas individualmente comunes.</p><p><strong>Una nota hist&#243;rica m&#225;s.</strong> WordPiece se public&#243; originalmente en <strong>2012</strong> por Schuster y Nakajima (Google), para mejorar el reconocimiento de voz en japon&#233;s y coreano. Solo en <strong>2018</strong> lo redescubri&#243; el p&#250;blico general cuando Google lo us&#243; para entrenar <strong>BERT</strong>.</p><p><strong>Qui&#233;n usa WordPiece hoy.</strong> BERT y toda su familia de encoders: DistilBERT, ELECTRA, MobileBERT, los primeros ALBERT. Es la elecci&#243;n dominante en modelos de b&#250;squeda sem&#225;ntica, clasificaci&#243;n y <em>information retrieval</em> moderno. En LLMs generativos de uso masivo, en cambio, ha quedado relegado a un papel secundario.</p><div><hr></div><h2>La factura: c&#243;mo el tokenizer cambia lo que pagas</h2><p>Aqu&#237; es donde toda esta arqueolog&#237;a algor&#237;tmica aterriza en tu cuenta corriente. Resumamos lo que llevamos:</p><ul><li><p>El tokenizer decide cu&#225;ntos tokens caben en cada texto.</p></li><li><p>Esa decisi&#243;n depende del corpus con el que se entren&#243;.</p></li><li><p>T&#250; pagas por token.</p></li></ul><p>Esas tres l&#237;neas son toda la teor&#237;a que necesitas para entender la factura. Lo que falta son los matices, que son los que se cobran.</p><h3>Por qu&#233; un emoji cuesta cinco tokens y &#8220;el&#8221; cuesta uno</h3><p>&#8220;el&#8221; aparece varios cientos de millones de veces en cualquier corpus en espa&#241;ol. Cualquier tokenizador decente lo guarda como un token &#250;nico y lo encuentra al primer intento. Un emoji como &#128722;, en cambio, aparece poqu&#237;simo en los corpus de entrenamiento (las p&#225;ginas web t&#233;cnicas, los libros y los repositorios de c&#243;digo no rebosan emojis). El tokenizador no le asigna un token propio. Resultado: hay que codificarlo en UTF-8, que son cuatro bytes, y cada byte se trata como un token aparte. Un solo emoji puede convertirse en cuatro o cinco tokens &#233;l solo.</p><p>La misma l&#243;gica se aplica a tu jerga t&#233;cnica, a nombres propios poco habituales o a esa expresi&#243;n regional que no sal&#237;a en los foros del corpus.</p><h3>Por qu&#233; pagas m&#225;s por escribir en espa&#241;ol</h3><p>Aqu&#237; entra el sesgo de corpus. La mayor&#237;a de los grandes modelos &#8212;GPT, Claude, Llama&#8212; se entrenan con un corpus en el que el ingl&#233;s domina muy ampliamente. Los pares de bytes en ingl&#233;s son m&#225;s frecuentes y, por tanto, los pares en ingl&#233;s tienen sus propios tokens &#8220;comprimidos&#8221;. Los pares en espa&#241;ol, no tanto. La consecuencia pr&#225;ctica: una frase en espa&#241;ol tiene <strong>entre un 30% y un 80% m&#225;s tokens que la misma frase en ingl&#233;s</strong>, dependiendo del modelo.</p><p>&#8220;House&#8221; es un token. &#8220;Casa&#8221; suelen ser dos: <em>ca</em> + <em>sa</em>. Multiplica eso por cada mensaje, cada usuario, cada d&#237;a.</p><h3>La cifra real (mayo 2026)</h3><p>Para que la factura aterrice, una foto del mercado a precios de hoy, por mill&#243;n de tokens:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oC0W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oC0W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 424w, https://substackcdn.com/image/fetch/$s_!oC0W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 848w, https://substackcdn.com/image/fetch/$s_!oC0W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 1272w, https://substackcdn.com/image/fetch/$s_!oC0W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oC0W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png" width="636" height="298" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298,&quot;width&quot;:636,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24396,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/198002532?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oC0W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 424w, https://substackcdn.com/image/fetch/$s_!oC0W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 848w, https://substackcdn.com/image/fetch/$s_!oC0W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 1272w, https://substackcdn.com/image/fetch/$s_!oC0W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e3a86a-156a-45d0-8e00-9bddb7e50346_636x298.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Parecen cifras peque&#241;as hasta que multiplicas por usuarios reales. Un asistente conversacional con un usuario activo medio consume con facilidad 50.000&#8211;200.000 tokens al d&#237;a entre input y output. Saca la cuenta para 10.000 usuarios.</p><h3>El multiplicador oculto</h3><p>Y aqu&#237; est&#225; el detalle que m&#225;s se escapa: si tu modelo es caro <strong>y</strong> su tokenizer es malo para tu idioma, no pagas el sobrecoste una vez, lo pagas dos veces. Pagas m&#225;s caro por token, <strong>y</strong> pagas m&#225;s tokens por cada mensaje. Es factor multiplicador, no sumatorio.</p><p>Un 30% m&#225;s caro por token &#215; 50% m&#225;s tokens por mensaje = <strong>casi el doble de factura mensual</strong> para el mismo producto, comparado con un modelo equivalente con tokenizador bien afinado a tu idioma.</p><p>Esa es la raz&#243;n por la que la decisi&#243;n &#8220;qu&#233; LLM usamos&#8221; no se puede tomar solo mirando el ranking de calidad ni solo mirando el precio por token. Hay que mirar las dos cosas a la vez, y mirarlas en el idioma en el que tu producto se usa de verdad.</p><div><hr></div><h2>Lo que entender los tokens te permite hacer</h2><p>Llegados aqu&#237;, sabes qu&#233; es un token, c&#243;mo nace, por qu&#233; unos cuestan m&#225;s que otros y c&#243;mo todo eso se traduce en factura. La pregunta pr&#225;ctica es qu&#233; cambia en tu trabajo a partir de ma&#241;ana. Cuatro cosas concretas, todas accionables.</p><p><strong>Audita tu gasto en la unidad correcta.</strong> La m&#233;trica &#250;til no es &#8220;cu&#225;ntas peticiones hace mi producto al LLM al d&#237;a&#8221;. Es <strong>cu&#225;ntos tokens consume cada funcionalidad por usuario activo al d&#237;a</strong>. Esa diferencia es la que separa los equipos que escalan IA en serio de los que se llevan sorpresas a final de mes. Si trabajas con un proveedor cerrado, instrumenta tu c&#243;digo para registrar tokens de input y de output por endpoint, por feature y por usuario. Sin ese dato, no est&#225;s gestionando un producto IA: est&#225;s cruzando los dedos.</p><p><strong>Elige el tokenizer cuando elijas el modelo.</strong> Si est&#225;s evaluando modelos open source, no mires solo el ranking ni la latencia. Mete tu propio texto representativo en el tokenizer de cada candidato y mide cu&#225;ntos tokens te salen. Un modelo &#8220;barato&#8221; con un tokenizer malo para tu idioma puede ser, en la pr&#225;ctica, m&#225;s caro que un modelo &#8220;caro&#8221; con un tokenizer bien afinado.</p><p><strong>Decide con criterio entre las cuatro palancas.</strong> Hablamos en el [art&#237;culo anterior](https://www.gemba.es/p/por-que-tu-proximo-llm-en-produccion) de las cuatro herramientas para mejorar un LLM: prompt engineering, RAG, tools y fine-tuning con LoRA. Cada una tiene un coste muy distinto <strong>medido en tokens</strong>. Un buen prompt te ahorra tokens en cada llamada; RAG mete m&#225;s tokens en cada llamada; tools puede tener cualquier perfil; LoRA paga el coste una vez en entrenamiento y ninguno en inferencia. Entender el coste en tokens de cada palanca es lo que convierte la decisi&#243;n &#8220;&#191;cu&#225;l uso?&#8221; en una decisi&#243;n con n&#250;mero, no con intuici&#243;n.</p><p><strong>Optimiza el prompt cortando contexto barato.</strong> El &#250;ltimo ejercicio: revisa los prompts de sistema que m&#225;s se ejecutan en tu producto y mira cu&#225;ntos tokens consume el contexto fijo. Casi siempre hay un 10%-30% que se puede recortar sin p&#233;rdida de calidad. En productos con tr&#225;fico real, ese 20% se traduce directamente en miles de euros al mes.</p><p>Los tokens son la unidad de tu producto. Tratar la unidad como una caja negra es trabajar a ciegas. Tratarla con criterio es lo que separa los productos IA que escalan de los que se hunden en su propia factura.</p><div><hr></div><h2>Dos toolkits abiertos para que lo experimentes</h2><p>Para que esto no se quede en lectura, he preparado <strong>dos repositorios p&#250;blicos</strong>, ambos con licencia MIT, pensados para roles distintos.</p><blockquote><p><em>&#128230; <strong><a href="https://github.com/josemerca/gemba-tokenizers-from-scratch">gemba-tokenizers-from-scratch</a></strong> &#8212; Los tres algoritmos implementados desde cero en Python, sin librer&#237;as externas.</em></p></blockquote><p>Es la versi&#243;n c&#243;digo de este art&#237;culo. BPE, Unigram con Viterbi y WordPiece, cada uno en un fichero corto, comentado, con ejemplos paso a paso y comparativas sobre el mismo texto. No es c&#243;digo de producci&#243;n: es c&#243;digo para <strong>entender</strong>. Pensado para que lo abras, lo ejecutes, lo modifiques y veas en directo c&#243;mo cada algoritmo toma decisiones distintas con el mismo corpus. Incluye un playbook para Claude Code que carga el repo y permite hacer preguntas tipo &#8220;tokeniza esta frase con los tres algoritmos y compara&#8221;.</p><blockquote><p><em>&#129518; <strong><a href="https://github.com/josemerca/gemba-token-cost-calculator">gemba-token-cost-calculator</a></strong><a href="https://github.com/josemerca/gemba-token-cost-calculator"> </a> &#8212; Calculadora de coste real en varios modelos y varios idiomas.</em></p></blockquote><p>Esto es lo opuesto: producci&#243;n, no did&#225;ctica. Usa los tokenizadores reales &#8212;<em>tiktoken</em> para OpenAI, <em>transformers</em> de HuggingFace para Llama 3, Qwen, Mistral, T5 y BERT, y la API oficial de Anthropic para Claude&#8212; y los combina con una tabla de precios actualizable. Le metes un texto representativo de tu producto (o un fichero), eliges los modelos y los idiomas que quieres comparar, y te devuelve cu&#225;nto te cobrar&#237;a cada combinaci&#243;n. Tambi&#233;n se invoca como skill de Claude Code: <em>/calcular-tokens texto.md gpt-4o,claude-opus,qwen3-8b</em>. Pensada para tomar decisiones de presupuesto con n&#250;mero, no con intuici&#243;n.</p><p><strong>Uno para entender, el otro para decidir.</strong> Los enlaces directos est&#225;n al final, en el cierre.</p><div><hr></div><h2>Para terminar</h2><p>Llevamos dos a&#241;os pagando IA en una moneda que casi nadie se ha parado a mirar de cerca. Hoy ya la has mirado. Sabes que un token no es una palabra, que se inventa contando frecuencias sobre un corpus, que hay tres familias &#8212;BPE, Unigram con Viterbi, WordPiece&#8212; y que cada una toma decisiones distintas con consecuencias muy concretas en tu factura. Sabes tambi&#233;n que detr&#225;s de esa &#8220;magia nueva&#8221; hay matem&#225;ticas que algunos investigadores estaban escribiendo cuando a&#250;n no hab&#237;a internet.</p><p>La pregunta con la que te dejo es esta: <strong>&#191;sabes cu&#225;ntos tokens consume un usuario tuyo en un d&#237;a normal?</strong> Si la respuesta es no, ma&#241;ana es buen d&#237;a para empezar a medirlo. Es la primera m&#233;trica que tienes que dominar para construir productos IA que escalen sin reventar la cuenta.</p><p>Hasta el lunes que viene.</p>]]></content:encoded></item><item><title><![CDATA[Por qué tu próximo LLM en producción debería ser open source]]></title><description><![CDATA[Soberan&#237;a, especializaci&#243;n y apalancamiento operativo: el caso estructural por los modelos abiertos dentro del producto. Con Mercadona Online como referencia.]]></description><link>https://newsletter.gemba.es/p/por-que-tu-proximo-llm-en-produccion</link><guid isPermaLink="false">https://newsletter.gemba.es/p/por-que-tu-proximo-llm-en-produccion</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 11 May 2026 06:31:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/02023b2d-2465-40f2-99f6-6af02cb6be62_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Cuando explico que en Mercadona Online estamos entrenando nuestros propios LLMs, la pregunta es siempre la misma: &#171;pero por qu&#233;, si Claude y GPT son mejores?&#187;.</p><p>La respuesta cabe en una frase: porque el modelo tiene que ser nuestro.</p><p>Este art&#237;culo explica qu&#233; significa eso, c&#243;mo lo estamos haciendo, y por qu&#233; creo que es la decisi&#243;n correcta para cualquier empresa que meta IA dentro de su producto &#8212; no al lado.</p><div><hr></div><h2>Por qu&#233; frontier es la primera respuesta l&#243;gica</h2><p>Si me hubieras preguntado hace dieciocho meses qu&#233; LLM &#237;bamos a meter en nuestros productos, te habr&#237;a dicho lo mismo que te dir&#237;a cualquier CTO razonable: el mejor disponible. Claude, GPT, Gemini. La pregunta no era <em>cu&#225;l</em>, era <em>cu&#225;l de los tres ganar&#225; la pr&#243;xima eval</em>.</p><p>Y tiene su l&#243;gica. Los modelos frontier resuelven el 99% de los casos de uso de manera espectacular. Tienen el mejor razonamiento, el mejor multiling&#252;e, el mejor tool use. Pagas una API, mandas un prompt, recibes una respuesta. Cero infraestructura, cero entrenamiento, cero deuda t&#233;cnica.</p><p>Es la elecci&#243;n por defecto. Y es exactamente eso lo que la convierte en un problema cuando empiezas a hacer producto en serio.</p><p>Porque la pregunta que importa no es <em>&#171;&#191;qu&#233; LLM es el mejor?&#187;</em>. Es <em>&#171;&#191;qu&#233; pasa cuando tu producto crece?&#187;</em>.</p><div><hr></div><h2>Los cuatro problemas de frontier dentro del producto</h2><p>Cuando metes un LLM frontier en una funcionalidad concreta de tu producto, hay cuatro cosas que cambian en silencio. Las cuatro son contables con los dedos. Las cuatro son las que te van a obligar, en alg&#250;n momento, a replantearte la decisi&#243;n.</p><h3>Tus datos salen de tu per&#237;metro</h3><p>Cada vez que llamas a la API de un proveedor frontier, le est&#225;s mandando algo: un prompt, un fragmento de tu cat&#225;logo, una pregunta de un cliente, un trozo de tu hist&#243;rico. Da igual lo que diga el contrato sobre retenci&#243;n: ese dato ha cruzado tu frontera.</p><p>Para una empresa como Mercadona, el cat&#225;logo, los procesos internos y las conversaciones con clientes son parte del activo. No son cosas que mandes a un tercero porque es m&#225;s c&#243;modo. Y el problema no es el cumplimiento legal &#8212; eso se gestiona &#8212;. El problema es que tu ventaja competitiva, lo que de verdad sabe tu empresa hacer, se convierte en <em>training data</em> potencial para el modelo que ma&#241;ana vas a tener que comprar a precio de mercado.</p><h3>El coste escala con cada cliente, cada feature y cada conversaci&#243;n</h3><p>Frontier cobra por token. Suena razonable hasta que haces los n&#250;meros a escala.</p><p>Si tu producto tiene un asistente que se usa una vez por sesi&#243;n, multiplicado por millones de sesiones al mes, multiplicado por cada nueva funcionalidad de IA que a&#241;ades &#8212; el coste no crece, explota. Y crece exactamente en el peor momento: cuando tu producto funciona bien y la gente lo usa m&#225;s.</p><p>Pero el problema de fondo no es el coste absoluto. Es que <strong>tus costes suben al mismo ritmo que tu facturaci&#243;n</strong>. Y eso rompe el apalancamiento operativo.</p><p>El apalancamiento operativo es el motivo por el que un negocio digital es atractivo: tu coste de servir al cliente n&#250;mero 10 millones es pr&#225;cticamente el mismo que el del cliente n&#250;mero uno. Cada usuario nuevo entra casi todo a margen. La curva de ingresos sube, la de costes se aplana, y el beneficio se dispara. Esa es la promesa del software desde hace cuarenta a&#241;os.</p><p>Frontier por token rompe esa promesa de ra&#237;z. Cada conversaci&#243;n nueva es un coste nuevo. Cada feature de IA es una factura adicional. Tu margen no se expande con la escala &#8212; se queda fijo, en el mejor caso. En el peor, se contrae cuando el proveedor sube tarifas o cuando empiezas a usar modelos m&#225;s capaces para no quedarte atr&#225;s de la competencia.</p><p>No es la primera vez que el sector tropieza con esto. Es exactamente lo que pas&#243; con el SaaS y con el cloud p&#250;blico a escala. Empresas como Dropbox descubrieron que pagar a AWS por cada terabyte de cliente se com&#237;a sus m&#225;rgenes brutos, y acabaron repatriando el almacenamiento a infraestructura propia &#8212; con ahorros de cientos de millones y m&#225;rgenes brutos que pasaron de no llegar al 35% a superar el 65%. Basecamp y otras empresas m&#225;s peque&#241;as han hecho el mismo viaje en los &#250;ltimos a&#241;os: cuando operas a escala, cloud p&#250;blico es <strong>dos o tres veces m&#225;s caro</strong> que infra propia bien dimensionada. La conveniencia inicial se convierte en un impuesto permanente sobre tu crecimiento.</p><p>Frontier en producci&#243;n es el siguiente cap&#237;tulo de esta misma historia. Y los CFOs que aprendieron la lecci&#243;n con AWS la van a aprender otra vez con OpenAI y Anthropic &#8212; solo que esta vez el coste no es almacenamiento, es cada palabra que tu producto le dice a un cliente.</p><h3>Lo que dice tu producto lo decide tu proveedor</h3><p>Un d&#237;a Anthropic decide que su pr&#243;ximo modelo se comporta distinto en una tarea concreta. Otro d&#237;a OpenAI deprecia la versi&#243;n que t&#250; hab&#237;as evaluado. Otro d&#237;a cambian el system prompt por defecto y tu producto empieza a responder con un tono que no es el tuyo.</p><p>No estoy hablando de hipot&#233;ticos. Esto pasa cada pocos meses. Y cuando tu funcionalidad cr&#237;tica depende del modelo de un tercero, <strong>t&#250; no decides c&#243;mo se comporta tu producto</strong>. Lo decide la &#250;ltima versi&#243;n que ese tercero ha desplegado.</p><p>Para una herramienta interna eso es asumible. Para un producto que ven millones de clientes, no.</p><h3>Pagas por capacidades que no necesitas</h3><p>Los modelos frontier son generalistas. Saben de poes&#237;a persa, de derecho mercantil h&#250;ngaro y de combinatoria avanzada. Y los pagas todos, en cada token, aunque tu producto solo necesite hablar de pedidos, productos y entregas.</p><p>La paradoja es que para <em>tu</em> tarea espec&#237;fica &#8212; la &#250;nica que de verdad importa para tu producto &#8212;, un modelo open source mucho m&#225;s peque&#241;o, afinado con tus datos, <strong>iguala o supera</strong> al frontier. No porque sea mejor en general. Porque est&#225; concentrado en lo tuyo.</p><p>Est&#225;s pagando un Ferrari para ir a comprar el pan a la esquina.</p><div><hr></div><h2>El OSS ya cerr&#243; la brecha donde importa</h2><p>Todo lo anterior ser&#237;a un debate te&#243;rico si el open source no fuera una alternativa cre&#237;ble. Hace dos a&#241;os no lo era. Hoy s&#237;, y el cambio se ha dado tan r&#225;pido que mucha gente decidiendo arquitectura de IA en empresas todav&#237;a no se ha enterado.</p><p>Conviene fijar primero qu&#233; quiere decir &#8220;open source&#8221; en este contexto, porque el t&#233;rmino se usa con cierta ligereza. Cuando hablo de modelos OSS me refiero a modelos cuyos <strong>pesos</strong> &#8212; los par&#225;metros que el modelo ha aprendido durante el entrenamiento &#8212; son p&#250;blicos, descargables y vienen con licencias que permiten uso comercial: Apache 2.0, MIT o equivalentes. No son APIs a las que llamas. Son modelos que te bajas, que ejecutas en tu propia infraestructura, que puedes inspeccionar, evaluar, modificar y reentrenar. La diferencia con los modelos cerrados &#8212; Claude, GPT, Gemini &#8212; no es solo de licencia. Es de ubicaci&#243;n: un modelo OSS vive donde t&#250; decides; uno cerrado vive donde decide su proveedor.</p><p>En 2024, los modelos abiertos iban dos generaciones por detr&#225;s. Llama 2 contra GPT-4 era una pelea perdida. La diferencia de calidad era visible a simple vista, en cualquier tarea, y nadie en su sano juicio met&#237;a en producci&#243;n un modelo abierto si ten&#237;a presupuesto para frontier.</p><p>En 2026, el panorama es otro. <strong>Qwen3</strong> de Alibaba lidera evaluaciones p&#250;blicas de c&#243;digo y compite de t&#250; a t&#250; en razonamiento, con licencia Apache 2.0. <strong>DeepSeek-V3.1</strong> combina razonamiento profundo con una eficiencia en inferencia muy dif&#237;cil de igualar para los frontier, tambi&#233;n con licencia abierta. <strong>Mistral Large</strong> viene de Francia, con buen rendimiento multiling&#252;e en lenguas europeas, y <strong>Llama 4</strong> de Meta tiene el ecosistema de fine-tuning m&#225;s maduro del mercado.</p><p>Cuatro familias serias, con licencias que permiten uso comercial, con pesos descargables, con comunidades activas. Eso no exist&#237;a hace dieciocho meses.</p><p>Pero conviene afinar la palabra &#8220;abierto&#8221;, porque no todas las licencias son iguales y el matiz importa m&#225;s de lo que parece. <strong>Apache 2.0</strong> (Qwen3) y <strong>MIT</strong> (DeepSeek) son licencias open source puras: puedes usar el modelo, modificarlo, redistribuirlo, integrarlo en productos comerciales sin restricciones de tama&#241;o, sector o uso. Son el equivalente, para modelos, de lo que Linux representa en software de servidor: libertad real.</p><p>La <strong>Llama Community License</strong> de Meta no es eso. Es lo que en la industria se llama <em>source available</em>: los pesos est&#225;n disponibles y puedes hacer mucho con ellos, pero la licencia introduce condiciones. La m&#225;s conocida es que si tu producto supera cierto umbral de usuarios mensuales activos tienes que negociar una licencia comercial separada con Meta. Y mantiene una cl&#225;usula de usos prohibidos sobre la que Meta tiene la &#250;ltima palabra. Para una empresa peque&#241;a la diferencia es invisible. Para una empresa que crece &#8212; y ese suele ser el plan &#8212; no lo es.</p><p>Mi recomendaci&#243;n, cuando alguien me pregunta por d&#243;nde empezar, es clara: <strong>si haces este viaje, hazlo con licencias OSS puras</strong>. El motivo principal por el que una empresa va a OSS es evitar depender del roadmap de un tercero. Una licencia &#8220;casi abierta&#8221; reintroduce exactamente esa dependencia, solo que con menos visibilidad &#8212; porque la dependencia no se manifiesta hasta que tu producto crece o hasta que el proveedor decide cambiar los t&#233;rminos. Apache 2.0 o MIT son la garant&#237;a de que la decisi&#243;n sobre qu&#233; hacer con tu modelo la sigues tomando t&#250; dentro de cinco a&#241;os, no Meta o quien sea.</p><p>Aclarado esto, el punto importante de fondo es la trampa mental de comparar modelos en abstracto.</p><p>Cuando alguien dice &#8220;Claude es mejor que Qwen&#8221;, normalmente est&#225; mirando un benchmark generalista: MMLU, GPQA, evaluaciones de razonamiento puro. Y es verdad &#8212; en <em>general</em>, frontier sigue ganando. La pregunta es si &#8220;mejor en general&#8221; tiene algo que ver con tu producto.</p><p>Tu asistente de pedidos no necesita resolver olimpiadas matem&#225;ticas. Tu chatbot de atenci&#243;n al cliente no necesita escribir poes&#237;a. Tu motor de recomendaciones no necesita debatir filosof&#237;a moral. Necesitan entender tu cat&#225;logo, tu tono, tus operaciones, tus clientes. Necesitan ser excelentes en una superficie muy concreta.</p><p>Y para esa superficie concreta, <strong>un modelo open source peque&#241;o afinado con tus datos iguala o supera a un modelo frontier de un orden de magnitud m&#225;s grande</strong>. No porque sea mejor en general &#8212; sigue sin serlo. Porque est&#225; concentrado en lo tuyo, sin la dispersi&#243;n de tener que saberlo todo.</p><p>Hay una intuici&#243;n t&#233;cnica detr&#225;s de este resultado que merece la pena explicitar. El espacio de razonamiento que un modelo tiene que cubrir para ser excelente en una tarea concreta es &#243;rdenes de magnitud menor que el que necesita un modelo generalista. Un asistente que solo tiene que entender pedidos, productos y entregas no razona sobre qu&#237;mica org&#225;nica, ni resuelve acertijos l&#243;gicos arbitrarios, ni traduce poes&#237;a cl&#225;sica. Tiene que ser excelente en una superficie acotada. Y cuando acotas la superficie, acotas la dificultad: <strong>hacer bien una sola cosa es m&#225;s f&#225;cil que hacer bien muchas</strong>.</p><p>Es un principio que se aplica a humanos, a software y a modelos. Un equipo peque&#241;o centrado en un problema vence sistem&#225;ticamente a un equipo grande que intenta abarcarlo todo. Una herramienta que hace una cosa la hace mejor que una suite que pretende hacer cinco. Y un modelo de menor capacidad bruta, especializado en tu dominio, supera a uno de capacidad bruta superior pero atenci&#243;n dispersa, en <em>tu</em> dominio. Por eso un OSS bien afinado puede competir de t&#250; a t&#250; con un frontier diez veces m&#225;s grande en lo que de verdad importa para tu producto: porque la pelea no es la que el benchmark cuenta. Es una pelea acotada, y en peleas acotadas, especializaci&#243;n gana.</p><p>Es la diferencia entre un m&#233;dico de cabecera que conoce a tus pacientes desde hace veinte a&#241;os y el mejor diagnosticador del mundo al que llamas por tel&#233;fono. El segundo sabe m&#225;s medicina. El primero acierta m&#225;s con tus pacientes.</p><div><hr></div><h2>Tres herramientas para tres problemas distintos: prompts, RAG y LoRA</h2><p>Una de las confusiones m&#225;s frecuentes en este terreno es presentar prompts, RAG y fine-tuning como un escal&#243;n: que primero pruebas prompts, luego subes a RAG y, si no llega, terminas en fine-tuning. La realidad es otra. Son tres herramientas que resuelven problemas distintos. <strong>Elegir la equivocada es una de las maneras m&#225;s caras de fracasar con IA en producto.</strong></p><p>System prompts es siempre la primera capa, porque opera sobre algo que las otras dos no tocan: el comportamiento del modelo en cada llamada. RAG y LoRA, en cambio, no son alternativas escaladas. Son respuestas a preguntas distintas, y pueden coexistir o no seg&#250;n lo que necesite tu funcionalidad.</p><h3>Capa 1 &#183; System prompts: el comportamiento, en cada llamada</h3><p>Es la capa m&#225;s r&#225;pida y la m&#225;s barata. Le dices al modelo, en cada llamada, qu&#233; tono usar, qu&#233; decir, qu&#233; nunca decir, y en qu&#233; formato responder. Reglas de comportamiento, guardarrales, estilo.</p><p>El cambio es <strong>inmediato</strong> &#8212; editas el prompt, despliegas, listo. Minutos. El coste es marginal: los tokens del prompt en cada llamada. Y el alcance, aunque parezca modesto, no lo es: la mayor parte del tono y de los errores graves de un asistente se arreglan aqu&#237;, no en el modelo.</p><p>System prompts es la &#250;nica capa que siempre tiene sentido. Si no resuelves un problema con prompts, lo m&#225;s probable es que lo tengas mal planteado antes de plantearte ninguna otra cosa.</p><h3>Capa 2 &#183; RAG: cu&#225;ndo s&#237;, cu&#225;ndo no</h3><p>RAG no es &#8220;prompts pero m&#225;s potente&#8221;. Es una herramienta concreta para un problema concreto: que el modelo responda apoy&#225;ndose en informaci&#243;n tuya que <strong>el modelo no pod&#237;a conocer en su entrenamiento</strong>.</p><p><strong>Tiene sentido cuando</strong>:</p><ul><li><p>Tu funcionalidad necesita responder con datos que cambian (cat&#225;logo, precios, disponibilidad, estados de pedido, FAQs vivas).</p></li><li><p>Necesitas trazabilidad: poder mostrar de d&#243;nde sale cada afirmaci&#243;n, citar la fuente, auditar.</p></li><li><p>El cuerpo de conocimiento es demasiado grande para meterlo en el prompt en cada llamada.</p></li><li><p>Quieres que el conocimiento se actualice sin tocar el modelo &#8212; basta con reindexar.</p></li></ul><p><strong>No tiene sentido cuando</strong>:</p><ul><li><p>El problema es de tono, estilo o formato. Eso lo arreglan prompts; RAG no a&#241;ade nada.</p></li><li><p>Tu dominio es estable y cabe en un prompt. Montar un vector store para guardar tres p&#225;ginas de documentaci&#243;n es complicar gratis.</p></li><li><p>La latencia es cr&#237;tica. RAG a&#241;ade pasos: embeddings, b&#250;squeda, recuperaci&#243;n, contexto extra. En productos donde la respuesta tiene que ser instant&#225;nea, ese coste pesa.</p></li><li><p>Tu informaci&#243;n no se busca bien por similaridad sem&#225;ntica. Si lo que necesitas es una consulta SQL contra una tabla, una API o una b&#250;squeda exacta por ID, RAG no es el camino &#8212; es un rodeo caro.</p></li></ul><p>Y un punto que muchos equipos descubren tarde: <strong>RAG mal hecho es peor que no tener RAG</strong>. Si tu sistema de recuperaci&#243;n devuelve fragmentos irrelevantes &#8212; chunks mal troceados, embeddings pobres, mezcla de fuentes que no tocan &#8212; no est&#225;s d&#225;ndole al modelo m&#225;s contexto. Le est&#225;s metiendo ruido. Y el modelo no responde &#8220;centr&#225;ndose en lo relevante&#8221;: se confunde, mezcla informaci&#243;n, alucina con apariencia de rigor citando fuentes que no aplican. Un RAG sin evaluaci&#243;n seria de la calidad de recuperaci&#243;n puede degradar las respuestas respecto a no tener RAG en absoluto. La parte cara de hacer RAG bien no es la generaci&#243;n &#8212; es la recuperaci&#243;n.</p><p>RAG es muy &#250;til cuando aplica. El error es asumir que aplica siempre.</p><h3>Capa 3 &#183; LoRA: cu&#225;ndo s&#237;, cu&#225;ndo no</h3><p>LoRA es la &#250;nica capa que toca el modelo en s&#237;. Reentrenas una fracci&#243;n de los pesos con datos tuyos. El modelo no consulta tu conocimiento en cada respuesta: ha <strong>aprendido patrones</strong> que antes no ten&#237;a.</p><p><strong>Tiene sentido cuando</strong>:</p><ul><li><p>Necesitas un comportamiento que no se puede expresar como reglas en un prompt &#8212; un tono, una jerga, convenciones impl&#237;citas, decisiones de matiz que un humano experto reconoce pero no sabe articular.</p></li><li><p>Tu volumen de uso es suficiente para amortizar el coste de entrenar y mantener una versi&#243;n propia.</p></li><li><p>Quieres reducir el coste por inferencia: un modelo abierto peque&#241;o y bien afinado puede sustituir a uno grande generalista, con una fracci&#243;n del coste por llamada.</p></li><li><p>Tienes un dataset de entrenamiento de calidad &#8212; no solo cantidad, calidad. Sin esto, no hay LoRA que valga.</p></li></ul><p><strong>No tiene sentido cuando</strong>:</p><ul><li><p>El conocimiento que necesitas inyectar cambia frecuentemente. LoRA aprende patrones, no hechos. Si los datos cambian cada semana, est&#225;s reentrenando cada semana &#8212; y eso no es viable.</p></li><li><p>A&#250;n no has agotado prompts y, donde aplique, RAG. Casi siempre que un equipo siente &#8220;necesidad&#8221; de fine-tuning, el problema real est&#225; m&#225;s arriba.</p></li><li><p>No tienes equipo para mantenerlo: GPUs, evaluaciones, versionado, observabilidad, capacidad de revertir. LoRA no es un proyecto puntual &#8212; es una l&#237;nea de mantenimiento.</p></li><li><p>El volumen de uso no justifica el coste fijo. Para una funcionalidad de uso puntual, un modelo afinado es matar moscas a ca&#241;onazos.</p></li></ul><h3>Y luego est&#225;n las tools: cuando el problema no es saber, sino hacer</h3><p>Las tres capas anteriores son formas de afinar al modelo a tu contexto. Hay un cuarto recurso que opera sobre algo distinto y es muy f&#225;cil de olvidar: las <strong>tools</strong> (tambi&#233;n llamadas <em>function calling</em> o <em>tool use</em>).</p><p>Una tool es una funci&#243;n externa que el modelo puede invocar por s&#237; mismo cuando lo necesita: consultar tu API de pedidos, leer un registro en una base de datos, hacer un c&#225;lculo, llamar a un servicio interno, ejecutar una acci&#243;n concreta. El modelo no la ejecuta &#8212; pide ejecutarla. Tu sistema la corre, le devuelve el resultado, y el modelo contin&#250;a la conversaci&#243;n con esa informaci&#243;n en mano.</p><p>Tools no compiten con prompts ni con RAG: les a&#241;aden una dimensi&#243;n que ninguna de las tres capas puede dar por s&#237; sola. Donde RAG ofrece <strong>conocimiento est&#225;tico</strong> (lo que has indexado de tu corpus), las tools dan <strong>informaci&#243;n viva y capacidad de actuar</strong>: el estado actual de un pedido, el stock real en este momento, la respuesta de un sistema externo, una transacci&#243;n ejecutada. Para muchas funcionalidades &#8212; sobre todo asistentes que tienen que hacer cosas, no solo responder &#8212; las tools son lo que convierte una conversaci&#243;n en un producto.</p><p>Y un detalle que ahorra muchos disgustos: el lugar correcto para datos estructurados que necesitas exactos &#8212; precios, stock, IDs, estados &#8212; no es RAG. Es una tool. RAG es para texto donde la similaridad sem&#225;ntica funciona. Tools son para hechos que tienen que ser exactos y vivos. Confundir las dos es la fuente n&#250;mero uno de respuestas seguras de s&#237; mismas y profundamente equivocadas.</p><h3>El criterio que importa</h3><p>No subes de prompts a RAG, ni de RAG a LoRA. Eliges la herramienta que encaja con la naturaleza de tu problema:</p><ul><li><p>&#191;El problema es <strong>comportamiento, tono o formato</strong>? &#8594; prompts.</p></li><li><p>&#191;El problema es <strong>conocimiento textual puntual y verificable</strong>? &#8594; RAG.</p></li><li><p>&#191;El problema es <strong>datos vivos, exactos o capacidad de actuar</strong>? &#8594; tools.</p></li><li><p>&#191;El problema es <strong>patrones impl&#237;citos, estilo profundo o coste por inferencia a escala</strong>? &#8594; LoRA.</p></li></ul><p>Las cuatro pueden convivir en la misma funcionalidad, pero no porque sean niveles de una escalera. Porque resuelven cosas distintas.</p><div><hr></div><h2>El umbral econ&#243;mico que casi nadie cuenta</h2><p>Hasta aqu&#237; los argumentos por OSS son cualitativos: soberan&#237;a, control, especializaci&#243;n, evitar que tu producto dependa del roadmap de un tercero. Son argumentos v&#225;lidos. No son los que ganan la conversaci&#243;n con un CFO.</p><p>La conversaci&#243;n con un CFO la ganas cuando el c&#225;lculo cierra. Y el c&#225;lculo, cuando lo haces de verdad, es m&#225;s matizado de lo que se cuenta en LinkedIn &#8212; en las dos direcciones.</p><h3>El c&#225;lculo simple</h3><p>Frontier es un coste <strong>variable</strong>. Pagas por token consumido, sin m&#225;s. Empiezas en cero y subes con el uso. Es ideal para empezar &#8212; no necesitas comprometer nada hasta que la funcionalidad demuestra tracci&#243;n.</p><p>OSS propio es un coste <strong>fijo</strong>. Tienes que tener GPUs (o reservar capacidad gestionada), un vector store si usas RAG, observabilidad, evaluaciones, y un equipo que mantenga todo eso. El primer token que generas te cuesta una fortuna. Los siguientes millones, pr&#225;cticamente nada.</p><p>Donde se cruzan las dos l&#237;neas es tu umbral. Por debajo, frontier sale m&#225;s barato. Por encima, OSS sale m&#225;s barato &#8212; y la brecha se ensancha r&#225;pido a medida que el uso crece.</p><h3>Lo que casi nadie cuenta del lado OSS</h3><p>La trampa habitual al hacer este c&#225;lculo es subestimar el lado fijo. La cuenta ingenua compara <em>&#8364;/M tokens</em> de la API frontier contra el coste de una GPU. No es esa la comparaci&#243;n.</p><p>Tener un modelo en producci&#243;n incluye, adem&#225;s del compute:</p><ul><li><p><strong>Equipo</strong>: gente que entiende fine-tuning, evaluaci&#243;n, despliegue de modelos, observabilidad. Es perfil escaso, no barato.</p></li><li><p><strong>Evaluaciones</strong>: si no mides la calidad de tu modelo afinado contra una baseline frontier de manera continua, no sabes si has degradado. Eso es infraestructura de evaluaci&#243;n, datasets curados y proceso.</p></li><li><p><strong>Mantenimiento</strong>: los modelos abiertos sacan nuevas versiones. Tu LoRA est&#225; atado a una. Migrar tiene coste.</p></li><li><p><strong>Observabilidad</strong>: latencia, fallos, calidad de las respuestas, deriva. Todo eso te lo da gratis un proveedor frontier; en infra propia lo construyes t&#250;.</p></li></ul><p>Si haces el c&#225;lculo solo con GPUs y olvidas todo lo dem&#225;s, tu OSS parece barato y luego no lo es. Y si haces el c&#225;lculo solo con GPUs y olvidas lo dem&#225;s tambi&#233;n en el lado frontier, te equivocas en la otra direcci&#243;n &#8212; porque frontier al final tambi&#233;n requiere tu propio observabilidad, evaluaci&#243;n y proceso de migraci&#243;n cuando cambian de modelo.</p><h3>Cu&#225;ndo OSS no sale a cuenta</h3><p>Hay casos en los que la respuesta honesta es &#8220;frontier es la opci&#243;n correcta hoy&#8221;:</p><ul><li><p><strong>Volumen bajo o impredecible</strong>: si tu funcionalidad mueve un pu&#241;ado de miles de llamadas al mes, no hay aritm&#233;tica que cierre. Qu&#233;date en API.</p></li><li><p><strong>Funcionalidad experimental</strong>: si no sabes a&#250;n si la feature va a sobrevivir el pr&#243;ximo trimestre, es absurdo amortizar nada. Frontier es el modo de prototipar.</p></li><li><p><strong>Equipo insuficiente</strong>: si no tienes a nadie que pueda mantener el modelo, el coste real no es la GPU &#8212; es el riesgo. Y ese riesgo se cobra solo en el peor momento.</p></li><li><p><strong>Una sola funcionalidad peque&#241;a</strong>: si tu &#250;nico caso de uso es un asistente puntual de baja intensidad, el coste fijo no se reparte entre nada.</p></li></ul><p>En todos estos casos, frontier no solo es razonable: es lo correcto. Pelear contra eso es ideolog&#237;a, no estrategia.</p><h3>Cu&#225;ndo s&#237;, y por qu&#233; la brecha se ensancha</h3><p>OSS empieza a tener sentido cuando se cumplen tres condiciones a la vez: <strong>volumen alto y sostenido</strong>, <strong>varias funcionalidades de IA que comparten infraestructura</strong>, y <strong>un horizonte previsible</strong> en el que ese uso va a crecer, no a desaparecer.</p><p>Cuando esas tres condiciones se cumplen, el coste fijo se reparte y el coste variable evitado crece a la vez. La diferencia entre las dos curvas no es lineal &#8212; se ensancha. Y a partir de cierto punto, el c&#225;lculo deja de ser interesante: frontier en producci&#243;n simplemente no es competitivo.</p><p>Hay adem&#225;s un efecto temporal que muchos an&#225;lisis ignoran: <strong>el umbral baja cada a&#241;o</strong>. Las GPUs son m&#225;s eficientes, los modelos abiertos son m&#225;s capaces con menos par&#225;metros, las t&#233;cnicas de fine-tuning bajan en coste. Lo que hace dieciocho meses requer&#237;a un cluster, hoy cabe en una m&#225;quina. Lo que hoy requiere un equipo dedicado, en dos a&#241;os cabr&#225; en una herramienta gestionada.</p><p>Si tu producto tiene volumen y horizonte, no est&#225;s eligiendo entre OSS y frontier en un instante: est&#225;s eligiendo en qu&#233; direcci&#243;n quieres que tu coste por conversaci&#243;n evolucione durante los pr&#243;ximos cinco a&#241;os. Y esa pregunta tiene una respuesta bastante clara.</p><h3>Hazte el c&#225;lculo, no la teolog&#237;a</h3><p>El error frecuente es tratar esta decisi&#243;n como ideol&#243;gica &#8212; &#8220;yo soy team OSS&#8221; o &#8220;yo soy team frontier&#8221; &#8212;. No lo es. Es aritm&#233;tica con horizonte temporal. Coge tu volumen real, los precios actuales del proveedor que uses, una estimaci&#243;n honesta de tu coste fijo OSS (incluyendo equipo y mantenimiento, no solo compute), y proy&#233;ctalo dos o tres a&#241;os con el crecimiento que esperas. La respuesta sale del c&#225;lculo, no de la convicci&#243;n.</p><p>Lo que s&#237; cambia es a qui&#233;n le toca asumir el coste de equivocarse. Si te quedas en frontier y tu producto escala, lo paga el negocio en m&#225;rgenes erosionados. Si saltas a OSS y tu producto no escala, lo paga el negocio en infraestructura ociosa. La pregunta es de qu&#233; error te puedes recuperar mejor.</p><div><hr></div><h2>El rol que s&#237; tiene Claude (y los dem&#225;s frontier): research, no producci&#243;n</h2><p>Todo lo anterior se puede leer mal: que estoy diciendo que los modelos frontier no sirven. No es eso, en absoluto. Frontier sirve &#8212; y mucho. Lo que defiendo es que su lugar no es producci&#243;n. Su lugar es research y baseline.</p><p>Esos son dos roles distintos y los dos son importantes.</p><h3>Rol 1 &#183; Research: la prueba de viabilidad</h3><p>Cuando tu equipo de producto pone encima de la mesa una idea de funcionalidad con IA, hay una pregunta que viene antes de cualquier otra: <strong>&#191;es siquiera resoluble?</strong> &#191;La mejor IA disponible en el planeta puede hacer lo que estamos imaginando, en las condiciones que necesita un cliente real?</p><p>Esa pregunta la contesta frontier en una tarde. Coges Claude o el equivalente, montas un prototipo r&#225;pido, le metes ejemplos reales, y observas. Si frontier no llega &#8212; si las respuestas son malas, si el razonamiento falla, si los casos l&#237;mite se rompen &#8212; la idea no est&#225; lista. No vas a hacerlo mejor con un OSS m&#225;s peque&#241;o. Has ahorrado seis meses.</p><p>Si frontier s&#237; llega, sabes dos cosas a la vez: el problema es resoluble, y has fijado el techo de calidad al que tu soluci&#243;n de producci&#243;n tiene que aspirar. Eso es lo segundo.</p><h3>Rol 2 &#183; Baseline: la vara de medir</h3><p>Aqu&#237; es donde frontier se vuelve imprescindible incluso para una empresa que ha decidido no tenerlo en producci&#243;n. Frontier es el patr&#243;n contra el que mides tu propio modelo.</p><p>Cada vez que afinas un OSS para tu caso de uso, cada vez que cambias el sistema de RAG, cada vez que iteras sobre un LoRA &#8212; necesitas saber si has mejorado o has empeorado. Y &#8220;mejor&#8221; o &#8220;peor&#8221; no son adjetivos, son n&#250;meros: tasa de &#233;xito en una eval, calidad subjetiva en muestras anotadas, porcentaje de respuestas correctas en preguntas reales de clientes.</p><p>La vara de medir es Claude. Si tu OSS afinado no se acerca a Claude en las tareas que importan a tu producto, no est&#225;s listo para producci&#243;n. Habr&#225;s conseguido independencia, s&#237;, pero a costa de degradar la experiencia del usuario. Eso no es una victoria &#8212; es haber metido complejidad operativa sin ganar nada.</p><p>Si tu OSS s&#237; se acerca o lo supera en <em>tu</em> superficie concreta &#8212; y lo hace de manera medible y reproducible &#8212; entonces est&#225;s listo. Y solo entonces.</p><h3>El flujo que ata las piezas</h3><p>El proceso completo que se deduce de estos dos roles es bastante limpio y se puede aplicar a casi cualquier funcionalidad:</p><p>1. <strong>Idea con Claude</strong>: prototipas con frontier para confirmar que el problema es resoluble.</p><p>2. <strong>Eval contra baseline</strong>: defines c&#243;mo vas a medir &#233;xito en este caso concreto, fijas la l&#237;nea base con Claude.</p><p>3. <strong>RAG sobre OSS, si aplica</strong>: montas el sistema de recuperaci&#243;n con tu modelo abierto, eval&#250;as contra la baseline.</p><p>4. <strong>LoRA, si aplica y se justifica</strong>: solo si los dos pasos anteriores no llegan y el caso lo merece econ&#243;micamente.</p><p>5. <strong>Producci&#243;n en OSS</strong>: cuando la calidad iguala o supera a la baseline frontier, despliegas.</p><p>Lo importante de este flujo no es lo que est&#225; en &#233;l. Es lo que est&#225; fuera: <strong>frontier no aparece en el paso 5</strong>. Aparece en los pasos 1 y 2, donde aporta lo que de verdad sabe aportar &#8212; capacidad bruta para explorar y rigor como vara de medir &#8212;, y se queda fuera de la operaci&#243;n diaria del producto.</p><p>Es la forma de tener lo mejor de los dos mundos sin pagar el coste de los dos mundos.</p><div><hr></div><h2>D&#243;nde estamos en Mercadona Online (sin vender humo)</h2><p>He hablado mucho de marco mental, principios y decisiones. Toca aterrizar en d&#243;nde estamos nosotros, porque me parece deshonesto publicar todo lo anterior sin contar la verdad de lo lejos &#8212; o cerca &#8212; que estamos del destino.</p><p>La decisi&#243;n est&#225; tomada. <strong>Producci&#243;n en OSS, frontier en research y baseline</strong>. Esa es la direcci&#243;n estrat&#233;gica de Mercadona Online y se ha discutido y aprobado al nivel donde estas decisiones se toman. No es una idea de un equipo aislado. Es por d&#243;nde queremos que vaya nuestra capa de IA en producto.</p><p>Lo que ya est&#225; pasando es la parte f&#225;cil de contar. Algunos de nuestros productos internos &#8212; asistentes de coordinadores, herramientas de calidad, sistemas de soporte a operaciones &#8212; tienen IA dentro hoy. Y esa IA est&#225; apoyada, en este momento, en <strong>Claude v&#237;a Vertex como soluci&#243;n provisional</strong>. Funciona, da valor y nos ha permitido validar que los casos de uso son resolubles. Eso es exactamente el rol 1 del que hablaba antes: research aplicado, prueba de viabilidad en producto real.</p><p>Lo que estamos construyendo es la parte que importa de verdad. Tenemos un modelo OSS propio en marcha &#8212; actualmente sobre Qwen3 8B, afinado con LoRA y datos nuestros &#8212; corriendo en infraestructura propia. Y estamos montando el sistema de evaluaciones que nos va a permitir comparar el comportamiento de nuestro modelo contra la baseline de Claude en cada una de las funcionalidades que importan, antes de cambiar nada en producci&#243;n.</p><p>Hay una decisi&#243;n consciente en lo que <strong>no</strong> estamos tomando: no usamos RAG. Enlazo esto directamente con lo que dec&#237;a en la secci&#243;n de las herramientas, porque en nuestro caso no se cumplen las condiciones para que aplique. Las funcionalidades que tenemos hoy no manejan grandes vol&#250;menes de informaci&#243;n textual que el modelo necesite consultar din&#225;micamente; lo que necesitan saber cabe en el system prompt, se resuelve por tools contra nuestros sistemas, o se aprende v&#237;a LoRA. Y la complejidad de montar bien la recuperaci&#243;n &#8212; con todo lo que habl&#225;bamos del ruido, la calidad de los embeddings, la evaluaci&#243;n continua de qu&#233; se devuelve &#8212; no nos compensa hoy. Si en alg&#250;n momento aparece una funcionalidad que s&#237; lo necesite, lo a&#241;adiremos. Pero la regla es exactamente la que recomendaba antes: RAG cuando aplica, no por defecto. Y a nosotros, hoy, no nos aplica.</p><p>Lo que a&#250;n no tenemos es la parte honesta. <strong>No tenemos producci&#243;n 100% en OSS todav&#237;a</strong>. Estamos en mitad del viaje, no al final. Las funcionalidades que hoy llegan al cliente y al empleado de tienda van por Claude. La migraci&#243;n a nuestro propio modelo es un trabajo de meses &#8212; y por algunas funcionalidades concretas, posiblemente m&#225;s &#8212; porque hay que evaluarlo bien antes de cambiar nada. Si nuestro OSS afinado no se acerca a la baseline frontier en una tarea concreta, no se cambia esa tarea. Se itera hasta que se acerque, o se acepta que esa tarea concreta no es candidata a OSS hoy.</p><p>&#191;Por qu&#233; cuento esto antes de tener n&#250;meros reales? Porque la decisi&#243;n estrat&#233;gica es lo importante, y los n&#250;meros van detr&#225;s. Si esperase a tener todas las m&#233;tricas para hablar del enfoque, el enfoque ya estar&#237;a desfasado cuando lo contara. Prefiero publicar el plan ahora, con la honestidad de que es un plan en ejecuci&#243;n, y volver dentro de unos meses con los datos.</p><p>Lo que s&#237; puedo decir hoy con seguridad es que la pregunta &#8220;&#191;esto sale a cuenta?&#8221; la hemos hecho. La aritm&#233;tica cierra para Mercadona &#8212; volumen, horizonte y n&#250;mero de funcionalidades de IA suficientes para que el coste fijo se reparta. Y la pregunta &#8220;&#191;el OSS es bueno suficiente?&#8221; la estamos contestando funcionalidad a funcionalidad, no en abstracto. Es la &#250;nica manera honesta de contestarla.</p><div><hr></div><h2>La pregunta que importa</h2><p>Si tuviera que reducir todo lo anterior a una sola frase, ser&#237;a esta: <strong>el lugar donde decides que viva tu IA es una decisi&#243;n estructural, no t&#233;cnica.</strong> Decide m&#225;rgenes. Decide qui&#233;n determina c&#243;mo se comporta tu producto. Decide la velocidad a la que puedes innovar. Decide qu&#233; activos quedan dentro de tu empresa y cu&#225;les cruzan la frontera. Tratarla como una decisi&#243;n de proveedor &#8212; &#8220;uso este o aquel&#8221; &#8212; es no ver lo que hay debajo.</p><p>La industria del software ya ha vivido este momento dos veces. La primera, con on-premise contra SaaS. La segunda, con servidor propio contra cloud p&#250;blico. En las dos, la conveniencia inicial del proveedor termin&#243; convirti&#233;ndose en un peaje permanente sobre el crecimiento. En las dos, hubo empresas que llegaron tarde a darse cuenta de que estaban subsidiando los m&#225;rgenes de su proveedor con los suyos. <strong>Frontier en producto es el tercer ciclo de la misma pel&#237;cula, ahora en directo.</strong></p><p>Si tu producto va a tener IA dentro durante la pr&#243;xima d&#233;cada &#8212; y casi todos los productos digitales serios la van a tener &#8212; la pregunta importante no es qu&#233; LLM usar este trimestre. Es qu&#233; relaci&#243;n quieres tener con tu capa de IA dentro de cinco a&#241;os: una factura mensual creciente con un proveedor que decide c&#243;mo se comporta tu producto, o una infraestructura propia, ajustada a tu negocio, sobre la que tomas tus propias decisiones.</p><p>Para una empresa con volumen, horizonte y varias funcionalidades de IA que repartan coste fijo, la respuesta &#8212; cuando hace el c&#225;lculo honesto &#8212; sale casi siempre en la misma direcci&#243;n. La diferencia entre las que act&#250;an ahora y las que act&#250;an dentro de tres a&#241;os no es la respuesta. Es cu&#225;nto habr&#225; pagado de m&#225;s cada una para llegar al mismo sitio.</p><p>&#191;D&#243;nde est&#225; tu umbral?</p><div><hr></div><p><em>Gemba se publica todos los lunes a las 8:30. Si te ha resonado, comparte el art&#237;culo con un PM o un l&#237;der de tecnolog&#237;a que est&#233; tomando esta decisi&#243;n ahora.</em></p>]]></content:encoded></item><item><title><![CDATA[Cómo unimos producto e ingeniería con agentes en Mercadona Tech (con repo open-source)]]></title><description><![CDATA[(GSD + Mercadona User Story Toolkit + Superpowers)]]></description><link>https://newsletter.gemba.es/p/como-unimos-producto-e-ingenieria</link><guid isPermaLink="false">https://newsletter.gemba.es/p/como-unimos-producto-e-ingenieria</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 04 May 2026 06:31:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!UCZH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Cuarto art&#237;culo de la serie Desarrollo de productos con agentes. Lo que estamos probando en Mercadona Tech, qu&#233; funciona, qu&#233; todav&#237;a falla, y c&#243;mo lo replicas en tu equipo. Repo open-source incluido.</em></p><div><hr></div><h2>El cuello de botella ya no es ejecutar c&#243;digo</h2><p>Llevamos meses repitiendo lo mismo desde distintos &#225;ngulos: el cuello de botella ya no es escribir el c&#243;digo.</p><p>Con un agente bien dirigido, un ingeniero senior puede convertir una user story bien definida en una pull request con tests en verde en un fin de semana. El problema es que el agente solo es tan bueno como la user story que le das. Y antes de la user story, hay un PRD. Y antes del PRD, hay decisiones de roadmap. Y nadie te explica c&#243;mo se conecta todo eso sin contradicciones.</p><p>En Mercadona Tech estamos probando un pipeline que junta tres herramientas: <strong>GSD para roadmap y planificaci&#243;n</strong>, el <strong><a href="https://www.gemba.es/p/el-ai-mercadona-user-story-framework">Mercadona User Story Toolkit</a> para definir y priorizar stories</strong>, y <strong>Superpowers para implementar con TDD</strong>. La hip&#243;tesis: si los tres hablan entre s&#237; con un contrato claro, el flujo de &#8220;idea de producto&#8221; a &#8220;PR mergeada&#8221; se vuelve fluido sin perder rigor.</p><p>No es definitivo. Llevamos unas pocas semanas prob&#225;ndolo, no a&#241;os. Tenemos la sensaci&#243;n de que funciona &#8212; el c&#243;digo sale m&#225;s limpio, las stories aterrizan mejor en producci&#243;n, hay menos rework. Pero no tengo n&#250;meros a&#250;n, as&#237; que esto es un <em>playbook en pruebas</em>. Lo publico hoy con un repo open-source para que m&#225;s equipos lo prueben y lo mejoremos entre todos.</p><div><hr></div><h2>A qui&#233;n sirve esto y a qui&#233;n no</h2><p>El pipeline est&#225; dise&#241;ado para equipos que tienen el problema de <strong>separaci&#243;n de responsabilidades</strong> entre producto y desarrollo:</p><ul><li><p>PMs que escriben PRDs y necesitan convertirlos en stories sin perder fidelidad</p></li><li><p>Ingenieros que reciben stories y quieren implementarlas con disciplina (TDD, code review, verificaci&#243;n)</p></li><li><p>Equipos donde la consistencia entre planning y ejecuci&#243;n tiene un equilibrio delicado &#8212; ROADMAPs que mienten, specs obsoletas, estados desincronizados</p></li></ul><p>Si tu equipo es muy peque&#241;o (1-3 personas), probablemente esto sea un overkill. Para equipos peque&#241;os, <strong>Superpowers solo, con su skill de brainstorming</strong>, es suficiente: la persona que define producto es la misma que lo implementa o est&#225;n muy cerca, y un solo agente puede acompa&#241;ar el flujo completo. La separaci&#243;n de responsabilidades aqu&#237; es artificial. Mi recomendaci&#243;n honesta para un equipo de tres es: instala Superpowers, brainstormea la feature, escribe un plan con <em>/superpowers:writing-plans</em>, ejecuta con TDD, y ya. Sin GSD. Sin Mercadona User Story Toolkit. Vendr&#225;n cuando necesites coordinar m&#225;s roles, mantener documentaci&#243;n o trabajar en funcionalidades m&#225;s complejas en equipos m&#225;s grandes.</p><p>Si tu equipo tiene <strong>PMs separados de Eng y trabaja en features de tama&#241;o medium-large</strong> (varias stories, varias semanas, objetivos por Q), aqu&#237; es donde este pipeline puede brillar.</p><div><hr></div><h2>El pipeline en una imagen</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UCZH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UCZH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 424w, https://substackcdn.com/image/fetch/$s_!UCZH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 848w, https://substackcdn.com/image/fetch/$s_!UCZH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 1272w, https://substackcdn.com/image/fetch/$s_!UCZH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UCZH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png" width="1456" height="765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1034247,&quot;alt&quot;:&quot;Pipeline GSD &#8594; MUST &#8594; Superpowers&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/196166230?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Pipeline GSD &#8594; MUST &#8594; Superpowers" title="Pipeline GSD &#8594; MUST &#8594; Superpowers" srcset="https://substackcdn.com/image/fetch/$s_!UCZH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 424w, https://substackcdn.com/image/fetch/$s_!UCZH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 848w, https://substackcdn.com/image/fetch/$s_!UCZH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 1272w, https://substackcdn.com/image/fetch/$s_!UCZH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8e5cdf-1808-4ef2-8127-8e185a9254ea_2374x1248.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tres fases. Dos de PM, una de Eng. La separaci&#243;n entre las dos primeras es deliberada: planificaci&#243;n, roadmapping y definici&#243;n de JTBDs y User Stories son trabajos distintos, con metodolog&#237;as distintas.</p><ul><li><p><strong>Fase 1 &#8212; GSD (PM):</strong> roadmap multi-fase, decisiones de scope, especificaci&#243;n de cada fase con requirements falsables. Output: el directorio <em>.planning/</em> con <em>PROJECT.md</em>, <em>REQUIREMENTS.md</em>, <em>ROADMAP.md</em>, y por cada fase <em>SPEC.md</em> y <em>PLAN.md</em>.</p></li><li><p><strong>Fase 2 &#8212; Mercadona User Story Toolkit (PM):</strong> transforma el plan de GSD en stories de calidad. Empieza con <em>/from-gsd</em> que produce un PRD sint&#233;tico, lo completa el PM con research (entrevistas Mom Test), genera JTBDs, escribe stories con scoring 6D, las valida y prioriza en batches anti-waterfall.</p></li><li><p><strong>Fase 3 &#8212; Superpowers (Eng):</strong> recibe el batch de stories y las implementa con TDD subagent-driven. Cada commit lleva el ID de requirement (<em>feat: implement DETECT-01...</em>). Tests verdes, code review, PR mergeada.</p></li></ul><p>Y para cerrar el c&#237;rculo: un puente. <em>gsd-bridge</em> es un CLI que detecta los REQ-IDs en los commits y actualiza autom&#225;ticamente <em>STATE.md</em>, <em>PLAN.md</em>, <em>ROADMAP.md</em> y genera <em>VERIFICATION.md</em>. Sin &#233;l, los artefactos de GSD divergen de la realidad del c&#243;digo en cuanto la implementaci&#243;n arranca.</p><p>Esa es la idea. Ahora vamos a por el detalle.</p><div><hr></div><h2>Por qu&#233; tres herramientas y no una</h2><p>La pregunta razonable es: &#191;por qu&#233; no usar solo Superpowers para todo? Ya tiene <em>brainstorming</em>, <em>writing-plans</em>, <em>executing-plans</em>. &#191;Para qu&#233; meter GSD y Mercadona User Story Toolkit en medio?</p><p>Porque cada herramienta est&#225; optimizada para un trabajo distinto, y mezclar trabajos en una sola herramienta produce resultados mediocres en todos.</p><p><strong>GSD est&#225; optimizado para roadmap multi-fase.</strong> Tiene noci&#243;n de fases con dependencias, success criteria, requirements falsables, y un ciclo de planning con verificaci&#243;n iterativa. Si intentas reproducir eso con Superpowers solo, acabas con un plan &#250;nico gigantesco que no captura bien la cadencia trimestral del producto. Si pides a GSD que ejecute, ah&#237; tambi&#233;n flojea &#8212; su <em>gsd-execute-phase</em> no aplica TDD por defecto y tiende a generar c&#243;digo que pasa los tests pero no encajar&#237;a en una code review exigente.</p><p><strong>El Mercadona User Story Toolkit est&#225; optimizado para definir stories con criterio de PM y unir ambos mundos. Es la pieza que traduce y asienta lo que sale de GSD con lo que entre a Superpowers.</strong> Quality gate del PRD, research Mom Test, JTBDs con evidencia, antipatrones detectados (fake stories, stories grandes mal divididas), priorizaci&#243;n con cinco lentes ponderadas anti-waterfall. Esto es trabajo de PM con metodolog&#237;a propia, no de un copiloto general. Pedirle a Superpowers que escriba stories sin esta capa termina en tareas t&#233;cnicas disfrazadas de user stories.</p><p><strong>Superpowers est&#225; optimizado para ejecuci&#243;n disciplinada.</strong> TDD obligatorio (<em>test-driven-development</em> skill), subagent-driven para paralelizar tareas independientes, verification-before-completion para no mentir sobre el estado del c&#243;digo. La cultura de ingenier&#237;a de Mercadona Tech exige TDD y buenas pr&#225;cticas. Superpowers se alinea perfectamente; GSD no fue dise&#241;ado con esa disciplina como requisito.</p><p>La separaci&#243;n es por <strong>especializaci&#243;n</strong>, no por dogma. Cada agente est&#225; afilado para un rol concreto, y el contrato entre ellos es lo que hace que el conjunto funcione.</p><div><hr></div><h2>Working backwards: el modelo mental que mejor encaja</h2><p>Hay una metodolog&#237;a que llevo a&#241;os admirando y que pocos equipos ejecutan bien: el <strong>Working Backwards</strong> de Amazon. La idea es radicalmente simple: antes de construir nada, el equipo escribe el press release del producto terminado y un FAQ de seis p&#225;ginas que cualquier ejecutivo pueda leer y entender. Si no consigues articular el producto en ese formato &#8212; qui&#233;n es el cliente, qu&#233; problema resuelve, c&#243;mo sabremos que ha funcionado &#8212; no est&#225;s listo para empezar. Bill Carr y Colin Bryar lo cuentan en detalle en <em>Working Backwards</em> (2021), y aunque la pr&#225;ctica original est&#225; pensada para humanos escribiendo narrativas en seis p&#225;ginas, la l&#243;gica subyacente es la mejor modelo mental que conozco para trabajar con agentes.</p><p>Este pipeline es, en el fondo, una versi&#243;n ejecutable de Working Backwards. Las correspondencias son directas:</p><ul><li><p><strong>GSD obliga a escribir PROJECT.md, REQUIREMENTS.md y SPEC.md con acceptance criteria falsables antes de pisar c&#243;digo.</strong> Es la disciplina del PR/FAQ: definir el resultado deseado en t&#233;rminos verificables antes de empezar la implementaci&#243;n. Si el acceptance criteria no se puede testear, GSD no te deja avanzar.</p></li><li><p><strong>El Mercadona User Story Toolkit exige completar el PRD con JTBDs basados en entrevistas Mom Test.</strong> Es la <em>customer obsession</em> de Amazon &#8212; empezar por el cliente con evidencia, no con un buyer persona inventado.</p></li><li><p><strong>El quality gate del PRD se niega a continuar si hay GAPs no resueltos.</strong> Es el equivalente a &#8220;no pasamos a build hasta que el PR/FAQ est&#233; aprobado&#8221;. El agente no construye sobre un brief que miente: si falta una m&#233;trica baseline o una cita literal de cliente, el toolkit lo marca como GAP expl&#237;cito y exige resolverlo.</p></li><li><p><strong>La priorizaci&#243;n en batches anti-waterfall replica la l&#243;gica de Amazon de equipos peque&#241;os que entregan valor end-to-end por iteraci&#243;n</strong>, en lugar de &#8220;infra primero, UI despu&#233;s, valor al final&#8221;.</p></li></ul><p>Lo que este pipeline aporta sobre el Working Backwards original es <strong>mecanizar el rigor</strong>. La metodolog&#237;a de Amazon depende mucho de la cultura: si el equipo no se compromete a escribir el PR/FAQ con honestidad, la disciplina se pierde r&#225;pido. Aqu&#237; los agentes son los guardianes &#8212; la skill se niega a inventar n&#250;meros, exige acceptance criteria testeables, y bloquea avance si las stories no derivan de evidencia real.</p><p>Esto importa especialmente cuando hay agentes de implementaci&#243;n de por medio: un agente no tiene contexto de negocio, solo ve la spec que le pasas. Si la spec es vaga, el c&#243;digo ser&#225; vago. Si la spec inventa n&#250;meros, el c&#243;digo optimizar&#225; para n&#250;meros inventados. Working Backwards minimiza ese riesgo forzando claridad en la entrada.</p><p>Mi conclusi&#243;n tras semanas de uso: si vas a orquestar agentes de planning con agentes de implementaci&#243;n, <strong>no hay modelo mental que encaje mejor que Working Backwards</strong>. Outcomes articulados con precisi&#243;n, evidencia antes de hip&#243;tesis, narrativa antes de slides, falsabilidad antes de optimismo. Sin esa disciplina, los agentes producen volumen sin direcci&#243;n.</p><div><hr></div><h2>Walkthrough: facetas en el buscador SearchMO</h2><p>Veamos un ejemplo sencillo de como funciona todo el flujo:</p><blockquote><p><em>Volvamos al buscador de la tienda de Mercadona, ya que hemos observado que cuando un cliente busca &#8220;caf&#233;&#8221; &#8212; query ambigua porque hay molido, en grano, soluble, descafeinado no tenemos forma de desambig&#252;ar si intenci&#243;n de b&#250;squeda. En este caso trans toda la fase de research vemos que tiene sentido a&#241;adir facetas inline a nuestro buscador.  &#8212; la app le ofrecer&#225; chips de filtro debajo del search bar para que afine sin tener que escribir m&#225;s.</em></p></blockquote><p>El walkthrough completo est&#225; en el <a href="https://github.com/josemerca/mercadona-user-story-toolkit/tree/main/examples/searchmo-facets">repo</a>. Aqu&#237; cuento solo lo esencial.</p><h3>Fase 1 &#8212; GSD: roadmap y especificaci&#243;n</h3><p>El PM arranca con <em>/gsd-new-project</em>. La conversaci&#243;n produce:</p><pre><code><code>.planning/
&#9500;&#9472;&#9472; PROJECT.md          # contexto + core value + key decisions
&#9500;&#9472;&#9472; REQUIREMENTS.md     # 16 REQ-IDs, v1 vs v2, out of scope
&#9500;&#9472;&#9472; ROADMAP.md          # 3 fases con success criteria
&#9492;&#9472;&#9472; phases/01-faceted-search/
    &#9500;&#9472;&#9472; SPEC.md         # 7 requirements falsables (current &#8594; target &#8594; acceptance)
    &#9492;&#9472;&#9472; 01-01-PLAN.md   # tasks granulares por REQ-ID</code></code></pre><p>Lo importante de los artefactos GSD: cada requirement tiene un <strong>acceptance criteria concreto y testeable</strong>. No es &#8220;mejorar la b&#250;squeda&#8221;; es &#8220;test con 50 queries (25 ambiguas, 25 espec&#237;ficas) &#8212; clasificador acierta &#8805;90%&#8221;. Esto se traduce directamente a tests m&#225;s adelante.</p><h3>Fase 2 &#8212; Mercadona User Story Toolkit: del plan al backlog</h3><p>El paso clave aqu&#237; es <em>/from-gsd</em>., el cual lee todo el contenido de <em>.planning/</em> y produce un <strong>PRD sint&#233;tico</strong>:</p><pre><code><code>$ /from-gsd
&#10003; PRD sint&#233;tico generado: prd-from-gsd.md
  Secciones rellenas desde GSD:    7
  Secciones marcadas como GAP:     7
  
  GAPs t&#237;picos a completar tras /research:
  - 1.2 Farolas (cuantitativo)
  - 1.3 Penumbras (cualitativo)
  - 2.2 Aspectos Financieros
  - 2.3 M&#233;tricas baseline &#8594; target
  - 3.5 FAQs</code></code></pre><p>Aqu&#237; pasa algo importante. <strong>El PRD sint&#233;tico es fiel pero incompleto.</strong> GSD captura roadmap, scope y specs falsables &#8212; eso se mapea bien al PRD. Pero GSD no captura m&#233;tricas con baseline, citas literales de clientes, ni ROI estimado. Esos huecos se marcan como <strong>GAPs expl&#237;citos</strong> que el PM completa despu&#233;s del research, no antes. La skill se niega a inventar n&#250;meros. Si tu PRD generado dice <em>[&#9888;&#65039; Pendiente: definir m&#233;trica con datos reales]</em> es porque GSD no sabe esa m&#233;trica y t&#250; tampoco la has aportado todav&#237;a.</p><p>El PM completa los GAPs con <em>/research</em>, que dise&#241;a entrevistas Mom Test y, tras realizarlas, sintetiza JTBDs:</p><pre><code><code>## JTBD-01: Refinar b&#250;squeda ambigua sin esfuerzo extra

Job principal: Cuando busco un producto y la consulta es ambigua, quiero
refinar el resultado sin tener que pensar palabras adicionales, para llegar
al producto correcto sin perder tiempo ni frustrarme.

Evidencia cuantitativa: 12% queries ambiguas, 28% search abandon
(vs 16% en espec&#237;ficas), 4.2s tiempo a primer click (vs 2.1s).

Evidencia cualitativa: "Cuando busco 'caf&#233;' me sale de todo y no s&#233; cu&#225;l
pillar" &#8212; cliente recurrente, sesi&#243;n de discovery 22-abr.

Confianza en el JTBD: Alta (5/5 entrevistas)</code></code></pre><p><em>/stories</em> convierte los JTBDs en user stories con scoring 6D, <em>/validate-stories</em> detecta antipatrones, <em>/split-stories</em> divide stories grandes, y <em>/prioritize</em> agrupa en batches anti-waterfall:</p><pre><code><code>Batch 1 &#8212; Backend m&#237;nimo viable end-to-end (Stories 1+2)
Batch 2 &#8212; UI funcional con orden b&#225;sico (Stories 3+4)  
Batch 3 &#8212; Telemetr&#237;a y validaci&#243;n (Story 5)</code></code></pre><p>Cada batch entrega valor por s&#237; solo. El batch 1 (backend solo) ya permite validar el algoritmo via API antes de invertir en UI. El batch 3 cierra el loop de medici&#243;n. Nada de &#8220;infra primero, valor al final&#8221;.</p><h3>Fase 3 &#8212; Superpowers: ejecuci&#243;n TDD</h3><p>El PM pasa el batch 1 al ingeniero, que arranca Superpowers con <em>/superpowers:writing-plans</em>. La skill lee las stories + los acceptance criteria del SPEC.md y produce un plan de implementaci&#243;n TDD: pasos, tests a escribir antes del c&#243;digo, criterios de verificaci&#243;n.</p><p>Despu&#233;s, <em>/superpowers:test-driven-development</em> ejecuta el ciclo <strong>rojo &#8594; verde &#8594; refactor</strong> en cada step:</p><pre><code><code># Test rojo
def test_query_with_high_dispersion_is_classified_ambiguous():
    top_k_results = [...]
    classifier = SearchClassifier(threshold=AmbiguityThreshold(3, 0.10))
    result = classifier.classify(top_k_results)
    assert result == QueryClassification.AMBIGUOUS

# Implementaci&#243;n m&#237;nima &#8594; test verde &#8594; refactor solo si emerge una smell</code></code></pre><p>Para batches con tareas independientes, <em>/superpowers:subagent-driven-development</em> dispara subagentes en paralelo (un subagente para el clasificador, otro para el generador de facetas). M&#225;s r&#225;pido pero m&#225;s caro en tokens &#8212; volveremos a eso.</p><p>Cada commit referencia el REQ-ID:</p><pre><code><code>feat(search): implement DETECT-01 + DETECT-02 + DETECT-03 ambiguity classifier
feat(search): implement FACET-01 + FACET-02 facet generator
feat(search): implement FACET-03 + FACET-04 ordering by usage and frequency
feat(search): integrate facets into /search endpoint
test(search): add load test verifying p99 &#8804;195ms with facets enabled</code></code></pre><p>Tests verdes, code review pasada, PR mergeada. El ingeniero ha terminado.</p><p>Y aqu&#237; es donde sin un puente, la cosa se rompe, ve&#225;moslo en siguiente secci&#243;n.</p><div><hr></div><h2>El problema de orquestaci&#243;n</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KhYo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KhYo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 424w, https://substackcdn.com/image/fetch/$s_!KhYo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 848w, https://substackcdn.com/image/fetch/$s_!KhYo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 1272w, https://substackcdn.com/image/fetch/$s_!KhYo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KhYo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png" width="1456" height="606" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:606,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:766159,&quot;alt&quot;:&quot;Sin bridge vs con bridge&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/196166230?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Sin bridge vs con bridge" title="Sin bridge vs con bridge" srcset="https://substackcdn.com/image/fetch/$s_!KhYo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 424w, https://substackcdn.com/image/fetch/$s_!KhYo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 848w, https://substackcdn.com/image/fetch/$s_!KhYo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 1272w, https://substackcdn.com/image/fetch/$s_!KhYo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4768a4d-fedb-4141-a6b6-f900eeb94322_2378x990.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Este es el problema m&#225;s subestimado de unir planning y ejecuci&#243;n con agentes con herramientas distintas como GSD y Superpowers, y el que m&#225;s nos cost&#243; resolver.</p><p>Cuando GSD planifica pero Superpowers ejecuta, los artefactos de GSD se quedan obsoletos en cuanto los commits empiezan a entrar. <em>STATE.md</em> sigue diciendo &#8220;phase not started&#8221; cuando en realidad est&#225; casi terminada. <em>ROADMAP.md</em> muestra checkboxes vac&#237;os cuando los REQ-IDs est&#225;n terminados en c&#243;digo. <em>PLAN.md</em> no se actualiza. <em>VERIFICATION.md</em> nunca se genera.</p><p>Esto importa m&#225;s de lo que parece. El seguimiento del desarrollo de cada funcionalidad se basa en el estado de GSD; si miente, el PM termianr&#225; por no saber por donde va. La trazabilidad de auditor&#237;a se rompe &#8212; qui&#233;n hizo qu&#233; y cu&#225;ndo deja de ser reconstruible. Y cuando empieza la siguiente fase, los artefactos divergen tanto que ya nadie los actualiza, y el proyecto se queda con dos fuentes de verdad incompatibles: el c&#243;digo y los planes que describ&#237;an el c&#243;digo que se iba a hacer.</p><p>Nuestra soluci&#243;n es un CLI standalone llamado <em>gsd-bridge</em>. ~250 l&#237;neas de Python, sin dependencias externas:</p><pre><code><code>gsd-bridge sync           # auto-sync desde git: detecta REQ-IDs en commits y actualiza .planning/
gsd-bridge mark-done X-01 # marcar manualmente si los commits no referencian REQ-ID
gsd-bridge amend "raz&#243;n"  # registrar drift de dise&#241;o en SPEC-AMENDMENTS.md</code></code></pre><p>El convenio m&#237;nimo: incluir el REQ-ID en el commit message. El bridge detecta el patr&#243;n <em>[A-Z]{2,8}-\d{1,4}</em> (ej: <em>AUTH-01</em>, <em>DETECT-12</em>), busca en qu&#233; <em>PLAN.md</em> aparece, lo marca como <em>[x]</em>, y si todos los REQs de una fase est&#225;n done, cierra la fase en <em>ROADMAP.md</em>, genera <em>VERIFICATION.md</em> y a&#241;ade una entrada de sync al inicio de <em>STATE.md</em>.</p><p>Para automatizarlo del todo, hay un hook de Claude Code que ejecuta <em>gsd-bridge sync --quiet</em> al final de cada conversaci&#243;n. Si hay <em>.planning/</em> en el directorio, sincroniza; si no, no hace nada. El usuario no se entera.</p><p><strong>Un ejemplo concreto de &#8220;spec drift&#8221;.</strong> El SPEC.md de la feature de facetas dec&#237;a que el threshold de ambig&#252;edad ser&#237;a un valor num&#233;rico simple (<em>min_categories: 3</em>). Durante la implementaci&#243;n, el ingeniero descubri&#243; que necesitaba dos par&#225;metros para que la heur&#237;stica funcionase bien (<em>min_categories</em> + <em>min_weight</em>). Cambi&#243; el c&#243;digo y los tests, pero el SPEC.md sigui&#243; diciendo &#8220;valor num&#233;rico simple&#8221;. Tres semanas despu&#233;s, otro PM lee el SPEC.md para entender el feature, ve &#8220;valor num&#233;rico simple&#8221; y pierde 40 minutos antes de mirar el c&#243;digo. Esto es spec drift y pasa siempre.</p><p><strong>Una decisi&#243;n clave: no tocar </strong><em><strong>SPEC.md</strong></em><strong>.</strong> Cuando la implementaci&#243;n cambia decisiones de dise&#241;o respecto al spec original (cosa que pasa siempre que el problema no es trivial), el bridge <strong>no reescribe SPEC.md</strong>. En su lugar, crea/anexa <em>SPEC-AMENDMENTS.md</em> con cada cambio. Esto preserva el trail hist&#243;rico &#8212; el &#8220;qu&#233; decidimos&#8221; original sigue intacto, los &#8220;qu&#233; cambi&#243; y por qu&#233;&#8221; quedan registrados al lado. Si reescribi&#233;semos SPEC.md, perder&#237;amos la capacidad de auditar decisiones a posteriori.</p><div><hr></div><h2>Por qu&#233; Superpowers y no <em>gsd-execute</em></h2><p>GSD tiene su propio comando de ejecuci&#243;n, <em>gsd-execute-phase</em>. Funciona, y para muchos proyectos comunitarios encaja bien, de hecho es la forma de mantener todo el status del proyecto correctamente actualizado sin toda la parafernalia que he descrito en las secciones anteriores. Sin embargo a nosotros no nos sirve.</p><p>La raz&#243;n es <strong>cultura de ingenier&#237;a</strong>. En Mercadona Tech, las pr&#225;cticas de desarrollo no son negociables: TDD obligatorio en el c&#243;digo de producci&#243;n, code review exigente, verificaci&#243;n de aceptaci&#243;n antes de mergear, separaci&#243;n clara entre tests unitarios e integraci&#243;n. Esto no es ideolog&#237;a &#8212; es lo que mantiene un sistema con decenas de servicios y 12 equipos sin que se caiga.</p><p>Cuando probamos <em>gsd-execute-phase</em> para implementar funcionalidades reales, el c&#243;digo que produc&#237;a pasaba los tests que se le ped&#237;an pero no aguantaba bien una code review estricta. Faltaba disciplina TDD: el orden tend&#237;a a ser &#8220;implementar &#8594; escribir test &#8594; ajustar test hasta que pase&#8221;. Eso es pr&#225;cticamente lo opuesto del TDD que queremos. El resultado era c&#243;digo fr&#225;gil, con tests que validaban <em>lo que el c&#243;digo hace</em> en lugar de <em>lo que debe hacer</em>. Y eso degrada con el tiempo.</p><p>Superpowers, sin embargo, se alinea con nuestra cultura. Su skill <em>test-driven-development</em> exige el ciclo rojo-verde-refactor. Su <em>verification-before-completion</em> se niega a declarar &#8220;hecho&#8221; sin evidencia fresca de que los tests pasan. Su <em>requesting-code-review</em> activa un revisor autom&#225;tico antes de que el ingeniero diga &#8220;est&#225; terminado&#8221;. Cada una de estas disciplinas es opcional en otras herramientas; aqu&#237; est&#225;n reforzada por la skill.</p><p>Esto no es decir que <em>gsd-execute-phase</em> sea malo. Es decir que <strong>no es la herramienta adecuada para nuestra cultura de ingenier&#237;a</strong>. Si tu equipo no es TDD-strict, GSD-execute puede serviros bien. Si lo eres, Superpowers encaja mejor.</p><div><hr></div><h2>El coste real: tokens</h2><p>Si vas a probar este pipeline, tienes que conocer el coste. Esto no es barato.</p><p>Mis estimaciones aproximadas para una feature mid-size (3 stories, ~1.5 semanas de trabajo):</p><ul><li><p><strong>GSD planning</strong> (project + phase + plan + research): ~50-100k tokens. Hay multi-agent (planner + plan-checker), por eso sube.</p></li><li><p><strong>Mercadona User Story Toolkit pipeline</strong> (prd-quality-guard &#8594; research &#8594; analyze &#8594; stories &#8594; validate &#8594; split &#8594; prioritize): ~60-120k tokens. Las skills tienen muchos checkpoints y leen referencias bajo demanda.</p></li><li><p><strong>Superpowers TDD subagent-driven</strong>: ~150-300k tokens. Aqu&#237; est&#225; el grueso. Cada subagente que lanzas es una conversaci&#243;n nueva con su propio contexto. Para una feature peque&#241;a con 5-7 steps de TDD, llegas f&#225;cil a 200k.</p></li></ul><p><strong>Total por feature medium: 250-500k tokens.</strong> Con Claude Sonnet a precios actuales, son unos pocos d&#243;lares. Con Opus, m&#225;s. Para un equipo que ejecuta varias features a la semana, el gasto no es despreciable.</p><p>&#191;Vale la pena? Honestamente, todav&#237;a no lo s&#233; con n&#250;meros. Lo que tengo es la sensaci&#243;n de que el c&#243;digo sale m&#225;s limpio y el rework baja, y eso compensa con creces el coste de tokens, por no hablar de que la velocidad del desarrollo se dispara entre un 5x y un 10x. Pero esa sensaci&#243;n necesita validaci&#243;n emp&#237;rica que a&#250;n no hemos hecho.</p><p>Si tu equipo tiene presupuesto ajustado, dos consejos: (1) usa subagent-driven solo cuando las tareas sean realmente independientes &#8212; si fuerzas paralelizaci&#243;n innecesaria, gastas el doble sin ganar tiempo; (2) deja Opus para los pasos cr&#237;ticos (writing-plans, refactor) y usa Sonnet para el grueso de TDD repetitivo.</p><div><hr></div><h2>Qu&#233; falla todav&#237;a</h2><p>Llevamos unas pocas semanas usando esto. No todo funciona perfecto. Lo que a&#250;n nos duele:</p><p><strong>1. La automatizaci&#243;n del bridge tiene huecos.</strong> Si el ingeniero olvida poner el REQ-ID en el commit, el bridge no detecta nada y hay que hacer <em>mark-done</em> manual. Hemos pensado en un pre-commit hook que rechace commits sin REQ-ID, pero genera fricci&#243;n y no siempre tiene sentido (commits de typo, bumps de dependencias). Decisi&#243;n pendiente.</p><p><strong>2. El handoff entre fases no es 100% autom&#225;tico.</strong> Cuando el PM termina con Mercadona User Story Toolkit y produce el batch priorizado, el ingeniero tiene que copiar las stories al input de <em>/superpowers:writing-plans</em>. Es un copy-paste de markdown &#8212; funciona, pero es manual, lo mismo que si te llevas las user stories a Jira y montas algo para que Superpowers las lea de ah&#237;. Idealmente Superpowers deber&#237;a leer directamente del output del toolkit, lo que implica cambios estructurales en la forma tradicional de trabajar apalancada en Jira.</p><p><strong>3. El gasto en tokens sigue preocup&#225;ndonos.</strong> Optimizaciones (cache, mezcla de modelos) en exploraci&#243;n &#8212; ver secci&#243;n anterior, no es tonter&#237;a a ver si va a salir el collar m&#225;s caro que el perro.</p><p><strong>4. Spec drift es real.</strong> Aunque el bridge registra amendments, en la pr&#225;ctica los ingenieros no siempre los registran al momento; lo hacen al final, retrospectivamente, y a veces se pierden detalles. Hace falta m&#225;s disciplina o m&#225;s automatizaci&#243;n.</p><p><strong>5. La curva de aprendizaje es alta.</strong> Las tres herramientas tienen su propia metodolog&#237;a (GSD = roadmap-driven, Mercadona User Story Toolkit = JTBD + Mom Test, Superpowers = TDD subagent-driven). Introducir a alguien al pipeline completo lleva tiempo. Los equipos que ya est&#225;n c&#243;modos con Jira + sprint planning tradicional pueden ver esto como overhead innecesario, y no voy a decir que no lo sea.</p><p><strong>6. Mediremos pronto.</strong> Esto es lo m&#225;s importante: medir bien el valor de todo este flujo sigue siendo trabajo pendiente. Necesitamos definir baselines (rate de bugs en producci&#243;n antes y despu&#233;s del pipeline, time-to-PR-mergeada, % de stories que vuelven a abrirse por rework) y compararlas. Hasta que tengamos esos n&#250;meros, esto es una hip&#243;tesis razonable, no una verdad demostrada, no te fies por muy bien que suene todo lo que has leido aqui.</p><div><hr></div><h2>Liberaci&#243;n open-source</h2><p>Hoy publicamos el toolkit en un repo p&#250;blico para que cualquier equipo lo pruebe, esta es una cuenta pendiente que ten&#237;a con vosotros desde que os habl&#233; del <a href="https://www.gemba.es/p/el-ai-mercadona-user-story-framework">Mercadona User Story Toolkit</a>:</p><p><strong>Repo:</strong> <a href="https://github.com/josemerca/mercadona-user-story-toolkit">github.com/josemerca/mercadona-user-story-toolkit</a> &#8212; Licencia MIT.</p><p>Incluye:</p><ul><li><p><strong>8 skills</strong> del Mercadona User Story Toolkit (<em>prd-quality-guard, gsd-to-prd, research-from-prd, jtbd-to-stories, user-story-builder, user-story-quality-coach, story-splitting, story-prioritization</em>)</p></li><li><p><strong>11 comandos</strong> de slash para Claude Code</p></li><li><p><em><strong>bridge/gsd-bridge.py</strong></em> &#8212; el CLI de sincronizaci&#243;n GSD&#8596;ejecutor, con README e hook de ejemplo</p></li><li><p><em><strong>examples/searchmo-facets/</strong></em> &#8212; el walkthrough completo del feature contado en este art&#237;culo, con todos los artefactos al desnudo</p></li><li><p><strong>README + CONTRIBUTING + LICENSE MIT</strong></p></li></ul><p>Las dos herramientas que lo orquestan tambi&#233;n son p&#250;blicas:</p><ul><li><p><strong>GSD:</strong> <a href="https://github.com/gsd-build/get-shit-done">github.com/gsd-build/get-shit-done</a> &#8212; meta-prompting + spec-driven development.</p></li><li><p><strong>Superpowers:</strong> <a href="https://github.com/obra/superpowers">github.com/obra/superpowers</a> &#8212; agentic skills framework.</p></li></ul><p>A ambos equipos, gracias. Sin sus herramientas no existir&#237;a este pipeline.</p><p>Millones de gracias al equipo de Producto e Ingenier&#237;a de Mercadona Tech que est&#225;n probando todo este flujo y sin cuyas ideas todo este trabajo ser&#237;a imposible, aunque lo que le&#233;is aqu&#237; lo escriba yo (bueno en realidad lo escribe Claude &#128514;) muchas de las ideas surgen de mi equipo y no ser&#237;a justo apropiarme de ellas, todo lo que le&#233;is aqu&#237; ha surgido del equipo de Mercadona Tech, no de Jose Ram&#243;n P&#233;rez Ag&#252;era.</p><p><strong>Lo que pido:</strong> prueba el flujo en un proyecto real. Si te encaja, escr&#237;beme. Si no te encaja, escr&#237;beme tambi&#233;n &#8212; quiero saber qu&#233; falla en otros contextos. Si encuentras bugs, abre issue. Si tienes una idea para mejorarlo, manda PR.</p><p>Esto est&#225; en versi&#243;n 0.1. Vamos a iterarlo entre todos.</p><div><hr></div><h2>Cierre</h2><p>El argumento de fondo de toda la serie <em>Desarrollo de productos con agentes</em> es que estamos en un momento bisagra. Las herramientas individuales (Claude Code, Cursor, Copilot, Superpowers) est&#225;n bien. Las metodolog&#237;as (vibe coding, spec-driven development) tambi&#233;n. Lo que falta es <strong>estandarizar c&#243;mo se conectan entre s&#237;</strong> para producir un flujo coherente desde la idea de producto hasta la PR mergeada.</p><p>Este pipeline es una propuesta. Probablemente no la mejor. Probablemente no la final. Pero es una concreta, ejecutable, y abierta para que t&#250; la mejores.</p><p>&#191;C&#243;mo lo est&#225;is haciendo vosotros? &#191;Qu&#233; herramientas os est&#225;n funcionando para conectar producto e ingenier&#237;a en la era de los agentes? &#191;D&#243;nde se os rompe el flujo?</p><p>Lee, prueba, rompe, comparte.</p><div><hr></div><p><em>Este es el cuarto art&#237;culo de la serie <strong>Desarrollo de productos con agentes</strong>. Anteriores:</em></p><ul><li><p><em><a href="https://www.gemba.es/p/vibe-coding-revolucion-o-espejismo">Vibe coding: &#191;revoluci&#243;n o espejismo? (14 abril)</a></em></p></li><li><p><em><a href="https://www.gemba.es/p/despues-del-vibe-coding-spec-driven">Despu&#233;s del vibe coding: spec-driven development con GSD y Superpowers (20 abril)</a></em></p></li><li><p><em><a href="https://www.gemba.es/p/como-construimos-nuestro-buscador">C&#243;mo construimos nuestro buscador en Mercadona Tech (y c&#243;mo construir el tuyo) (27 abril)</a></em></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Cómo construimos nuestro buscador en Mercadona Tech (y cómo construir el tuyo)]]></title><description><![CDATA[El playbook completo, abierto, para que cualquiera pueda inspirarse y montar el suyo.]]></description><link>https://newsletter.gemba.es/p/como-construimos-nuestro-buscador</link><guid isPermaLink="false">https://newsletter.gemba.es/p/como-construimos-nuestro-buscador</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 27 Apr 2026 06:31:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/24917baf-82b2-4f4f-acee-828874b98eaa_2386x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hace dos semanas publiqu&#233; un art&#237;culo sobre vibe coding donde mencion&#233;, casi de pasada, que en Mercadona Tech hab&#237;amos construido nuestro propio buscador con Claude Code. Era un caso real, ilustrativo, dentro de un debate m&#225;s amplio sobre d&#243;nde funciona programar conversando con una IA y d&#243;nde no.</p><p>No esperaba la reacci&#243;n. Decenas de mensajes pidiendo detalles. Empresas peque&#241;as y grandes preguntando c&#243;mo lo hab&#237;amos hecho. Equipos de ingenier&#237;a contando que llevaban meses pensando en algo parecido pero no sab&#237;an por d&#243;nde empezar. Personas no t&#233;cnicas queriendo entender qu&#233; hay realmente detr&#225;s de un buscador moderno.</p><p>Este art&#237;culo es la respuesta a todas esas preguntas. Y al final hay un fichero descargable que puedes darle a Claude Code para empezar tu propio proyecto siguiendo el mismo m&#233;todo.</p><h3>Por qu&#233; lo cuento todo</h3><p>En Mercadona tenemos un Modelo que se llama <strong>Calidad Total</strong>. No es un documento ni un manual: es el sistema que gu&#237;a las decisiones de todos los que trabajamos en la compa&#241;&#237;a, desde la persona que repone en una tienda hasta el comit&#233; de direcci&#243;n. Cuando hay que elegir entre dos caminos, el Modelo te dice cu&#225;l respeta lo que debe respetarse, y en qu&#233; orden.</p><p>El Modelo de Mercadona identifica cinco componentes a los que la empresa tiene que satisfacer simult&#225;neamente, y lo hace en un orden concreto: primero <strong>El Jefe</strong> &#8212;que es como llamamos al cliente en Mercadona&#8212;, despu&#233;s el <strong>Trabajador</strong>, despu&#233;s el <strong>Proveedor</strong>, despu&#233;s la <strong>Sociedad</strong> y, finalmente, el <strong>Capital</strong>. Los cinco a la vez, pero con esa secuencia de prioridad. La frase que se repite internamente es que &#8220;para que el avi&#243;n vuele, tienen que cumplirse todas las leyes de la f&#237;sica al mismo tiempo&#8221;: atender a todos, sin perder el orden.</p><p>El componente que me interesa hoy es el cuarto: la Sociedad. Las personas, entidades y lugares que rodean a la empresa. Juan Roig lo resume con una frase que cualquiera que trabaje cerca le ha o&#237;do alguna vez: <em><strong>mi sue&#241;o es compartir el modelo</strong></em>. <em>Si alguien aprende a hacer las cosas bien, hay emprendedores. Si hay emprendedores, hay empresas. Si hay empresas, hay empleo. Si hay empleo, hay riqueza. Si hay riqueza bien gestionada, hay bienestar.</em></p><p>Compartir lo que aprendemos es, dentro del Modelo de Mercadona, una de las formas naturales de cumplir con el componente Sociedad.</p><p>Por eso este art&#237;culo no se queda en la an&#233;cdota. Voy a contar exactamente c&#243;mo est&#225; construido nuestro buscador: qu&#233; algoritmos lo componen, qu&#233; decisiones tomamos en cada capa, por qu&#233; descartamos algunas alternativas que parec&#237;an obvias, qu&#233; reglas de gobernanza aplicamos al modelo de aprendizaje, y qu&#233; stack abierto puede reproducirlo. Y voy a entregar al final un playbook descargable para que cualquier equipo, sin importar su tama&#241;o, pueda usarlo como punto de partida.</p><p>Si lo que cuento sirve para que un equipo de tres personas en cualquier sitio reemplace un buscador caro por uno propio, mejor, y m&#225;s controlable, este art&#237;culo habr&#225; cumplido su funci&#243;n.</p><h3>A qui&#233;n le sirve esto</h3><p>Antes de entrar en detalle, conviene aclarar para qui&#233;n es &#250;til lo que viene a continuaci&#243;n.</p><p>Este art&#237;culo est&#225; pensado para dos lectores muy distintos a la vez. El primero es alguien sin formaci&#243;n t&#233;cnica que quiere entender realmente c&#243;mo funciona un buscador moderno: por qu&#233; a veces encuentra lo que busca y por qu&#233; otras veces no, qu&#233; est&#225; pasando cuando un sistema &#8220;aprende&#8221; de los clics, por qu&#233; unas tiendas online tienen buscadores que parecen leerte la mente y otras te muestran resultados absurdos. Para este lector, voy a explicar cada concepto antes de usarlo y a evitar la jerga gratuita.</p><p>El segundo lector es alguien t&#233;cnico que quiere replicar el sistema. Para ese lector, voy a dar el detalle suficiente para que el playbook final tenga sentido: nombres concretos de algoritmos, par&#225;metros, decisiones de validaci&#243;n, m&#233;tricas. No voy a esconder nada relevante por miedo a que el art&#237;culo parezca denso.</p><p>Mi apuesta es que ambos lectores pueden convivir en el mismo texto si la estructura est&#225; bien. La parte t&#233;cnica explica el porqu&#233;. La parte conceptual explica el qu&#233;. Y las dos juntas dan la &#250;nica respuesta honesta a <em>&#191;c&#243;mo se hace un buscador?</em>: no hay una respuesta corta, pero tampoco es magia.</p><h3>Por qu&#233; un buscador propio</h3><p>En una tienda online, el buscador es la puerta principal. La gente no navega cat&#225;logos cuando ya sabe lo que quiere: escribe el nombre y espera que aparezca. Si no aparece, se va. No reformula, no explora, no vuelve a probar dos veces. Se va.</p><p>En nuestra tienda online, el buscador maneja <strong>4,4 millones de b&#250;squedas a la semana</strong>. Si el 4% no devuelve resultados, hablamos de unos 176.000 usuarios a la semana que escriben algo razonable y no encuentran nada. Eso era exactamente lo que nos pasaba. Y era lo m&#225;s educado que pod&#237;a pasar: el resto de b&#250;squedas, las que s&#237; devolv&#237;an resultados, tambi&#233;n pod&#237;an ser mejores. Solo que ah&#237; no ten&#237;amos un n&#250;mero rojo que nos avisara.</p><p>El problema con un buscador est&#225;ndar &#8212;cualquier buscador est&#225;ndar, sea un SaaS o el motor que viene con el e-commerce&#8212; es que est&#225; dise&#241;ado para ser bueno con cualquier cat&#225;logo. Eso suena bien hasta que recuerdas que tu cat&#225;logo no es cualquier cat&#225;logo. Tus usuarios no escriben como los de cualquier otra tienda. Tu negocio no premia los mismos resultados que el de tu competidor. Y, sobre todo, tienes datos de comportamiento real &#8212;qu&#233; buscan, qu&#233; clican, qu&#233; compran&#8212; que un buscador gen&#233;rico no puede aprovechar bien porque no son suyos.</p><p>Construir el tuyo te da tres cosas concretas. La primera es control sobre el ranking: t&#250; decides qu&#233; se&#241;ales pesan m&#225;s, c&#243;mo se ponderan, qu&#233; hacer con productos que aparecen mucho pero se compran poco, qu&#233; hacer con productos nuevos que todav&#237;a no tienen historial. La segunda es mejora dirigida: cada decisi&#243;n que tomas se mide contra los datos reales de tu negocio, no contra un benchmark sint&#233;tico. Si una decisi&#243;n mejora un 1% el ranking de tu cat&#225;logo, te lo llevas t&#250;. La tercera es propiedad de la pieza: una de las decisiones m&#225;s cr&#237;ticas del negocio deja de depender de un proveedor externo y pasa a ser conocimiento que se queda dentro del equipo.<br><br>Hay una cuarta raz&#243;n, menos rom&#225;ntica pero igual de relevante: el coste. Un buscador SaaS razonablemente serio cuesta varios miles de d&#243;lares al mes para un volumen como el nuestro. Un buscador propio bien dise&#241;ado cuesta una fracci&#243;n. Eso no es raz&#243;n suficiente por s&#237; sola &#8212;si gastando dinero compras calidad, gasta dinero&#8212;, pero cuando construyendo el tuyo *adem&#225;s* mejoras la calidad, el c&#225;lculo deja de ser una decisi&#243;n y se convierte en una conclusi&#243;n.</p><p>Decidimos construir el nuestro. Lo que viene a continuaci&#243;n es exactamente c&#243;mo lo hicimos.</p><h3>La arquitectura, en una p&#225;gina</h3><p>Antes de entrar en cada componente, conviene tener una imagen mental. Un buscador moderno parece complejo, pero no lo es tanto si lo ves como un proceso de cuatro pasos.</p><p>Imagina que entras en una librer&#237;a gigantesca con un papel donde has escrito tres palabras del libro que buscas. Para encontrarlo mandas a dos personas. La primera busca todos los libros cuyo t&#237;tulo contenga literalmente esas tres palabras. La segunda busca libros que, aunque no usen exactamente esas palabras, traten del mismo tema. Vuelven las dos con su lista. T&#250; las cruzas, descartas los libros que no est&#233;n en esa librer&#237;a concreta, y un experto en el cat&#225;logo te ordena lo que queda seg&#250;n lo que sabe del negocio: qu&#233; libros se prestan m&#225;s, cu&#225;les son recientes, cu&#225;les encajan mejor con tu petici&#243;n. Lo que t&#250; ves es la lista final.</p><p>Eso es, casi literalmente, lo que hace un buscador como el nuestro. Cambia &#8220;libros&#8221; por &#8220;productos&#8221;, &#8220;dos personas&#8221; por &#8220;dos algoritmos de b&#250;squeda&#8221; y &#8220;experto en el cat&#225;logo&#8221; por &#8220;modelo de aprendizaje&#8221;, y tienes toda la arquitectura.</p><p>Veamos las piezas.</p><h4>1. Normalizar la consulta</h4><p>Cuando alguien escribe &#8220;Caf&#233; Molido&#8221;, el sistema convierte ese texto en su forma can&#243;nica: min&#250;sculas, sin acentos, separado en palabras. &#8220;Caf&#233; Molido&#8221; pasa a ser una lista con dos elementos: &#8220;cafe&#8221; y &#8220;molido&#8221;. La regla de oro: la normalizaci&#243;n al consultar tiene que ser **exactamente la misma** que la normalizaci&#243;n al indexar el cat&#225;logo. Si lo indexas con acento y lo buscas sin acento, no hay match. En nuestro cat&#225;logo descubrimos que el 100% de los usuarios escribe sin acentos: eso decidi&#243; la convenci&#243;n.</p><h4>2. Dos b&#250;squedas en paralelo</h4><p>Sobre la consulta normalizada, el sistema lanza dos b&#250;squedas simult&#225;neas.</p><p>La primera es **l&#233;xica**: busca productos cuyo nombre, marca o descripci&#243;n contenga literalmente las palabras del usuario. Si escribes &#8220;leche&#8221;, encuentra productos con &#8220;leche&#8221; en alguna parte. Lo hace con **BM25**, un algoritmo cl&#225;sico que punt&#250;a cada producto seg&#250;n cu&#225;ntas veces aparece la palabra y lo rara que es esa palabra en el cat&#225;logo (las palabras raras punt&#250;an m&#225;s). Corre sobre **Tantivy**, un motor escrito en Rust, embebido en el servicio, sin cl&#250;ster aparte. Devuelve los 100 mejores candidatos.</p><p>La segunda es **sem&#225;ntica**: convierte la consulta en un vector de 384 n&#250;meros que representa su &#8220;significado&#8221; y busca, en una matriz precomputada de todos los productos, cu&#225;les son m&#225;s parecidos en ese espacio. Encuentra cosas que la primera no encuentra: si buscas &#8220;para fregar&#8221;, puede traerte &#8220;estropajo&#8221; aunque no contenga la palabra &#8220;fregar&#8221;. El modelo que genera los vectores se llama **e5-small** &#8212;abierto, multiling&#252;e, ligero&#8212; y lo ejecutamos como ONNX INT8, una versi&#243;n optimizada que cabe en 6 MB de memoria y responde en milisegundos sin tarjeta gr&#225;fica. Devuelve los 50 mejores candidatos.</p><h4>3. Fusionar las dos listas</h4><p>Tenemos dos listas con candidatos que a veces se solapan y a veces no. La t&#233;cnica que usamos para combinarlas se llama **Reciprocal Rank Fusion**: cada producto recibe puntos inversamente proporcionales a su posici&#243;n en cada lista. Si aparece el 1&#186; en una y el 5&#186; en la otra, suma por ambas. Si solo aparece en una, suma por una. Es robusta y no requiere calibrar pesos: solo usa posiciones, no puntuaciones absolutas, lo que la hace ciega al hecho de que BM25 y similitud sem&#225;ntica viven en escalas distintas.</p><p>Tras la fusi&#243;n queda una lista de unos 60 candidatos. A continuaci&#243;n se aplica un filtro: descartar los productos que no est&#233;n en el surtido de la tienda concreta del usuario. C&#243;mo hacemos ese filtro de forma eficiente es una decisi&#243;n interesante por s&#237; misma &#8212; la cuento en la siguiente secci&#243;n.</p><h4>4. Reordenar con aprendizaje autom&#225;tico</h4><p>Los 60 candidatos que quedan est&#225;n razonablemente filtrados, pero no est&#225;n bien ordenados. Decidir qu&#233; producto va arriba requiere algo m&#225;s que las puntuaciones anteriores: requiere un modelo entrenado con datos reales del negocio.</p><p>Ese modelo se llama Learning To Rank. En nuestro caso es <strong>CatBoost YetiRank</strong>, un algoritmo basado en &#225;rboles de decisi&#243;n optimizado para problemas de ordenaci&#243;n. Recibe los 60 candidatos junto con 14 caracter&#237;sticas de cada uno &#8212;su puntuaci&#243;n BM25, su parecido sem&#225;ntico, cu&#225;ntas veces se ha comprado en las &#250;ltimas semanas, lo popular que es entre clientes habituales, si lleva poco tiempo en el cat&#225;logo&#8212; y produce el orden final. Tarda menos de un milisegundo en hacerlo.</p><p>A todo esto le acompa&#241;a una pieza separada: el <strong>autocompletado</strong>, las sugerencias que aparecen mientras el usuario escribe. Esto no es una b&#250;squeda completa: es un <strong>Trie</strong> (un &#225;rbol de prefijos) que devuelve, en microsegundos, productos cuyo nombre empieza por lo que llevas escrito. Tres se&#241;ales para ordenar las sugerencias: en qu&#233; campo aparece el match, si coincide la palabra entera o solo el prefijo, y la posici&#243;n dentro del nombre.</p><h3>El presupuesto total</h3><p>Todas las piezas se ejecutan en un tiempo casi imperceptible: menos de 15 milisegundos en el 99% de las consultas. En la pr&#225;ctica nuestra mediana es de 12 ms. Parpadear tarda unos 300 ms &#8212; el buscador entero responde unas 20 veces m&#225;s r&#225;pido que un parpadeo. Cada componente tiene su sub-presupuesto, y si alguno se pasa, el sistema deja de responder a tiempo y la experiencia se degrada. Esa restricci&#243;n estructura las decisiones que vienen a continuaci&#243;n.</p><h3>Cinco decisiones que separan un prototipo de un buscador real</h3><p>Las decisiones que vienen a continuaci&#243;n son las que m&#225;s nos cost&#243; tomar y las que m&#225;s diferencia hicieron. Cada una es independiente: pueden adoptarse por separado en cualquier proyecto. Y cada una responde a una alternativa que parec&#237;a obvia al principio y result&#243; equivocada al final.</p><h4>1. B&#250;squeda h&#237;brida: ninguna de las dos por separado funciona</h4><p>La tentaci&#243;n inicial es elegir uno: o lexical, o sem&#225;ntico. La b&#250;squeda lexical es r&#225;pida, predecible y barata. La sem&#225;ntica es lista, encuentra sin&#243;nimos y maneja preguntas en lenguaje natural. &#191;Por qu&#233; hacer las dos?</p><p>Porque por separado son malas. Si solo usas lexical, el 33% de las consultas no devuelven resultados: alguien escribe &#8220;para fregar&#8221;, no aparece la palabra &#8220;fregar&#8221; en ning&#250;n producto, y el sistema se rinde. Si solo usas sem&#225;ntica, todo encuentra algo, pero ese &#8220;algo&#8221; es a menudo ruido: el modelo cree que &#8220;agua mineral&#8221; se parece a &#8220;agua oxigenada&#8221; y te las mezcla en el ranking.</p><p>Las dos juntas se complementan. La sem&#225;ntica garantiza recall (que siempre haya candidatos) y la lexical garantiza precisi&#243;n (que los candidatos obvios est&#233;n ah&#237;). En nuestros datos, el recall@50 sube de 0,547 (solo lexical) a 0,853 (h&#237;brido). El porcentaje de b&#250;squedas sin resultados pasa del 33% al 0%. Y luego, sobre las dos listas combinadas, el modelo de aprendizaje hace de juez final: aprende de los clics qu&#233; resultados son realmente buenos y qu&#233; resultados, aunque parezcan relevantes, los usuarios ignoran.</p><p>C&#243;mo decidirla en tu caso: si tu cat&#225;logo tiene vocabulario abierto, queries en lenguaje natural o sin&#243;nimos relevantes, necesitas la capa sem&#225;ntica. Si tu cat&#225;logo es peque&#241;o y los usuarios escriben siempre con el vocabulario del cat&#225;logo, quiz&#225; puedas empezar solo con lexical y a&#241;adir la sem&#225;ntica despu&#233;s. Pero la mayor&#237;a de cat&#225;logos reales necesitan ambas.</p><h4>2. Un solo &#237;ndice maestro con bitsets, no un &#237;ndice por tienda</h4><p>El surtido de productos cambia de una tienda a otra: no todas las tiendas tienen los mismos productos en stock. La forma ingenua de manejar esto es construir un &#237;ndice de b&#250;squeda independiente para cada tienda. En nuestro caso, eso son 762 &#237;ndices, replicarlos para distintos &#243;rdenes de resultados, mantenerlos actualizados, reindexar uno cada vez que cambia un surtido.</p><p>La alternativa que adoptamos: <strong>un solo &#237;ndice maestro</strong> con todo el cat&#225;logo, y para cada tienda mantenemos un **bitset** &#8212;un mapa de bits, un array binario donde cada bit representa &#8220;este producto est&#225; disponible aqu&#237;, s&#237; o no&#8221;&#8212;. Cuando alguien busca desde una tienda, ejecutamos la b&#250;squeda contra el &#237;ndice maestro y filtramos el resultado haciendo una operaci&#243;n AND entre los IDs de los productos encontrados y el bitset de su tienda.</p><p>Las cifras hablan solas: 254 bitsets, cada uno de 813 bytes, suman **200 KB en total**. Una operaci&#243;n AND sobre un bitset es cuesti&#243;n de microsegundos. Actualizar un surtido es sustituir un bitset entero, otra operaci&#243;n trivial. Comparado con mantener 762 &#237;ndices f&#237;sicamente separados, multiplicas por mil la simplicidad operativa y por mil el ahorro de almacenamiento.</p><p>C&#243;mo decidirla en tu caso: siempre que tengas multi-tenancy con cat&#225;logos solapado &#8212;tiendas, marcas, regiones, idiomas&#8212; el patr&#243;n &#8220;&#237;ndice maestro + bitset por tenant&#8221; gana. La regla es: &#191;la mayor&#237;a del cat&#225;logo es com&#250;n a todos los tenants? S&#237; &#8594; bitsets. &#191;Cada tenant tiene un cat&#225;logo radicalmente distinto? Entonces s&#237;, &#237;ndices separados.</p><h4>3. Validaci&#243;n walk-forward: nunca mezcles clics al azar</h4><p>Cuando entrenas un modelo de ranking, necesitas separar tus datos en entrenamiento y test. La forma est&#225;ndar en machine learning es coger todos los datos, mezclarlos al azar, y reservar el 20% para test. Esto se llama validaci&#243;n cruzada aleatoria (random k-fold).</p><p>En un buscador esto est&#225; mal. Los clics tienen estructura temporal: estacionalidad, lanzamientos de producto, campa&#241;as internas, d&#237;as con m&#225;s tr&#225;fico que otros. Si mezclas clics aleatoriamente, mezclas pasado y futuro, y el modelo &#8220;aprende&#8221; cosas que en producci&#243;n no podr&#237;a haber sabido. El resultado son m&#233;tricas infladas: tu modelo parece haber mejorado un 5-10% m&#225;s de lo que realmente mejorar&#225; en producci&#243;n.</p><p>La alternativa correcta se llama **walk-forward**: entrenas con las semanas 1, 2 y 3, validas con la semana 4. Despu&#233;s puedes deslizar la ventana: entrenas con 2, 3 y 4, validas con 5. Y as&#237;. El modelo siempre se eval&#250;a contra un futuro real, no contra un futuro que ya conoce.</p><p>C&#243;mo decidirla en tu caso: cuando los datos tengan dimensi&#243;n temporal &#8212;y en un buscador siempre la tienen&#8212;, walk-forward es obligatorio. No es opcional. Es una de esas decisiones que parecen un detalle metodol&#243;gico y son, en realidad, la diferencia entre desplegar un modelo que mejora la m&#233;trica de negocio y desplegar uno que la degrada.</p><h4>4. Corregir el sesgo de posici&#243;n: clics no es lo mismo que relevancia</h4><p>Hay un problema sutil con entrenar un modelo a partir de los clics de los usuarios: los usuarios clican m&#225;s los primeros resultados independientemente de si son relevantes o no. Hay estudios serios sobre esto: el primer resultado se clica unas seis veces m&#225;s que el quinto, aunque el quinto sea exactamente igual de bueno. Si entrenas un modelo asumiendo que &#8220;clic = relevante&#8221;, el modelo aprende a poner siempre arriba los productos que ya estaban arriba. Tu modelo se refuerza a s&#237; mismo, los productos del top dominan, los productos buenos pero menos visibles nunca emergen, la diversidad del cat&#225;logo colapsa, y la calidad cae sin que te des cuenta. Esto se llama <strong>feedback loop o Relevance Feedback </strong>para los padres de la Recuperaci&#243;n de Informaci&#243;n.</p><p>La correcci&#243;n est&#225;ndar se llama <strong>Inverse Propensity Weighting (IPW)</strong>: a cada clic le das un peso inversamente proporcional a la posici&#243;n en la que apareci&#243;. La f&#243;rmula que usamos es 1 dividido entre el logaritmo en base 2 de la posici&#243;n m&#225;s uno. Un clic en la posici&#243;n 1 cuenta poco; un clic en la posici&#243;n 8 cuenta mucho m&#225;s, porque el usuario tuvo que ignorar siete resultados antes de llegar a &#233;l. Eso s&#237; es una se&#241;al fuerte de relevancia.</p><p>Y lo complementamos con exploraci&#243;n: en el 5% de las b&#250;squedas, el sistema mete deliberadamente 2-3 resultados aleatorios en las posiciones 3, 5 y 7. Suena raro pero es necesario: sin exploraci&#243;n, los productos nuevos nunca reciben clics y se quedan atrapados abajo para siempre. El 5% es un coste tolerable para evitar un equilibrio sub&#243;ptimo permanente.</p><p>C&#243;mo decidirla en tu caso: si tu modelo aprende de clics, IPW es obligatorio y exploraci&#243;n tambi&#233;n. No hay alternativa razonable.</p><h4>5. Guardrail del &#8722;2%: ning&#250;n modelo peor pasa, autom&#225;ticamente</h4><p>Reentrenar un modelo cada semana suena bien, hasta que un d&#237;a el reentrenamiento produce un modelo peor. Si lo despliegas sin m&#225;s, los usuarios siguen buscando, los clics siguen llegando &#8212;porque no tienen alternativa&#8212; y tu siguiente reentrenamiento se hace con datos sesgados por un modelo malo. La degradaci&#243;n es invisible y se acumula.</p><p>La defensa que aplicamos es un guardrail autom&#225;tico: el pipeline de reentrenamiento solo despliega un modelo si **ninguna de cuatro m&#233;tricas cae m&#225;s de un 2%** respecto al modelo en producci&#243;n. Las cuatro m&#233;tricas son MRR y NDCG, evaluadas tanto sobre el conjunto de test temporal (walk-forward) como sobre un <strong>golden set est&#225;tico</strong> de 500 consultas con la respuesta ideal anotada manualmente. El golden set no se modifica nunca: es la &#250;nica referencia inmune al feedback loop.</p><p>El pipeline produce tres decisiones posibles. **PROMOTE** si el candidato mejora m&#225;s de un 0,5%. **HOLD** si est&#225; en el rango neutro entre &#8722;2% y +0,5% (queda en cuarentena, no se despliega). **REJECT** si cae m&#225;s de un 2%. Y a&#250;n en el caso de PROMOTE, el despliegue real espera una hora antes de activarse, durante la cual cualquier persona del equipo puede abortarlo. Es el &#250;ltimo gate humano.</p><p>C&#243;mo decidirla en tu caso: si despliegas modelos de forma autom&#225;tica, necesitas un guardrail. El umbral exacto depende de tu sensibilidad: un &#8722;2% es estricto pero adecuado para un buscador con tr&#225;fico cr&#237;tico. Para un sistema con menos riesgo puedes usar &#8722;5%. Pero el patr&#243;n &#8212;reglas autom&#225;ticas + m&#233;trica independiente del propio sistema (golden set) + ventana humana antes del deploy&#8212; es universal.</p><h3>El stack (todo abierto, todo replicable)</h3><p>Una de las cosas que m&#225;s sorprende al construir esto es lo poco ex&#243;tico que es el stack. No hay tarjetas gr&#225;ficas dedicadas, no hay bases de datos vectoriales, no hay servicios externos de cobro. Todo lo que viene a continuaci&#243;n es c&#243;digo abierto, cabe en un repositorio Python, y se ejecuta sobre m&#225;quinas est&#225;ndar.</p><h4>El motor lexical: Tantivy</h4><p>Para la b&#250;squeda por palabras clave usamos <strong>Tantivy</strong>, una librer&#237;a escrita en Rust inspirada en Apache Lucene (La madre de todos los motores de b&#250;squeda que ves hoy en d&#237;a creado por <strong>Doug</strong> <strong>Cutting</strong> hace m&#225;s de 25 a&#241;os en Xerox Park). Lo m&#225;s importante de Tantivy no es el rendimiento (que es excelente: respuestas en milisegundos sobre cat&#225;logos de miles de productos), sino que se ejecuta dentro del propio servicio. No hay un cl&#250;ster aparte, no hay servidores de b&#250;squeda dedicados, no hay JVM que mantener. El &#237;ndice ocupa unos 20 MB de memoria y vive en el mismo proceso que el resto del c&#243;digo.</p><p>Tantivy soporta de forma nativa lo que necesitas para un buscador real: tokenizaci&#243;n configurable, b&#250;squeda por prefijos para el autocompletado, *facetas* para filtros (por categor&#237;a, marca, etc.), y *highlighting* de los t&#233;rminos coincidentes. La alternativa habitual &#8212;Elasticsearch o OpenSearch&#8212; est&#225; pensada para cat&#225;logos del tama&#241;o de los de Wikipedia: si tu cat&#225;logo tiene menos de 100.000 documentos, Tantivy es probablemente la elecci&#243;n correcta.</p><h4>El modelo sem&#225;ntico: e5-small ejecutado con ONNX Runtime</h4><p>Para la capa sem&#225;ntica usamos un modelo de embeddings abierto llamado <strong>multilingual-e5-small</strong>, publicado por Microsoft Research. &#8220;Small&#8221; significa que el modelo tiene unos 118 millones de par&#225;metros: peque&#241;o en t&#233;rminos de modelos modernos, pero m&#225;s que suficiente para nombres de producto cortos. Genera vectores de 384 dimensiones por consulta y por documento.</p><p>Ejecutar este modelo en su forma original (PyTorch) tarda unos 20 ms por consulta en CPU. Demasiado para nuestro presupuesto de latencia. La soluci&#243;n est&#225;ndar es convertirlo al formato ONNX (Open Neural Network Exchange) y ejecutarlo con ONNX Runtime, una librer&#237;a de inferencia muy optimizada. Con la cuantizaci&#243;n a enteros de 8 bits (INT8) &#8212;una t&#233;cnica que reduce la precisi&#243;n num&#233;rica a cambio de un 4&#215; de velocidad sin p&#233;rdida medible de calidad&#8212; el modelo pasa a ocupar unos 118 MB en memoria y devuelve un vector en 3&#8211;5 ms en una CPU normal<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>.</p><p>No hace falta GPU, no hace falta una base de datos vectorial. La matriz completa de embeddings de todo el cat&#225;logo &#8212;unos 4.300 productos por 384 dimensiones&#8212; ocupa 6 MB en RAM. La b&#250;squeda por similitud es una multiplicaci&#243;n de matriz <em>NumPy</em> y un <em>argsort</em>: 1 ms para todos los productos.</p><h4>El modelo de ranking: CatBoost YetiRank</h4><p>El re-ranking final lo hace <strong>CatBoost</strong>, una librer&#237;a de gradient boosting publicada como c&#243;digo abierto por Yandex. Lo elegimos tras una competici&#243;n interna entre cinco algoritmos: CatBoost YetiRank, XGBoost, LightGBM con LambdaRank, una baseline Pointwise y una Listwise. CatBoost YetiRank gan&#243; con menor varianza entre folds (MRR 0,867 &#177; 0,014) y con la mejor inferencia: el modelo entrenado pesa unos 5 MB y predice el orden de 60 candidatos en menos de un milisegundo.</p><p><strong>YetiRank</strong> es la funci&#243;n de p&#233;rdida espec&#237;fica para problemas de ordenaci&#243;n que <strong>CatBoost</strong> incorpora: en lugar de optimizar la predicci&#243;n de un valor (regresi&#243;n) o una clase (clasificaci&#243;n), optimiza directamente el orden relativo entre documentos para una misma consulta. Es lo correcto t&#233;cnicamente para learning-to-rank y, en nuestra competici&#243;n, fue tambi&#233;n lo correcto emp&#237;ricamente.</p><h4>El autocompletado: un Trie</h4><p>El autocompletado no usa el motor de b&#250;squeda. Usa una estructura de datos cl&#225;sica llamada <strong>Trie</strong> (un &#225;rbol de prefijos), donde cada nodo representa una letra y cada camino desde la ra&#237;z hasta una hoja es un prefijo de una palabra del cat&#225;logo. Para encontrar las sugerencias de &#8220;atu&#8221;, recorres tres pasos en el &#225;rbol y devuelves todas las palabras que cuelgan de ah&#237;.</p><p>La b&#250;squeda en un Trie es del orden de microsegundos, no milisegundos. En nuestro caso, p50 = 3 microsegundos, p99 = 388 microsegundos. Eso permite responder a cada tecla que el usuario pulsa sin que la red sea el cuello de botella.</p><h4>El resto: Python, NumPy, scikit-learn</h4><p>El pegamento que une todas estas piezas es Python. La capa de servicio recibe la consulta, llama a Tantivy, llama al runtime ONNX para el embedding, hace el merge RRF con NumPy, aplica el bitset de la tienda, calcula las 14 features de los candidatos restantes, llama a CatBoost para el ranking final, y serializa el resultado. Toda la l&#243;gica matem&#225;tica descansa en NumPy, y scikit-learn se usa solo durante el entrenamiento offline (split de datos, m&#233;tricas, baselines).</p><p>No hay nada en este stack que no puedas instalar con un pip install o un cargo add. No hay licencias propietarias, no hay servicios externos de cobro recurrente, no hay infraestructura especializada. Esa es deliberadamente la apuesta: si la infraestructura es est&#225;ndar, el conocimiento que generes es portable, y la pieza queda dentro del equipo.</p><h4>Resumen de dependencias</h4><p>- B&#250;squeda lexica: **Tantivy** (Rust, licencia MIT)</p><p>- Embeddings: **multilingual-e5-small** (MIT)</p><p>- Inferencia de embeddings: **ONNX Runtime** (MIT)</p><p>- Ranker: CatBoost (Apache 2.0)</p><p>- Pegamento: **Python + NumPy + scikit-learn** (BSD)</p><p>- Almacenamiento de matrices: NumPy en RAM, sin base de datos vectorial</p><p>Todo esto cabe en un proceso del orden de 100 MB de RAM (modelo + &#237;ndice + matriz de embeddings + runtime). Una m&#225;quina modesta lo ejecuta sin despeinarse.</p><h3>El workflow: c&#243;mo se trabaja con Claude Code en un proyecto as&#237;</h3><p>He escrito ya, en art&#237;culos anteriores, sobre c&#243;mo cambia el trabajo cuando una parte del equipo lo hace conversando con un agente de IA. No voy a repetir aqu&#237; ese debate. Voy a contar, en concreto, c&#243;mo se distribuy&#243; el trabajo en este proyecto, porque creo que es la parte m&#225;s &#250;til para alguien que quiera replicarlo.</p><h4>El reparto: humano decide, agente ejecuta</h4><p>La regla mental que aplicamos es simple. Todo lo que sea <strong>explorar</strong> &#8212;analizar datos, probar configuraciones, comparar alternativas, escribir scripts de evaluaci&#243;n, generar tablas&#8212; lo hace el agente. Todo lo que sea <strong>decidir</strong> &#8212;qu&#233; arquitectura adoptar, qu&#233; validaci&#243;n usar, qu&#233; guardrails poner, qu&#233; descartar&#8212; lo hacen las personas.</p><p>Esa distinci&#243;n importa porque las dos partes son del mismo trabajo. Sin la exploraci&#243;n masiva, las decisiones se toman a ciegas. Sin las decisiones, la exploraci&#243;n se vuelve una pila de experimentos sin convergencia. La velocidad del agente es lo que permite explorar 175 configuraciones de BM25 en lugar de 5, comparar 3 modelos de embeddings en lugar de quedarse con el primero que funciona, y validar el ranker contra una competici&#243;n de 5 algoritmos en lugar de adoptar el de moda. Es lo que convierte &#8220;una decisi&#243;n basada en intuici&#243;n&#8221; en &#8220;una decisi&#243;n basada en datos reales del cat&#225;logo&#8221;.</p><h4>Las cuatro fases del proyecto</h4><p>El proyecto avanz&#243; en cuatro fases bien delimitadas, cada una con un experimento can&#243;nico, un fichero de evaluaci&#243;n versionado y una decisi&#243;n documentada al final.</p><p><strong>Fase 0: exploraci&#243;n de datos</strong>. Empezamos sin escribir una sola l&#237;nea de c&#243;digo de producto. Conectamos al agente los 479 MB de datos del cat&#225;logo, las anal&#237;ticas, las consultas reales y los datos de compras, y le pedimos que respondiera preguntas concretas: &#191;cu&#225;ntas palabras tiene una consulta media?, &#191;qu&#233; porcentaje contiene tildes?, &#191;qu&#233; vocabulario aparece y con qu&#233; frecuencia? Aprendimos cosas que cambiaron decisiones posteriores: el 93,7% de las consultas tienen una sola palabra, el 100% se escriben sin acentos, el vocabulario activo son unos 1.300 t&#233;rminos. Sin estos datos, habr&#237;amos optimizado el sistema para problemas que no ten&#237;amos.</p><p><strong>Fase 1: baseline lexico.</strong> Antes de complicarse, hay que tener un baseline. El agente prob&#243; 175 configuraciones de BM25 en una *grid search*. El ganador result&#243; ser BM25 con k1=0,5 y b=0 &#8212; ese cero en b es importante: significa no normalizar por longitud del documento, contraintuitivo en un buscador t&#237;pico, pero correcto en un cat&#225;logo donde los nombres de producto son cortos y uniformes. Esto solo se descubre probando.</p><p><strong>Fase 2: capa sem&#225;ntica</strong>. Con el baseline encima de la mesa, el agente compar&#243; tres modelos de embeddings. e5-small gan&#243; por equilibrio entre calidad y velocidad. Lo m&#225;s interesante de esta fase no fue ganar un punto de MRR, sino constatar que la b&#250;squeda sem&#225;ntica por s&#237; sola produce demasiado ruido, y que la idea correcta era combinarla con la lexical, no sustituirla.</p><p><strong>Fase 3: Learning To Rank</strong>. La que m&#225;s tiempo nos llev&#243;. Cinco modelos, validaci&#243;n cruzada con cinco particiones temporales, comparaci&#243;n de features, an&#225;lisis de importancias. La decisi&#243;n final &#8212;CatBoost YetiRank con 14 features&#8212; es producto de un experimento controlado, no de una intuici&#243;n. La importancia de cada feature se midi&#243;: popularidad 37,5%, embeddings 29,8%, BM25 12,9%. Saber esto no fue accesorio: nos dio confianza para defender decisiones m&#225;s adelante, por ejemplo descartar reglas manuales que solo replicaban se&#241;ales que el modelo ya estaba capturando.</p><p><strong>Fase 4: personalizaci&#243;n</strong>. Aqu&#237; aprendimos negativamente. Probamos features personalizadas (afinidad por categor&#237;a, si el usuario es habitual). Su importancia offline result&#243; ser del 0%. La conclusi&#243;n no fue &#8220;la personalizaci&#243;n no funciona&#8221;, fue &#8220;no podemos validarla offline sin un mapeo consulta-usuario que no tenemos&#8221;. La decisi&#243;n: aplazarla para test A/B en producci&#243;n. A veces, el resultado m&#225;s &#250;til de una fase es saber que la fase no estaba lista.</p><h4>El truco que sostiene todo: un CLAUDE.md no negociable</h4><p>Si hay un solo elemento del que depende que este m&#233;todo funcione, es el fichero de reglas que vive en la ra&#237;z del proyecto y que el agente lee al principio de cada sesi&#243;n. Lo llamamos CLAUDE.md. No es documentaci&#243;n; son <strong>restricciones</strong>.</p><p>Las reglas se dividen en cinco bloques: presupuestos de latencia (cada componente con su milisegundo m&#225;ximo), reglas de arquitectura (qu&#233; algoritmos no se sustituyen sin proceso expl&#237;cito), reglas de aprendizaje autom&#225;tico (IPW, walk-forward, golden set, guardrails), reglas de integraci&#243;n continua (qu&#233; tests bloquean un merge), y reglas de despliegue. Cada regla viene con su justificaci&#243;n &#8212;el porqu&#233;&#8212; y la consecuencia de violarla. Si el agente, en una sesi&#243;n cualquiera, sugiere algo que viola una regla, hay un mecanismo de bloqueo que lo detiene antes de que entre al repositorio.</p><p>Este fichero es el conocimiento estable del proyecto. Es donde vive lo que hemos aprendido y no queremos volver a aprender. Es lo que se queda cuando el agente de IA cambia de versi&#243;n, cuando el equipo rota, cuando el contexto de una conversaci&#243;n se corta. Es, literalmente, el componente que hace que un proyecto construido con vibe coding sea un proyecto, y no una colecci&#243;n de scripts que funcionaron una vez.</p><p>Y es, precisamente, lo que viene a continuaci&#243;n: el playbook completo en formato CLAUDE.md que puedes descargar y usar como punto de partida para tu propio buscador.</p><h4>El playbook que liberamos</h4><p>Al pie de este art&#237;culo encontrar&#225;s un fichero descargable: **searchmo-playbook.md**. No es un manifiesto ni una gu&#237;a te&#243;rica. Es la misma plantilla de reglas que rige nuestro propio buscador, generalizada para que cualquiera pueda darle uso. </p><h4>&#191;Qu&#233; contiene?</h4><p>El fichero tiene cuatro bloques:</p><p><strong>Reglas no negociables</strong>. Las restricciones que rigen el proyecto y que un agente de IA no puede violar sin proceso expl&#237;cito. Incluye los presupuestos de latencia por componente (15 ms en total, distribuidos), las decisiones de arquitectura (no usar base de datos vectorial, no cl&#250;ster externo, &#237;ndice maestro con bitsets) y las reglas de aprendizaje autom&#225;tico (IPW obligatorio, walk-forward obligatorio, golden set obligatorio, guardrail &#8722;2%).</p><p><strong>Las cuatro fases del proyecto</strong>. El orden en el que avanzar, con un objetivo medible al final de cada una. Fase 0: caracterizaci&#243;n del cat&#225;logo y las consultas. Fase 1: baseline lexical con grid search. Fase 2: capa sem&#225;ntica con comparaci&#243;n de modelos. Fase 3: learning-to-rank con competici&#243;n de algoritmos. Cada fase incluye prompts sugeridos para Claude Code: c&#243;mo pedirle que ejecute el grid search, c&#243;mo pedirle que monte el comparador de embeddings, c&#243;mo pedirle que entrene los cinco modelos de ranking.</p><p><strong>Checklist de las cinco decisiones algor&#237;tmicas</strong>. Para cada una, los criterios que te ayudan a decidir c&#243;mo aplicarla en tu caso concreto. Si tu cat&#225;logo tiene tales caracter&#237;sticas, decisi&#243;n X. Si no, decisi&#243;n Y.</p><p><strong>Stack m&#237;nimo.</strong> Las dependencias concretas, con versiones probadas. Tantivy, multilingual-e5-small, ONNX Runtime, CatBoost, Python, NumPy, scikit-learn. Todo abierto, todo replicable.</p><h4><strong>&#191;C&#243;mo usarlo?</strong></h4><p>1. Descarga el fichero y gu&#225;rdalo como CLAUDE.md en la ra&#237;z de un repositorio nuevo.</p><p>2. Abre Claude Code en ese directorio.</p><p>3. P&#237;dele que lea las reglas y empiece por la Fase 0.</p><p>4. A partir de ah&#237;, trabajas conversaci&#243;n por conversaci&#243;n, fase por fase, con el agente ejecutando los experimentos y t&#250; tomando las decisiones al final de cada uno.</p><p>El proceso completo nos llev&#243; un mes, pero el 70% del trabajo &#8212;exploraci&#243;n de datos, baseline lexical, capa sem&#225;ntica y primera versi&#243;n del ranker&#8212; se hizo en un fin de semana largo. El resto del mes fue refinamiento: gobernanza del modelo, golden set, pipeline de reentrenamiento y guardrails. No es un proyecto de un fin de semana en el sentido amateur del t&#233;rmino. Pero tampoco un proyecto que requiera un equipo de quince personas: es un proyecto que un par de personas con criterio y un agente de IA pueden afrontar.</p><h4>Lo que el playbook no resuelve por ti</h4><p>Hay tres cosas que el fichero no puede resolver, y conviene saberlo antes de empezar.</p><p><strong>Tu cat&#225;logo</strong>.El playbook describe el m&#233;todo. Los datos de tu cat&#225;logo son tuyos: qu&#233; productos tienes, c&#243;mo los describes, qu&#233; se&#241;ales de comportamiento tienes registradas. Cuanta m&#225;s calidad tengan estos datos &#8212;especialmente el log de clics&#8212; m&#225;s r&#225;pido converge el sistema.</p><p><strong>Tu juicio</strong>. Las cinco decisiones algor&#237;tmicas tienen un porqu&#233;; ese porqu&#233; se aplica al 80% de los casos. El 20% restante necesita criterio. El playbook te ense&#241;a qu&#233; preguntar, no qu&#233; responder.</p><p><strong>Tu rigor</strong>. La parte m&#225;s exigente no es la algor&#237;tmica: es la disciplina de medir, evaluar contra un golden set inmutable y respetar los guardrails cuando tu propio modelo se degrada. Esa parte la pones t&#250;.</p><h3>Lo que pedimos a cambio</h3><p>Nada. El fichero se libera bajo licencia MIT. Puedes copiarlo, modificarlo, usarlo en proyectos comerciales, no atribuir, no devolver nada. El componente sociedad del Modelo de Mercadona no funciona como un trueque. Funciona como una multiplicaci&#243;n: si lo que aprendimos sirve para que otros equipos hagan algo mejor, estamos cumpliendo con el cuarto componente del Modelo de Mercadona a nuestra manera.</p><p>Si el playbook te sirve, nos encantar&#237;a saberlo. Pero no es una condici&#243;n. Es solo curiosidad.</p><p>Al principio del art&#237;culo dije que no quer&#237;a quedarme en la an&#233;cdota. He dado el detalle algor&#237;tmico, las decisiones cr&#237;ticas, el stack, el m&#233;todo de trabajo y un fichero descargable que reproduce todo lo que hemos aprendido. Si has llegado hasta aqu&#237;, ya tienes lo que necesitas para empezar tu propio buscador.</p><p>Compartir un playbook t&#233;cnico es una forma de cumplir con el componente Sociedad del Modelo de Mercadona: una manera de operar en el d&#237;a a d&#237;a que tambi&#233;n beneficie a quien est&#225; fuera del per&#237;metro de la empresa.</p><p>Yo no espero que un equipo en otra empresa lea esto y construya el mejor buscador de la historia. Espero que alguien con un buscador caro, lento o poco controlable lea el art&#237;culo, descargue el fichero y se ahorre semanas de prueba y error. Si le ahorramos a un equipo el coste de aprender a tropezar, ya hemos cumplido nuestra parte.</p><p><strong>El sue&#241;o de Juan Roig es compartir el modelo. Aplicado a un buscador parece pretencioso, pero es exactamente el mismo gesto: si alguien aprende a hacer algo bien, hay emprendedores; si hay emprendedores, hay empresas; si hay empresas, hay empleo; y, al final del camino, hay bienestar.</strong> Compartir lo que sabemos no es generosidad ni marketing. Es el modo en que un componente del Modelo de Mercadona se conecta con el siguiente.</p><p>Este post est&#225; dedicado a <strong><a href="https://www.linkedin.com/in/joseaguera/#">Juanjo Ponz</a></strong> <strong><a href="https://www.linkedin.com/in/joseaguera/#">Jordi Chulia Benlloch</a></strong> y al resto del equipo de Shop que lleva la tienda de Mercadona Online que son los que realmente han hecho este proyecto realidad. Menci&#243;n especial tambi&#233;n para <strong><a href="https://www.linkedin.com/in/joseaguera/#">Cristian Moncho Ivorra</a></strong> del equipo de Staff por hacer que el buscador vuele.</p><p><a href="https://docs.google.com/document/d/1_ApkE4W9NlLTP3W78NkRwXfWQrdljqpfZ1LCsFfnWSc/edit?usp=sharing">SearchMO Playbook &#8212; CLAUDE.md para construir tu propio buscador</a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Actualizaci&#243;n (28 abr 2026): En la versi&#243;n original de este post escrib&#237; que &#8220;el modelo cabe en 6 MB de memoria&#8221;. Es incorrecto: el modelo multilingual-e5-small cuantizado a INT8 ocupa unos 118 MB (118M par&#225;metros &#215; 1 byte). Los 6 MB se corresponden con la matriz de embeddings del cat&#225;logo (4.300 productos &#215; 384 &#215; 4 bytes), que es un artefacto distinto. Gracias a <a href="https://www.linkedin.com/in/guillermobarbadillo/">Guillermo Barbadillo Villanueva</a> por el catch.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Después del vibe coding: spec-driven development]]></title><description><![CDATA[GSD y Superpowers &#8212; lo que necesitas cuando describir ya no basta]]></description><link>https://newsletter.gemba.es/p/despues-del-vibe-coding-spec-driven</link><guid isPermaLink="false">https://newsletter.gemba.es/p/despues-del-vibe-coding-spec-driven</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Fri, 17 Apr 2026 06:07:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6c312164-42d9-409c-961a-844984f66803_2378x1252.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>La semana pasada escrib&#237; sobre vibe coding: describes lo que quieres en lenguaje natural, el agente lo genera, t&#250; validas. Lo llam&#233; la Thermomix del software. La conclusi&#243;n era que funciona, pero solo resuelve la mitad del problema: la velocidad. Deja la otra mitad intacta.</p><p>La otra mitad es la direcci&#243;n. Qu&#233; est&#225;s construyendo exactamente, por qu&#233; esa decisi&#243;n y no otra, c&#243;mo vas a saber que lo que el agente te devuelve es correcto. Todo eso sigue sin resolverse cuando la &#250;nica herramienta que tienes es &#8220;hablar con la IA&#8221;.</p><p>En los &#250;ltimos meses ha aparecido una respuesta concreta a ese hueco, y est&#225; empezando a consolidarse con un nombre: spec-driven development. La idea es vieja  &#8212; escribir specs antes que c&#243;digo existe desde los setenta &#8212; pero lo que es nuevo es que ahora las specs no son para humanos. Son para el agente. Y cambian radicalmente lo que puedes construir con IA sin perder el control de lo que est&#225;s construyendo.</p><h3>Qu&#233; significa &#8220;spec&#8221; ahora</h3><p>Antes de entrar en herramientas concretas, conviene entender qu&#233; significa &#8220;spec&#8221; en este contexto, porque no es lo que significaba hace diez a&#241;os.</p><p>Una spec tradicional era un documento muerto. Alguien lo escrib&#237;a, alguien lo le&#237;a, alguien lo ignoraba cuando llegaba la hora de programar. Al final del proyecto el documento y el c&#243;digo no se parec&#237;an en nada, y todo el mundo hab&#237;a aprendido a convivir con esa divergencia como quien convive con el goteo del grifo del ba&#241;o.</p><p>Una spec para un agente de IA es otra cosa. Es un artefacto vivo que el agente lee antes de actuar, actualiza cuando toma decisiones, y consulta para verificar que lo que ha hecho encaja con lo que se le pidi&#243;. No es documentaci&#243;n post-hoc: es el contrato de trabajo. Puede ser un plan de fases, un conjunto de criterios de aceptaci&#243;n, una descripci&#243;n del comportamiento esperado, una lista de verificaciones. Todo junto normalmente.</p><p>La diferencia pr&#225;ctica es brutal. Con vibe coding puro le dices al agente &#8220;hazme un buscador&#8221; y te lo hace. Lo que no sabes es qu&#233; asunciones ha tomado, qu&#233; edge cases ha ignorado, qu&#233; ha decidido por ti sin preguntarte. Con spec-driven development le das al agente el mismo &#8220;hazme un buscador&#8221;, pero tambi&#233;n le das un documento que dice &#8220;estos son los requisitos no funcionales, estos los casos que tiene que manejar, esta la forma de validar que funciona, y estas las decisiones que no puedes tomar sin consultarme&#8221;. El agente ya no es un genio caprichoso. Es un ingeniero con mandato.</p><h3>Esto lleva cincuenta a&#241;os intent&#225;ndose</h3><p>Antes de que nadie hablase de vibe coding, agentes o spec-driven, la industria del software ya ten&#237;a claro que escribir c&#243;digo sin especificar antes qu&#233; deb&#237;a hacer era una forma elegante de construir castillos sobre arena. La historia intelectual es larga y los nombres son conocidos, aunque casi nadie los cita fuera de la academia.</p><p>En 1969, <strong>Tony Hoare</strong> public&#243; <em>An Axiomatic Basis for Computer Programming</em>. Su propuesta era inc&#243;moda y radical: cada fragmento de c&#243;digo deb&#237;a poder describirse con una pre-condici&#243;n (lo que es cierto antes de ejecutarlo) y una post-condici&#243;n (lo que garantiza despu&#233;s). La spec no era un documento anexo. Era el programa. El c&#243;digo era solo una forma de implementarlo.</p><p>Tres a&#241;os despu&#233;s, en 1972, <strong>David Parnas</strong> public&#243; <em>On the Criteria To Be Used in Decomposing Systems into Modules</em>. Introdujo la idea de que cada m&#243;dulo de software deb&#237;a ocultar sus decisiones internas y exponer solo un contrato: qu&#233; puede asumir el cliente del m&#243;dulo, qu&#233; promete cumplir el m&#243;dulo. Contrato primero, implementaci&#243;n despu&#233;s.</p><p>En 1976, <strong>Edsger Dijkstra</strong> llev&#243; la idea al extremo con <em>A Discipline of Programming</em>. Su tesis: el programa se deriva de la especificaci&#243;n, no al rev&#233;s. Primero formalizas qu&#233; quieres que haga. Luego demuestras, paso a paso, que tu c&#243;digo lo cumple. Ingenier&#237;a como matem&#225;tica.</p><p>El giro decisivo lo dio <strong>Donald Knuth</strong> en 1984 con <strong>Literate Programming</strong>. Knuth no hablaba de pre-condiciones ni demostraciones formales. Hablaba de algo m&#225;s humano: un programa es un documento dirigido a un lector, y el c&#243;digo est&#225; embebido en la prosa que lo explica, no al rev&#233;s. Su frase famosa: <em>los programas deben tratarse como obras de literatura dirigidas a seres humanos</em>.</p><p>Dos a&#241;os despu&#233;s, en 1986, <strong>Bertrand Meyer</strong> formaliz&#243; la idea en un lenguaje real con <em>Design by Contract</em>: invariantes, pre y post-condiciones como parte del c&#243;digo ejecutable de Eiffel, el primer y &#250;nico lenguaje realmente Orientado a Objetos. No como documentaci&#243;n. Como contrato verificable en tiempo de ejecuci&#243;n.</p><p>Y en 1994, <strong>Leslie Lamport </strong>public&#243; TLA+, un lenguaje para especificar sistemas distribuidos antes de escribirlos. Amazon, Microsoft y Google lo usan hoy para verificar piezas cr&#237;ticas de su infraestructura.</p><p>&#191;Por qu&#233; entonces casi ninguna empresa aplica estas ideas en su d&#237;a a d&#237;a? Porque el coste siempre fue asim&#233;trico. Escribir la spec primero era lento. Mantenerla sincronizada con el c&#243;digo era un trabajo extra que nadie pagaba. El software funcionaba sin ella, aunque mal. As&#237; que la industria eligi&#243; la v&#237;a r&#225;pida y acumul&#243; cincuenta a&#241;os de deuda conceptual.</p><p>Lo que ha cambiado ahora es el lector. Knuth escrib&#237;a para humanos que casi nunca le&#237;an los programas de otros. Hoy el agente s&#237; los lee. Los lee siempre. Y si tu c&#243;digo, tu arquitectura y tus decisiones no son legibles para &#233;l, no puede trabajar. Lo que era una aspiraci&#243;n &#233;tica se ha convertido en un requisito funcional.</p><p>Spec-driven development no es una moda de 2026. Es la primera vez en cincuenta a&#241;os que hay un incentivo econ&#243;mico real para hacer lo que Hoare, Parnas, Dijkstra, Knuth, Meyer y Lamport llevan dici&#233;ndonos desde los setenta.</p><h3>GSD: el workflow como contrato</h3><p>GSD son las siglas de <strong>Get Shit Done</strong>. Es un conjunto de comandos que se instala encima de Claude Code y que convierte cualquier trabajo no trivial en una secuencia estructurada de fases con artefactos versionados. Lo desarroll&#243; un ingeniero llamado Dan Gooding y est&#225; ganando adopci&#243;n en equipos que usan agentes de IA en proyectos serios.</p><p>La idea central es sencilla: antes de escribir una l&#237;nea de c&#243;digo, el agente te obliga a pasar por cuatro etapas &#8212; discutir, planificar, ejecutar, verificar &#8212; y cada una deja un artefacto en disco que la siguiente lee. No hay atajos. Si intentas saltar directamente a &#8220;implementa esto&#8221;, GSD te detiene y te hace definir primero el qu&#233;, el c&#243;mo y los criterios de aceptaci&#243;n.</p><p>En la pr&#225;ctica, trabajas con una serie de comandos muy concretos. <em>/gsd:discuss phase</em><code> </code>hace al agente preguntarte lo que necesita saber antes de planificar &#8212; qu&#233; asunciones est&#225; tomando, qu&#233; decisiones dependen de ti, qu&#233; riesgos ve. <em>/gsd:plan-phase</em> genera un <em>PLAN.md</em> con la descomposici&#243;n en tareas, dependencias entre ellas, y los tests que definir&#225;n que est&#225; hecho. <em>/gsd:execute-phase</em> ejecuta ese plan con commits at&#243;micos  por tarea. <em>/gsd:verify-work</em> valida al final que lo que se ha construido cumple los criterios que se fijaron al principio.</p><p>El resultado es que tu carpeta de trabajo deja de ser un vertedero de c&#243;digo generado y se convierte en una estructura de carpetas tipo <em>.planning/001-fase-auth/</em> con tres ficheros: <em>RESEARCH.md</em> (lo que el agente investig&#243; antes de planificar), <em>PLAN.md</em> (lo que va a hacer), <em>VERIFICATION.md</em> (c&#243;mo demostramos que est&#225; hecho). Esto no es documentaci&#243;n. Es el contrato que el agente firma consigo mismo y que t&#250; puedes leer, auditar y modificar en cualquier momento.<br><br>Lo potente de GSD es que te obliga a pensar arriba-abajo. Primero el roadmap del proyecto. Luego las fases. Luego los planes. Luego el c&#243;digo. Cuando lo usas durante un par de semanas notas algo inc&#243;modo y revelador: la mayor parte del valor no est&#225; en la ejecuci&#243;n con IA, est&#225; en la conversaci&#243;n estructurada que te fuerza a tener antes. El agente te obliga a concretar cosas que de otra forma habr&#237;as dejado ambiguas. Y esas cosas ambiguas son exactamente las que despu&#233;s reventaban en producci&#243;n.</p><p>El coste es evidente: GSD es mucho m&#225;s lento que vibe coding para tareas peque&#241;as. Si lo que quieres es un script de veinte l&#237;neas, usar GSD es matar moscas a ca&#241;onazos. Pero para cualquier proyecto que dure m&#225;s de una sesi&#243;n y tenga m&#225;s de una decisi&#243;n importante, la inversi&#243;n se paga varias veces.</p><h3>Superpowers: disciplina en cada decisi&#243;n</h3><p>Superpowers ataca el mismo problema desde el &#225;ngulo opuesto. Lo desarroll&#243; Jesse Vincent, un ingeniero conocido en la comunidad de Claude Code, y su tesis es muy distinta a la de GSD: el problema no es que el agente no tenga un plan global, es que en cada microdecisi&#243;n del d&#237;a a d&#237;a se salta el rigor que aplicar&#237;a cualquier ingeniero senior.</p><p>Un ejemplo concreto. Le pides al agente que arregle un bug. Sin Superpowers, el patr&#243;n habitual es: el agente lee el error, propone una hip&#243;tesis, modifica el c&#243;digo, dice &#8220;listo&#8221;. A veces funciona. Otras veces parchea un s&#237;ntoma y deja la causa real intacta. Con Superpowers activada, el agente no puede responder hasta que invoque una skill llamada <em>systematic-debugging</em>. Esa skill e obliga a seguir unprocedimiento: reproducir el bug de forma determinista, formular hip&#243;tesis, aislarlas una a una, verificar el fix con un test antes de declarar victoria. No es una sugerencia. Es un gate obligatorio.</p><p>Superpowers es, en la pr&#225;ctica, una colecci&#243;n de unas quince skills que cubren momentos concretos en los que los agentes suelen pifiarla: <em>brainstoring</em> antes de dise&#241;ar una feature, test-driven-development antes de escibir c&#243;digo, <em>verification-before-completion</em> antes de declarar algo como terminado, <em>receiving-code-review</em> cuando el usuario le da feedback, <em>dispatching-paralle-agents</em> cuando hay trabajo independiente que se puede paralelizar. Cada skill s un procedimiento probado empaquetado en un fichero markdown qu el agente carga cuado elcontexto lo requiere.</p><p>La parte inteligente del dise&#241;o es que las skills se auto-invocan. No tienes que acordarte de decir &#8220;usa TDD ahora&#8221;. El agente detecta que va a escribir c&#243;digo nuevo y la skill se activa sola. Detecta que est&#225;s a punto de declarar una tarea como hecha y la skill de verificaci&#243;n le exige evidencia antes de dejarle hacerlo. Las skills son, en el fondo, contratos de comportamiento que el agente firma con su yo futuro: &#8220;cuando me toque hacer X, voy a seguir obligatoriamente Y pasos&#8221;.</p><p>Donde GSD es arriba-abajo (primero el plan, luego la ejecuci&#243;n), Superpowers es abajo-arriba (no importa qu&#233; est&#233;s haciendo, cuando hagas esto lo har&#225;s as&#237;). Donde GSD protege contra la falta de direcci&#243;n, Superpowers protege contra la falta de disciplina. Y aqu&#237; est&#225; el punto: son dos problemas distintos que requieren dos soluciones distintas.</p><p>En mi experiencia, la skill m&#225;s valiosa de Superpowers es la m&#225;s aburrida de todas: verification-before-completion. El agente no puede decir &#8220;hecho&#8221; hasta que ha ejecutado el comando que demuestra que funciona y ha mostrado la salida. Parece obvio. En la pr&#225;ctica, evita el 80% de los &#8220;termin&#233;&#8221; prematuros que provocan despu&#233;s una ronda entera de debugging innecesario.## La diferencia que importa</p><p>La primera reacci&#243;n cuando ves GSD y Superpowers juntos es pensar que compiten. Las dos hablan de estructurar el trabajo con agentes. Las dos meten disciplina donde vibe coding la esquiva. Las dos generan artefactos y fuerzan procedimientos. Parecen dos respuestas al mismo problema. No lo son. Resuelven problemas distintos, y entenderlo es la diferencia entre elegir uno, elegir otro, o combinarlos.</p><p>GSD organiza el **proyecto**. Su unidad de trabajo es la fase, que dura horas o d&#237;as, y su foco es asegurar que antes de ejecutar algo haya un contrato claro de qu&#233; se va a hacer, por qu&#233;, y c&#243;mo se va a validar. Es el equivalente moderno de la idea de Dijkstra: deriva el c&#243;digo de la especificaci&#243;n. Si tu problema es que los agentes se lanzan a construir sin saber bien qu&#233; est&#225;n construyendo, GSD es tu respuesta.</p><p>Superpowers organiza la **decisi&#243;n**. Su unidad de trabajo es cada interacci&#243;n individual del agente, que dura segundos o minutos, y su foco es que en cada microdecisi&#243;n el agente siga el procedimiento correcto. Es el equivalente moderno de la idea de Meyer: contratos ejecutables que se verifican en tiempo de ejecuci&#243;n. Si tu problema es que los agentes se saltan pasos que cualquier ingeniero senior dar&#237;a por obligatorios, Superpowers es tu respuesta.</p><p>En t&#233;rminos pr&#225;cticos, la diferencia se nota as&#237;. Un proyecto gestionado con GSD pero sin Superpowers acaba con planes y fases impecables, pero cada fase internamente tiene los mismos problemas de vibe coding &#8212; el agente se salta verificaciones, propone fixes sin hip&#243;tesis, declara cosas hechas sin evidencia. Un proyecto con Superpowers pero sin GSD tiene cada decisi&#243;n bien tomada, pero el conjunto carece de direcci&#243;n &#8212; el agente implementa bien cosas que quiz&#225; no ten&#237;a que implementar. Los dos fallan, por motivos opuestos.</p><p>Juntos, se complementan de manera casi perfecta. GSD define el qu&#233; y el por qu&#233; a nivel de proyecto. Superpowers garantiza el c&#243;mo a nivel de cada paso. El resultado es lo m&#225;s cercano a trabajar con un ingeniero senior disciplinado que he visto hasta ahora &#8212; no porque el agente sea un ingeniero senior, sino porque la combinaci&#243;n de estructura y disciplina le impide actuar como un junior que se salta pasos.</p><p>Hay una lectura m&#225;s profunda aqu&#237; que conviene no perder. GSD es la herencia directa de la escuela formal de Hoare, Dijkstra y Parnas: el rigor viene de especificar primero. Superpowers es la herencia directa de Knuth y Meyer: el rigor viene de construir las garant&#237;as dentro del propio acto de programar. Medio siglo despu&#233;s, los dos caminos siguen siendo v&#225;lidos. Y siguen siendo complementarios.</p><h3>El sistema de previsi&#243;n que estamos construyendo as&#237;</h3><p>Voy a aterrizar todo esto con el proyecto real en el que m&#225;s lo estoy aplicando. En Mercadona Tech estamos construyendo un sistema de previsi&#243;n de demanda a escala industrial: predecir cu&#225;nto se va a vender de cada producto, en cada centro, en cada franja horaria, para cada d&#237;a. M&#225;s de doscientas mil series temporales reconciliadas en cinco niveles de agregaci&#243;n, con intervalos de confianza que tienen que tener garant&#237;as matem&#225;ticas de cobertura. No es un proyecto donde vibe coding pueda llevarte lejos. Una decisi&#243;n mal tomada en una fase temprana contamina todas las posteriores, y muchas de las decisiones solo se ven con a&#241;os de oficio.</p><p>Aqu&#237; GSD hace su trabajo. El proyecto vive en fases: exploraci&#243;n de datos, baselines, modelos candidatos, reconciliaci&#243;n jer&#225;rquica, calibraci&#243;n de intervalos, despliegue a producci&#243;n. Cada fase tiene su plan, sus criterios de aceptaci&#243;n y su verificaci&#243;n. Los documentos que se generan no son reportes para ense&#241;ar a un jefe. Son el contrato que el siguiente paso del proyecto lee antes de ejecutar. Cuando un colaborador entra al proyecto, no tiene que preguntarme qu&#233; est&#225; pasando &#8212; lee la fase activa y lo sabe.</p><p>Aqu&#237; Superpowers hace el suyo. Las disciplinas de verificaci&#243;n impiden que el agente reporte una m&#233;trica sin haberla validado con backtesting riguroso. El procedimiento obligatorio de debugging aparece cada vez que un modelo degrada en una fracci&#243;n del dataset y nos fuerza a aislar la causa antes de parchear. La skill de verificaci&#243;n-antes de-completar evita los falsos positivos cl&#225;sicos de la ciencia de datos, donde algo parece funcionar porque se ha medido mal.</p><p>Sin GSD, un proyecto de esta envergadura se convierte r&#225;pido en treinta notebooks que nadie sabe c&#243;mo conectar. Sin Superpowers, publicas una m&#233;trica que parece excelente hasta que la realidad te corrige. Con ambos, la IA acelera cada fase sin renunciar al rigor que un sistema de este tama&#241;o exige.</p><h3>Las tres capas</h3><p>Si hace una semana dej&#225;bamos vibe coding como la Thermomix del software &#8212;velocidad accesible para todo el mundo &#8212;, ahora podemos terminar de dibujar el cuadro completo. Construir con IA no es una t&#233;cnica, son tres capas que se apoyan unas en otras.</p><p>La primera capa es la velocidad. Vibe coding. La capacidad de conversar con un agente y ver c&#243;mo el c&#243;digo aparece en segundos. Resuelve el problema que durante d&#233;cadas fue el cuello de botella del desarrollo: la distancia entre idea y prototipo.</p><p>La segunda capa es la direcci&#243;n. Spec-driven development en su encarnaci&#243;n moderna, con herramientas como GSD al frente. Resuelve un problema m&#225;s sutil y m&#225;s viejo: c&#243;mo garantizar que lo que el agente construye responde realmente a lo que hace falta, no a lo que el agente ha interpretado que hac&#237;a falta. Hoare lo vio en el sesenta y nueve. Dijkstra en el setenta y seis. Nosotros lo estamos aplicando por primera vez a escala gracias a que el coste de mantener specs vivas ha colapsado.</p><p>La tercera capa es la disciplina. Superpowers y el resto de frameworks que meten rigor en cada decisi&#243;n individual del agente. Resuelve el problema de que un agente que en promedio lo hace bien puede hacerte da&#241;o en los pocos casos en los que se salta un paso cr&#237;tico. Meyer lo formaliz&#243; en Eiffel en los ochenta. Hoy lo tenemos disponible como skills que el agente invoca solo.</p><p>Las tres juntas son mucho m&#225;s que la suma de las tres por separado. Velocidad sin direcci&#243;n te lleva r&#225;pido a un sitio que no era el que quer&#237;as. Direcci&#243;n sin disciplina te lleva al sitio correcto con un sistema que falla cuando m&#225;s importa. Disciplina sin velocidad te deja atr&#225;s, fabricando calidad en un mercado que premia la iteraci&#243;n r&#225;pida. Y velocidad sin direcci&#243;n ni disciplina es exactamente lo que los ingenieros senior temen cuando oyen hablar de vibe coding.</p><p>La pregunta que te deber&#237;as hacer no es si adoptar IA en tu proceso de desarrollo. Esa batalla ya est&#225; resuelta. La pregunta es si est&#225;s adoptando las tres capas o solo la primera. Porque la primera es la que sale gratis. Las otras dos son las que deciden si dentro de un a&#241;o tendr&#225;s un sistema que se sostiene o una deuda t&#233;cnica imposible de pagar.</p><p>Si en alg&#250;n momento te descubres pensando &#8220;el agente lo hace r&#225;pido pero no me f&#237;o de lo que entrega&#8221;, lo que te falta no es m&#225;s IA. Es spec y disciplina. Y ambas existen, est&#225;n maduras, y llevan cincuenta a&#241;os esperando su momento.</p>]]></content:encoded></item><item><title><![CDATA[Vibe Coding: ¿revolución o espejismo?]]></title><description><![CDATA[Hay un t&#233;rmino que est&#225; dividiendo a la industria tech ahora mismo: vibe coding.]]></description><link>https://newsletter.gemba.es/p/vibe-coding-revolucion-o-espejismo</link><guid isPermaLink="false">https://newsletter.gemba.es/p/vibe-coding-revolucion-o-espejismo</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 13 Apr 2026 06:30:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2f1043dc-92cc-41e1-b3fa-f7c1c49ccd82_2390x1240.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hay un t&#233;rmino que est&#225; dividiendo a la industria tech ahora mismo: vibe coding. La idea es simple: describes lo que quieres en lenguaje natural, un agente de IA genera el c&#243;digo, y t&#250; solo validas que funcione. Sin escribir una l&#237;nea. Sin entender cada decisi&#243;n del compilador.</p><p>Para unos es el futuro. Para otros es el principio del fin de la ingenier&#237;a de software seria. Yo llevo meses haci&#233;ndolo, y mi conclusi&#243;n es que ambos tienen raz&#243;n &#8212; pero por motivos que ninguno de los dos est&#225; viendo.</p><p>El t&#233;rmino lo acu&#241;&#243; Andrej Karpathy a principios de 2025. Ex-director de IA en Tesla, cofundador de OpenAI. No es precisamente alguien que no entienda c&#243;digo. Su definici&#243;n era provocadora a prop&#243;sito: &#8220;Te rindes al vibe, abrazas los exponenciales, y te olvidas de que el c&#243;digo existe.&#8221;</p><p>La reacci&#243;n fue inmediata. Los ingenieros senior se echaron las manos a la cabeza. Los builders que llevaban semanas prototipando con IA asintieron en silencio. Twitter se convirti&#243; en un campo de batalla entre puristas y pragm&#225;ticos.</p><p>Pero el debate se est&#225; dando en t&#233;rminos equivocados. La pregunta no es si vibe coding &#8220;funciona&#8221; o &#8220;no funciona&#8221;. La pregunta es para qu&#233; funciona, para qu&#233; no, y qu&#233; cambia en c&#243;mo organizamos equipos de producto cuando una parte del equipo lo adopta.</p><p>Piensa en la Thermomix. Cuando apareci&#243;, los chefs profesionales la despreciaron. &#8220;Eso no es cocinar.&#8221; Y ten&#237;an raz&#243;n &#8212; t&#233;cnicamente. Pero millones de familias empezaron a preparar platos que antes les parec&#237;an imposibles. La Thermomix no sustituy&#243; a los chefs. Cambi&#243; lo que pod&#237;a hacer la gente que no era chef.</p><p>Vibe coding es la Thermomix del software. Y eso tiene implicaciones enormes para cualquiera que gestione un equipo de producto.</p><h2>Cuando funciona (y funciona m&#225;s de lo que los puristas admiten)</h2><p>Hay un patr&#243;n que se repite en todos los equipos que conozco que han adoptado herramientas de vibe coding: el primer &#233;xito llega r&#225;pidamente y es espectacular.</p><p>Un prototipo funcional en horas en lugar de d&#237;as. Una herramienta interna que llevaba meses en el backlog y de repente existe. Un script de migraci&#243;n de datos que hubiera requerido una semana de trabajo manual. Una prueba de concepto para convencer a un stakeholder que antes necesitaba dos sprints de inversi&#243;n.</p><p>No es magia. Lo que est&#225; pasando es que una enorme cantidad de c&#243;digo que escribimos es estructural, repetitivo, predecible. Configurar un proyecto, conectar una API, montar un CRUD, escribir tests unitarios para casos est&#225;ndar. Un buen agente de IA hace esto en minutos porque ha visto millones de implementaciones similares. Y lo hace razonablemente bien.</p><p>Donde el vibe coding brilla de verdad es en ese espacio donde sabes exactamente lo que quieres pero el coste de implementarlo siempre ha sido demasiado alto. Herramientas internas que nadie prioriza. Automatizaciones que &#8220;ya har&#233; cuando tenga tiempo&#8221;. Prototipos para validar ideas antes de invertir un sprint entero. Para un PM o un tech lead, esto es transformador: la distancia entre idea y validaci&#243;n se acorta radicalmente.</p><h2>Cuando explota (y explota m&#225;s de lo que los evangelistas admiten)</h2><p>Ahora la otra cara. Y es una cara que muchos est&#225;n descubriendo de la peor manera posible.</p><p>El problema fundamental del vibe coding es lo que yo llamo la deuda t&#233;cnica invisible. Cuando un ingeniero escribe c&#243;digo, toma cientos de micro-decisiones: c&#243;mo manejar un error, qu&#233; pasa si la conexi&#243;n se cae, c&#243;mo escala esto cuando hay diez mil usuarios concurrentes, qu&#233; asunciones estoy haciendo sobre los datos de entrada. Cada decisi&#243;n es una pieza de conocimiento que vive en la cabeza del equipo.</p><p>Cuando el c&#243;digo lo genera una IA y t&#250; solo validas que &#8220;funciona&#8221;, esas decisiones se toman igualmente. Pero nadie sabe cu&#225;les fueron. El c&#243;digo pasa los tests. La feature funciona en staging. Todo verde. Hasta que en producci&#243;n un edge case que nadie consider&#243; tumba el servicio un viernes a las once de la noche. Y entonces necesitas debuguear c&#243;digo que no escribiste, basado en decisiones que no tomaste, con asunciones que no conoces.</p><p>He visto equipos que prototiparon algo en dos d&#237;as con vibe coding y luego necesitaron tres semanas para hacerlo production-ready. El ratio real no es 10x. Es 2x con asterisco. Y el asterisco es importante.</p><p>El segundo problema es m&#225;s sutil: la falsa sensaci&#243;n de competencia. Cuando puedes generar c&#243;digo que funciona sin entender por qu&#233; funciona, empiezas a tomar decisiones de arquitectura sin tener las bases para tomarlas. Es como conducir un F&#243;rmula 1 con piloto autom&#225;tico &#8212; funciona hasta la primera curva que el sistema no ha visto antes.</p><h2>Lo que cambia para el PM y el Tech Lead</h2><p>Si gestionas un equipo de producto, vibe coding ya te afecta aunque no lo hayas adoptado oficialmente. Alguno de tus ingenieros lo est&#225; usando. La pregunta es si lo sabes y si has pensado en qu&#233; significa.</p><p>Lo primero que cambia son las estimaciones. Cuando un junior puede entregar en d&#237;as lo que antes costaba semanas, tus modelos de capacidad dejan de funcionar. &#191;Asignas m&#225;s trabajo? &#191;Reduces el equipo? &#191;Asumes que la velocidad es sostenible? Ninguna de las tres respuestas es correcta sin contexto.</p><p>Lo segundo que cambia es el code review. Ya no est&#225;s revisando el trabajo de un ingeniero que tom&#243; cada decisi&#243;n conscientemente. Est&#225;s revisando c&#243;digo generado donde el autor no puede explicarte por qu&#233; eligi&#243; ese patr&#243;n y no otro. Esto requiere un tipo de revisi&#243;n diferente: menos &#8220;&#191;por qu&#233; hiciste esto as&#237;?&#8221; y m&#225;s &#8220;&#191;qu&#233; pasa si esto falla?&#8221;. M&#225;s adversarial, menos colaborativo.</p><p>Lo tercero, y esto es lo m&#225;s importante para PMs: cambia lo que puedes pedir. Antes, un prototipo era caro. Ahora es barato. Eso significa que puedes validar m&#225;s hip&#243;tesis antes de comprometer al equipo. Puedes mostrar un prototipo funcional al stakeholder en lugar de un wireframe. Puedes probar tres enfoques en paralelo en lugar de apostar por uno. Si eres PM y no est&#225;s aprovechando esto, est&#225;s dejando dinero en la mesa.</p><h2>El buscador que construimos hablando</h2><p>Voy a ponerte un ejemplo real, porque creo que es la forma m&#225;s honesta de hablar de esto.</p><p>En Mercadona Tech ten&#237;amos un problema con nuestro buscador de la tienda online. Us&#225;bamos Algolia, un SaaS que nos costaba entre 9.000 y 15.000 d&#243;lares al mes. Funcionaba, pero ten&#237;amos un 4% de b&#250;squedas sin resultados, un ranking que no pod&#237;amos controlar como quer&#237;amos, y una dependencia total de un proveedor externo para una pieza cr&#237;tica del negocio: 4,4 millones de b&#250;squedas a la semana.</p><p>Decidimos construir nuestro propio buscador. B&#250;squeda h&#237;brida con keyword y sem&#225;ntica, un modelo de Learning to Rank entrenado con datos reales de clics de nuestros usuarios, autocompletado, el stack completo. Y lo desarrollamos con Claude Code.</p><p>&#191;Qu&#233; funcion&#243;? La velocidad de exploraci&#243;n fue brutal. Analizar 479 megabytes de datos de cat&#225;logo y anal&#237;tica, iterar sobre 12 experimentos diferentes, hacer una competici&#243;n de 5 modelos de ranking con validaci&#243;n cruzada &#8212; todo eso se hizo conversando con agentes de IA. Tareas que hubieran requerido semanas de trabajo de un equipo de data science las completamos en d&#237;as.</p><p>&#191;Qu&#233; no funcion&#243; sin intervenci&#243;n humana? Las decisiones que definen si el sistema aguanta en producci&#243;n o se cae el primer d&#237;a. No usar Elasticsearch porque el coste y la latencia no encajaban. No usar Cloud Run porque los cold starts son fatales para un buscador. Dise&#241;ar un &#237;ndice maestro con bitsets en lugar de 762 &#237;ndices separados. Establecer las reglas de gobernanza del modelo: validaci&#243;n walk-forward en lugar de aleatoria, correcci&#243;n de sesgo de posici&#243;n obligatoria, un guardrail que bloquea autom&#225;ticamente cualquier modelo que degrade m&#225;s de un 2% las m&#233;tricas.</p><p>Esas 29 decisiones t&#233;cnicas no las tom&#243; la IA. Las tom&#243; un equipo con criterio. Y son exactamente las decisiones que separan un prototipo que impresiona en una demo de un sistema que sirve 4,4 millones de b&#250;squedas a la semana sin caerse.</p><p>El resultado: un buscador que mejora el ranking un 85% respecto a Algolia, elimina completamente las b&#250;squedas sin resultados, y cuesta menos de 900 d&#243;lares al mes. Construido en gran parte con vibe coding. Pero las decisiones que importan, tomadas por personas.</p><h2>La herramienta, no la respuesta</h2><p>Vibe coding no es revoluci&#243;n ni espejismo. Es una herramienta extraordinariamente potente que est&#225; en manos de todo el mundo por primera vez.</p><p>La Thermomix no mat&#243; a los restaurantes. Pero cambi&#243; para siempre lo que una persona sin formaci&#243;n culinaria pod&#237;a preparar en su cocina. Vibe coding no va a eliminar a los ingenieros senior. Pero va a cambiar radicalmente lo que puede construir alguien con una idea clara y ganas de iterar.</p><p>La pregunta que deber&#237;as hacerte no es &#8220;&#191;vibe coding s&#237; o no?&#8221;. Es: &#191;en qu&#233; partes de mi producto estoy gastando tiempo de ingenier&#237;a en trabajo que una IA puede hacer igual de bien? &#191;Y en qu&#233; partes estoy en riesgo de confiar en c&#243;digo que nadie entiende realmente?</p><p>Si puedes responder a esas dos preguntas con honestidad, el vibe coding va a ser una ventaja enorme. Si no puedes, va a ser una trampa.</p>]]></content:encoded></item><item><title><![CDATA[Story Builder: Construir Historias desde Cero con Rigor (Artículo 7 de 7)]]></title><description><![CDATA[Serie Gemba: AI Mercadona User Story Framework &#8212; La herramienta conversacional que cierra el ciclo del framework completo]]></description><link>https://newsletter.gemba.es/p/story-builder-construir-historias</link><guid isPermaLink="false">https://newsletter.gemba.es/p/story-builder-construir-historias</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 06 Apr 2026 06:30:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E0wl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Este es el s&#233;ptimo y &#250;ltimo art&#237;culo de una serie de 7 sobre el AI Mercadona User Story Framework. Hemos recorrido el Quality Guard, que validaba la solidez de nuestras investigaciones. Pasamos por Research &amp; JTBDs, el coraz&#243;n investigativo del framework. Luego vimos c&#243;mo transformar esos JTBDs en historias de usuario con rigor en JTBD to Stories. Conocimos el Quality Coach, que evaluaba nuestro trabajo con seis dimensiones de calidad. Exploramos Story Splitting, el arte de fragmentar historias complejas en incrementos entregables. Ahora cerramos con el m&#243;dulo que completa el framework: el Story Builder, la herramienta conversacional que permite construir historias de usuario de calidad sin necesidad de un PRD completo.</p><p>El Story Builder representa algo fundamental en la evoluci&#243;n del trabajo del Product Manager en Mercadona Tech. No es simplemente otra herramienta m&#225;s. Es el reconocimiento de que no toda buena idea comienza con un documento formal. Es el puente entre el pensamiento r&#225;pido y la creaci&#243;n estructurada.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E0wl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E0wl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 424w, https://substackcdn.com/image/fetch/$s_!E0wl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 848w, https://substackcdn.com/image/fetch/$s_!E0wl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 1272w, https://substackcdn.com/image/fetch/$s_!E0wl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E0wl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:832500,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/188742767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E0wl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 424w, https://substackcdn.com/image/fetch/$s_!E0wl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 848w, https://substackcdn.com/image/fetch/$s_!E0wl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 1272w, https://substackcdn.com/image/fetch/$s_!E0wl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70061506-21fb-4837-aa4c-16a53775c441_2904x1524.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>La Realidad que El Story Builder Resuelve</h2><p>Cuando pensamos en c&#243;mo se generan las historias de usuario en una organizaci&#243;n como la nuestra, es f&#225;cil asumir que todo comienza en un PRD bien estructurado. Que cada idea pasa por research, que cada problema viene documentado con datos y contexto. Pero la verdad es m&#225;s matizada.</p><p>La verdad es que muchas de las mejores ideas surgen en conversaciones espont&#225;neas. Un PM est&#225; en una reuni&#243;n de planificaci&#243;n y alguien menciona un problema que ha visto repetidamente. Un stakeholder en un comit&#233; ejecutivo describe una fricci&#243;n que existe en el sistema. Un cliente m&#225;s grande reporta una ineficiencia que mata su productividad. El gerente de un almac&#233;n regional cuenta c&#243;mo sus equipos est&#225;n desperdiciando tiempo en una tarea repetitiva. No hay PRD. No hay investigaci&#243;n formalizada. Hay un problema real, urgente, que merece atenci&#243;n inmediata.</p><p>En estas situaciones, los PMs se enfrentan a un dilema. Por un lado, el rigor que el framework exige es importante: necesitamos evidencia, necesitamos entender el contexto del usuario, necesitamos validar que estamos atacando un problema real y no una soluci&#243;n en busca de prop&#243;sito. Por otro lado, la velocidad tambi&#233;n importa. No queremos que la burocracia del proceso impida que ideas v&#225;lidas lleguen al desarrollo.</p><p>Story Builder resuelve este dilema. Es la herramienta conversacional que permite a un PM con una idea, un problema detectado en el terreno, o una conversaci&#243;n reciente, transformar eso en una historia de usuario de calidad sin pasar por todo el pipeline formal. Pero &#8212;y esto es cr&#237;tico&#8212; sin reducir la calidad ni las exigencias del framework.</p><div><hr></div><h2>La Base Te&#243;rica Sigue Siendo La Misma</h2><p>Lo primero que es importante entender es que Story Builder no inventa una nueva metodolog&#237;a. Utiliza exactamente la misma base te&#243;rica que todos los m&#243;dulos anteriores del AI Mercadona User Story Framework: Jobs to Be Done, el checklist de Wendel, y el an&#225;lisis de cambio de comportamiento.</p><p>Lo que cambia es el punto de entrada. En el pipeline completo del framework, comenzamos con un PRD (o lo que en nuestros documentos internos llamamos DAPP). El Quality Guard la examina. Research &amp; JTBDs descubre o refina los trabajos impl&#237;citos. Esos JTBDs validados se transforman en historias. El Quality Coach las eval&#250;a. Story Splitting las organiza en entregas. Es un flujo lineal, casi una cadena de montaje de calidad.</p><p>Story Builder invierte el proceso. No comienza con un documento. Comienza con una persona que tiene una pregunta. Y a trav&#233;s de seis fases bien estructuradas, esa persona articula un problema lo suficientemente bien como para que los desarrolladores entiendan exactamente qu&#233; necesitan construir. La rigor viene en las preguntas, no en el documento de entrada.</p><p>Esta es una diferencia sutil pero profunda. Porque significa que el framework no es un procedimiento que requiere documentaci&#243;n previa. Es un conjunto de principios que pueden aplicarse conversacionalmente.</p><div><hr></div><h2>Las Seis Fases de Story Builder</h2><h3>Fase 1: Contexto Inicial &#8212; La Trampa de la Soluci&#243;n</h3><p>Todo comienza con una pregunta simple: &#8220;&#191;Qu&#233; problema quieres resolver? &#191;Para qu&#233; producto?&#8221;</p><p>Pero aqu&#237; es donde ocurre algo extraordinario. Muy frecuentemente, el PM responde algo como: &#8220;Quiero agregar un bot&#243;n de filtrado&#8221;, o &#8220;Necesito una nueva columna en la tabla&#8221;, o &#8220;Debemos integrar con el sistema de CRM&#8221;.</p><p>El Story Builder hace algo que parece contradictorio: rechaza la respuesta. No rechaza el problema, sino la forma en que ha sido expresado. El m&#243;dulo responde: &#8220;Veo que tienes una soluci&#243;n en mente. Pero primero necesito entender: &#191;qu&#233; problema tiene el usuario que esta soluci&#243;n resolver&#237;a?&#8221;</p><p>Esta detecci&#243;n de la &#8220;trampa de la soluci&#243;n&#8221; es sorprendentemente com&#250;n. Los PMs &#8212;especialmente aquellos con experiencia t&#233;cnica o que han estado cerca del desarrollo&#8212; tienden a pensar en t&#233;rminos de caracter&#237;sticas y soluciones, no en t&#233;rminos de problemas y trabajos. Es una deformaci&#243;n ocupacional completamente comprensible. Hemos pasado a&#241;os diciendo &#8220;construyamos un filtrado&#8221;, as&#237; que es natural que los problemas se articulen autom&#225;ticamente como soluciones.Pero Jobs to Be Done nos ense&#241;a que esta forma de pensar es exactamente invertida. El trabajo que el usuario est&#225; tratando de hacer existe independientemente de cualquier soluci&#243;n. Y hay m&#250;ltiples formas de resolver ese trabajo. Si obligamos al PM a pensar en t&#233;rminos de el problema subyacente, abrimos la puerta a innovaci&#243;n, a mejores soluciones, a un entendimiento m&#225;s profundo.</p><p>El Story Builder no permite pasar a la siguiente fase hasta que ha conseguido articular un problema, no una soluci&#243;n. Y lo hace sin hostilidad. Lo hace con la paciencia de un coach que ha visto este patr&#243;n cien veces antes.</p><h3>Fase 2: Descubrir El Trabajo &#8212; El M&#233;todo Del &#8220;&#191;Por Qu&#233;?&#8221;</h3><p>Una vez que tenemos un problema articulado, el Story Builder entra en la Fase 2: descubrir el trabajo que el usuario est&#225; tratando de hacer.</p><p>Esta fase utiliza la t&#233;cnica del &#8220;&#191;Por qu&#233;?&#8221; a tres, cuatro, o incluso cinco niveles de profundidad. Es la t&#233;cnica cl&#225;sica de investigaci&#243;n cualitativa, pero automatizada de una manera que es pedag&#243;gica.</p><p>Funciona as&#237;: el PM dice algo como &#8220;Nuestros usuarios quieren filtrar productos m&#225;s r&#225;pido&#8221;. El Story Builder pregunta: &#8220;&#191;Por qu&#233; es importante que encuentren productos r&#225;pido?&#8221; La respuesta podr&#237;a ser: &#8220;Porque se aburren y abandonan la sesi&#243;n&#8221;. Entonces: &#8220;&#191;Por qu&#233; abandonar&#237;an la sesi&#243;n? &#191;Qu&#233; hay en juego?&#8221; &#8220;Porque est&#225;n haciendo su compra semanal y tienen prisa, o porque se cansaron de desplazarse&#8221;. Y as&#237; sucesivamente.</p><p>Despu&#233;s de cinco minutos de este di&#225;logo, lo que emergi&#243; es diferente de donde empez&#243;. No es &#8220;agregar filtros&#8221;. Es &#8220;ayudar a los usuarios a completar su compra semanal de manera eficiente&#8221;. O quiz&#225;s: &#8220;Permitirles acceder &#250;nicamente a los productos que realmente necesitan, ahorr&#225;ndoles decisiones cognitivas&#8221;. O incluso: &#8220;Ayudarles a sentirse en control de una cantidad abrumadora de opciones&#8221;.</p><p>Cada uno de estos es un &#8220;trabajo&#8221; diferente. Y cada uno podr&#237;a resolverse de m&#250;ltiples maneras. El filtrado es una soluci&#243;n para algunos. Una lista de &#8220;mis productos habituales&#8221; podr&#237;a ser la soluci&#243;n para otros. Un carrito inteligente que aprende con el tiempo ser&#237;a la soluci&#243;n para otros.</p><p>El Story Builder tiene una prueba de validaci&#243;n para asegurarse de que realmente has descubierto un trabajo y no solo una soluci&#243;n reformulada: &#191;puede este trabajo ser implementado de m&#250;ltiples formas? Si la respuesta es s&#237;, entonces es un trabajo. Si solo hay una forma de hacerlo, entonces probablemente sigue siendo una soluci&#243;n disfrazada de trabajo.</p><h3>Fase 3: El Checklist De Wendel &#8212; Haciendo Espec&#237;fico Lo General</h3><p>Ahora tenemos un trabajo. Pero &#8220;los usuarios quieren completar su compra r&#225;pida&#8221; es todav&#237;a demasiado general. &#191;Qu&#233; usuarios? &#191;Bajo qu&#233; circunstancias? &#191;Con qu&#233; contexto?</p><p>La Fase 3 introduce el checklist de Wendel, que consta de cuatro preguntas mandatorias que deben responderse con datos concretos y espec&#237;ficos:</p><p><strong>Primera pregunta: Experiencia previa.</strong> &#191;Es este un trabajo nuevo o recurrente? &#191;Cu&#225;nto tiempo llevan usando el producto? &#191;Han intentado resolver este trabajo antes de otras maneras?</p><p><strong>Segunda pregunta: Relaci&#243;n con el producto.</strong> &#191;C&#243;mo interact&#250;an hoy con el producto? &#191;Es su primer contacto o son usuarios veteranos? &#191;Lo usan diariamente o ocasionalmente?</p><p><strong>Tercera pregunta: Motivaci&#243;n situacional.</strong> &#191;Qu&#233; los impulsa en ESTE momento? &#191;Hay presi&#243;n de tiempo? &#191;Hay consecuencias por no lograr el trabajo? &#191;Es voluntario u obligatorio?</p><p><strong>Cuarta pregunta: Impedimento actual.</strong> &#191;Qu&#233; espec&#237;ficamente les est&#225; impidiendo lograr el trabajo ahora mismo? &#191;Es un problema t&#233;cnico, cognitivo, de dise&#241;o?</p><p>Si el PM responde con generalidades &#8212;&#8221;todos nuestros usuarios&#8221;, &#8220;la mayor&#237;a de personas que compran&#8221;&#8212; el Story Builder rechaza y pide especificidad. &#8220;Eso es demasiado amplio. Necesito entender exactamente qui&#233;n tiene este trabajo. &#191;Es el cliente ocasional que viene cada dos semanas? &#191;Es la ama de casa que compra para su familia? &#191;Es el restaurante que compra para abastecer su cocina?&#8221;</p><p>Esta insistencia en la especificidad es lo que separa una historia de usuario &#250;til de una que suena bien pero es imposible de desarrollar. Porque un desarrollador necesita saber: &#191;para qui&#233;n estoy construyendo esto? &#191;En qu&#233; contexto? &#191;Con qu&#233; limitaciones?</p><p>Si dices &#8220;como usuario&#8221; sin m&#225;s, el checklist de Wendel rechaza la respuesta. Te obliga a ser espec&#237;fico.</p><h3>Fase 4: Las Tres Dimensiones Del Trabajo</h3><p>Ahora el Story Builder te lleva a la Fase 4, donde las cosas se ponen m&#225;s interesantes. Porque un trabajo humano no es solo una tarea funcional. Tiene tres dimensiones.</p><p><strong>La dimensi&#243;n funcional</strong> es la m&#225;s obvia. Es la tarea pr&#225;ctica que necesitan accomplir. Encontrar productos r&#225;pido. Completar la compra. Pagar. Recibir su pedido. Estas son las cosas medibles, las cosas que los desarrolladores pueden construir.</p><p>Pero luego est&#225; <strong>la dimensi&#243;n emocional</strong>. &#191;C&#243;mo quieren sentirse? &#191;Quieren sentirse en control? &#191;Organizados? &#191;Tranquilos de que est&#225;n tomando buenas decisiones? &#191;Confiados de que no se olvidan nada? &#191;Seguros de que est&#225;n obteniendo buen valor?</p><p>Y finalmente <strong>la dimensi&#243;n social</strong>. &#191;C&#243;mo quieren ser percibidos? &#191;Quieren parecer eficientes? &#191;Responsables? &#191;Sofisticados? &#191;Atentos a los detalles?Estas tres dimensiones existen simult&#225;neamente. Y la experiencia m&#225;s potente ocurre cuando un producto resuelve las tres. No solo permite que la tarea sea completada (funcional), sino que hace que el usuario se sienta bien mientras la hace (emocional) y lo hace parecer bien (social).</p><p>Muchas historias de usuario se quedan atrapadas &#250;nicamente en la dimensi&#243;n funcional. &#8220;Como usuario, quiero filtrar, para encontrar productos m&#225;s r&#225;pido&#8221;. Es t&#233;cnicamente correcta. Pero pierdes la motivaci&#243;n m&#225;s profunda. El desarrollador no entiende realmente por qu&#233; importa esto. Y entonces no optimiza para las experiencias que har&#237;an que el usuario se sienta en control o que lo hiciera parecer eficiente.</p><p>El Story Builder te obliga a explorar las tres dimensiones. Y luego, como bonus, te hace pensar en <strong>las ansiedades y las barreras</strong>. &#191;Qu&#233; temores tienen los usuarios? &#191;Qu&#233; podr&#237;a evitar que adopten esta caracter&#237;stica incluso si funciona perfectamente?</p><p>Por ejemplo, alguien podr&#237;a tener miedo de que los filtros sean tan complejos que sean m&#225;s confusos que la b&#250;squeda manual. O miedo de que el sistema filtre incorrectamente y pasen por alto algo que necesitaban. Estas ansiedades son reales. Y ignorarlas significa que construir&#225;s una caracter&#237;stica que funciona pero que nadie usa.</p><h3>Fase 5: Cambio De Comportamiento &#8212; Del Ahora Al Nuevo</h3><p>Aqu&#237; es donde la historia de usuario se vuelve medible. El Story Builder te obliga a pensar en: &#191;c&#243;mo cambiar&#237;a el comportamiento del usuario si logras resolver este trabajo?</p><p>Esto no es te&#243;rico. Es cuantificado. Tiene rangos.</p><p>El usuario est&#225; haciendo algo hoy de una cierta manera. El &#8220;ahora&#8221; es medible. Quiz&#225;s: buscar productos en su carrito de compra semanal toma doce minutos. Quiz&#225;s toman treinta y cinco decisiones sobre qu&#233; productos incluir o excluir. Quiz&#225;s tienen una tasa de abandono de veinte por ciento.</p><p>Cuando resuelvens el trabajo con &#233;xito, hay un &#8220;nuevo&#8221; comportamiento. Y ese nuevo comportamiento tiene tres rangos:</p><p><strong>M&#237;nimo</strong>: El umbral por debajo del cual el usuario estar&#237;a decepcionado. Para la b&#250;squeda de productos, quiz&#225;s: ocho minutos y cuarenta segundos. Ese es un treinta por ciento de mejora. No es espectacular, pero es notabilidad. Es suficiente para que el usuario piense: &#8220;S&#237;, esto es un poco mejor&#8221;.</p><p><strong>Target</strong>: El resultado realista y deseable. Quiz&#225;s: seis minutos. Una mejora del cincuenta por ciento. Aqu&#237; es donde realmente sientes que algo cambi&#243;. Tu compra semanal es notablemente m&#225;s r&#225;pida.</p><p><strong>Over-top</strong>: El resultado excepcional, la &#8220;vaya, esto es incre&#237;ble&#8221; versi&#243;n. Quiz&#225;s: tres minutos y treinta y seis segundos. Una mejora del setenta por ciento. Tu compra que sol&#237;a tomar el tiempo de un caf&#233; ahora toma lo que cuesta pagar. Es transformador.</p><p>Estos rangos no son arbitrarios. Son validados contra datos reales. Contra el comportamiento actual. Contra benchmarks de soluciones comparables. Contra lo que los usuarios mismos dicen cuando se les pregunta: &#8220;&#191;Cu&#225;nto tiempo ser&#237;a suficientemente r&#225;pido?&#8221;</p><p>El Story Builder insiste en estos n&#250;meros porque son lo que le permite al equipo de producto entender realmente si el trabajo est&#225; siendo resuelto. No es: &#8220;&#191;Funciona el filtrado?&#8221; Es: &#8220;&#191;Los usuarios pueden ahora encontrar un producto en menos de nueve segundos?&#8221; Eso es verificable. Eso es medible. Eso es lo que importa.</p><h3>Fase 6: La Historia Completa En Formato JTBD Reforzado</h3><p>Cuando has pasado por las cinco fases anteriores, la Fase 6 es casi ceremonial. El Story Builder te entrega una historia de usuario completa, pero no en el formato anticuado de &#8220;como [usuario], quiero [caracter&#237;stica], para [beneficio]&#8221;.</p><p>Es una historia completa en lo que el framework llama &#8220;formato JTBD Reforzado&#8221;. Contiene:</p><ul><li><p>El trabajo articulado de manera clara y espec&#237;fica</p></li><li><p>El usuario espec&#237;fico con los cuatro elementos del checklist de Wendel completamente rellenos</p></li><li><p>Las tres dimensiones del trabajo (funcional, emocional, social)</p></li><li><p>Las ansiedades y barreras identificadas</p></li><li><p>El cambio de comportamiento cuantificado con los tres rangos (m&#237;nimo, target, over-top)</p></li><li><p>Los criterios de Given-When-Then: la secuencia de eventos que debe ocurrir para que el usuario complique su trabajo</p></li><li><p>La puntuaci&#243;n de 6D: cada historia se eval&#250;a exactamente con las mismas seis dimensiones que todas las otras historias del framework</p></li></ul><p>No hay atajos. La calidad es id&#233;ntica a la de una historia que vino de un PRD completo que pas&#243; por todo el pipeline. Porque el rigor no vino del documento. Vino de las preguntas.</p><div><hr></div><h2>El M&#243;dulo No Te Permite Saltarte Pasos</h2><p>Un aspecto del Story Builder que algunos PMs encuentran inicialmente frustrante es su inflexibilidad. El m&#243;dulo no te permite saltarte fases. No puedes estar en la Fase 2 y pensar &#8220;ya he respondido esto, d&#233;jame pasar a la Fase 5&#8221;. No. El m&#243;dulo es demandante. Es pedag&#243;gico. Es &#8212;podr&#237;amos decir&#8212; un poco obstinado.</p><p>Pero esta obstinaci&#243;n tiene un prop&#243;sito. Porque lo que descubrimos en los primeros proyectos piloto fue que cuando los PMs pod&#237;an saltarse pasos, lo hac&#237;an. Y invariablemente, cuando la historia llegaba a desarrollo, faltaba contexto cr&#237;tico. Nadie hab&#237;a pensado realmente en las ansiedades del usuario. O no hab&#237;a claridad sobre las tres dimensiones del trabajo. O el cambio de comportamiento era vago.</p><p>Entonces el Story Builder fue dise&#241;ado para ser imposible de saltarse. Cada fase desbloquea la siguiente. Si no respondes la pregunta de la Fase 3 con suficiente especificidad, no puedes avanzar. Punto.</p><p>Esto es frustrante durante quince minutos. Y entonces se vuelve revelador.</p><div><hr></div><h2>El Efecto Formativo &#8212; La Verdadera Raz&#243;n De Existencia De Este M&#243;dulo</h2><p>Aqu&#237; est&#225; el insight clave que separa a Story Builder de ser simplemente otra herramienta de generaci&#243;n de contenido: el efecto formativo.</p><p>Despu&#233;s de usar Story Builder varias veces, algo cambia en c&#243;mo el PM piensa sobre los problemas. Ya no necesita que la IA le pregunte &#8220;&#191;cu&#225;l es el impedimento actual?&#8221; porque autom&#225;ticamente se encuentra pensando en ello cuando alguien describe un problema. Ya no olvida preguntar sobre las dimensiones emocionales y sociales porque ha internalizado que un trabajo humano es tridimensional.</p><p>El m&#243;dulo se vuelve gradualen dispensable. No porque haya generado contenido, sino porque ha cambiado la forma en que su usuario piensa.</p><p>Esto es lo que diferencia a un asistente de IA de un copiloto real. Un asistente genera salida. Un copiloto cambia c&#243;mo piensas sobre la entrada.</p><p>Un asistente te ahorra tiempo escribiendo. Un copiloto te hace ser mejor en tu trabajo. Y la verdadera medida del &#233;xito no es cu&#225;ntas veces lo usas, sino cu&#225;ntas veces <em>no</em> lo necesitas porque has internalizado el modo de pensar que ense&#241;a.</p><p>Los PMs que han utilizado Story Builder durante dos meses en Mercadona Tech reportan algo similar: que las reuniones con stakeholders se sienten diferentes. Que naturalmente hacen preguntas m&#225;s profundas. Que se sienten m&#225;s seguros diciendo &#8220;no creo que eso sea realmente el problema que necesitamos resolver&#8221; porque pueden articular por qu&#233;. Que tienen m&#225;s conversaciones sobre el contexto emocional y social de las decisiones de los usuarios, no solo la l&#243;gica funcional.</p><p>Eso es el efecto formativo. Y es potencialmente m&#225;s valioso que cualquier historia de usuario que el m&#243;dulo haya generado.</p><div><hr></div><h2>La Puntuaci&#243;n De 6D Sigue Siendo La Misma</h2><p>Un punto que es importante mencionar expl&#237;citamente: cada historia generada por Story Builder es calificada con el mismo sistema de 6D que el resto del framework. No hay excepci&#243;n. No hay &#8220;ya que fue conversacional, podemos relajar los est&#225;ndares&#8221;.</p><p>Las seis dimensiones son:</p><ol><li><p><strong>Claridad del Usuario</strong>: &#191;Sabemos exactamente qui&#233;n es el usuario y en qu&#233; contexto opera?</p></li><li><p><strong>Profundidad del Trabajo</strong>: &#191;Entendemos la verdadera necesidad debajo de la caracter&#237;stica, o estamos resolviendo una soluci&#243;n?</p></li><li><p><strong>Especificidad del Comportamiento</strong>: &#191;Podemos medir si el trabajo est&#225; siendo resuelto?</p></li><li><p><strong>Viabilidad T&#233;cnica</strong>: &#191;Es razonable construir esto con la tecnolog&#237;a disponible?</p></li><li><p><strong>Alineaci&#243;n Estrat&#233;gica</strong>: &#191;Ayuda esto a alcanzar los objetivos del producto y la compa&#241;&#237;a?</p></li><li><p><strong>Testabilidad</strong>: &#191;Podemos dise&#241;ar un test que demuestre si esta caracter&#237;stica logra su objetivo?</p></li></ol><p>Una historia que viene de un PRD formal tiene que puntuar bien en estas seis dimensiones. Una historia que viene de una conversaci&#243;n de quince minutos en Story Builder tambi&#233;n. No hay diferencia. El rigor es consistente.</p><p>Esto tiene un efecto importante: significa que Story Builder es genuinamente &#250;til para problemas reales, no solo para brainstorming r&#225;pido. No es una herramienta para generar &#8220;ideas locas&#8221;. Es una herramienta para convertir problemas reales en historias de usuario que pueden ser desarrolladas inmediatamente.</p><div><hr></div><h2>Conclusiones: El Viaje Completo Del Framework</h2><p>Hemos llegado al final. En estos siete art&#237;culos, hemos recorrido la totalidad del AI Mercadona User Story Framework. Comenzamos con Quality Guard, validando la solidez de nuestras investigaciones de usuario. Pasamos a Research &amp; JTBDs, donde descubrimos los trabajos verdaderos que nuestros usuarios estaban tratando de hacer. Vimos c&#243;mo JTBD to Stories transformaba esos trabajos en historias de usuario estructuradas. Conocimos al Quality Coach, quien nos ense&#241;aba a evaluar nuestro propio trabajo con rigor. Exploramos Story Splitting, entendiendo c&#243;mo particionar el trabajo complejo en incrementos que pod&#237;an ser entregados en sprints reales. Y finalmente, aqu&#237; en este s&#233;ptimo art&#237;culo, hemos visto el Story Builder, que nos permit&#237;a comenzar con una conversaci&#243;n en lugar de un documento y terminar con una historia de usuario de calidad id&#233;ntica.</p><p>&#191;Qu&#233; significa todo esto cuando se ve como un sistema completo?</p><p>El AI Mercadona User Story Framework no es un conjunto de herramientas separadas. Es un sistema coherente basado en un conjunto de principios compartidos. Jobs to Be Done no es simplemente una teor&#237;a que usamos en Research &amp; JTBDs. Es la lente a trav&#233;s de la cual evaluamos historias en Quality Coach. Es la base sobre la que Story Builder construye sus preguntas. Es lo que nos permite saber que una historia es &#8220;realmente buena&#8221; en lugar de simplemente &#8220;t&#233;cnicamente correcta&#8221;.</p><p>El checklist de Wendel no es solo algo que hacemos en Story Builder. Es lo que permite que Quality Coach sepa si tu historia especifica suficientemente al usuario. Es lo que hace que Story Splitting tenga sentido: porque sabemos exactamente para qui&#233;n estamos dividiendo el trabajo.</p><p>Los seis criterios de puntuaci&#243;n son exactamente iguales en todas partes. La calidad de una historia de usuario no depende de c&#243;mo entr&#243; en el sistema. Depende de si resuelve un trabajo real para un usuario espec&#237;fico de una manera que pueda ser verificada.</p><p>Esto tiene implicaciones profundas. Significa que el trabajo del Product Manager no es &#8220;crear especificaciones&#8221;. Es &#8220;descubrir problemas reales y especificar soluciones verificables a esos problemas&#8221;. Es investigaci&#243;n, an&#225;lisis cr&#237;tico, pensamiento estrat&#233;gico, y comunicaci&#243;n clara. No es redacci&#243;n de documentos Word con vi&#241;etas.</p><p>El framework amplifica eso. No hace que el PM desaparezca. Lo libera del trabajo mec&#225;nico de traducir un PRD en historias para que pueda hacer m&#225;s trabajo de pensamiento. M&#225;s investigaci&#243;n. M&#225;s conversaci&#243;n con usuarios. M&#225;s reflexi&#243;n estrat&#233;gica sobre qu&#233; problemas merecen ser resueltos. M&#225;s tiempo pensando en c&#243;mo los equipos de producto deben trabajar en lugar de gastar energ&#237;a asegurando que las historias tengan la estructura correcta.</p><p>Los datos de adopci&#243;n en Mercadona Tech han sido reveladores. Los equipos que utilizan el framework de manera completa reportan un aumento del diecisiete por ciento en la velocidad de desarrollo. No porque escriban historias m&#225;s r&#225;pido. Sino porque escriben historias que son claras la primera vez. Las preguntas de aclaraci&#243;n durante el refinamiento disminuyen. El trabajo reescrito disminuye. El desarrollo que toma un camino equivocado porque la historia fue ambigua disminuye.</p><p>Los PMs reportan que se sienten m&#225;s confiados en su trabajo. Porque no est&#225;n dependiendo de su intuici&#243;n para saber si una historia es &#8220;buena&#8221;. Tienen criterios. Tienen un sistema. Pueden mirar una historia y saber exactamente cu&#225;les son sus fortalezas y d&#243;nde necesita m&#225;s trabajo.</p><p>Los desarrolladores reportan que es m&#225;s f&#225;cil trabajar. Porque las historias especifican lo que importa, no lo que es t&#233;cnicamente f&#225;cil. Porque pueden hacer preguntas de aclaraci&#243;n que tienen respuestas reales, basadas en investigaci&#243;n de usuario, no simplemente en lo que el PM recordaba haber dicho.</p><p>Pero el insight m&#225;s profundo es quiz&#225;s que el framework es <em>educativo</em>. No es una soluci&#243;n que simplemente se implementa y se olvida. Es algo que los PMs internalizan. A trav&#233;s de la repetici&#243;n, a trav&#233;s de las preguntas que el framework les obliga a hacer, a trav&#233;s del est&#225;ndar que el framework establece para la calidad, los PMs se vuelven mejores en su trabajo.</p><p>El Story Builder, entonces, no es simplemente la &#250;ltima herramienta. Es la herramienta que cierra el c&#237;rculo. Porque reconoce que no todos los problemas comienzan con un PRD. Algunos comienzan con una conversaci&#243;n. Y el framework deber&#237;a ser lo suficientemente flexible para capturar eso, mientras mantiene el mismo rigor.</p><p>La verdadera revoluci&#243;n del AI Mercadona User Story Framework no es que exista. Es que es posible ser tanto flexible como riguroso. Es posible acelerar la creaci&#243;n de historias de usuario sin sacrificar la calidad. Es posible usar IA de una manera que amplifique la capacidad humana en lugar de reemplazarla.</p><p>El PM del futuro en Mercadona Tech no ser&#225; el que escriba menos documentos. Ser&#225; el que piense mejor sobre qu&#233; construir y por qu&#233;. Ser&#225; el que pase menos tiempo en la mec&#225;nica de escribir especificaciones y m&#225;s tiempo en investigaci&#243;n de usuario, pensamiento estrat&#233;gico, y facilitaci&#243;n de decisiones entre equipos. El framework le da el espacio para eso.</p><p>Y eso, finalmente, es lo que todo esto ha sido sobre. No sobre historias de usuario. Sobre c&#243;mo trabajamos. Sobre c&#243;mo creemos que el trabajo de producto deber&#237;a hacerse en una empresa que entiende que la velocidad sin claridad es simplemente caos con prisa, pero la claridad sin velocidad es un an&#225;lisis infinito.</p><p>El AI Mercadona User Story Framework intenta ser ambos. Claro y r&#225;pido. Riguroso y flexible. Cient&#237;fico y accesible. Con esta s&#233;ptima herramienta, el c&#237;rculo est&#225; completo. Ahora es trabajo nuestro usarlo.</p>]]></content:encoded></item><item><title><![CDATA[Story Splitting: Cuando el Tamaño se Convierte en Riesgo (Artículo 6 de 7)]]></title><description><![CDATA[Serie Gemba: AI Mercadona User Story Framework &#8212; Descomposici&#243;n de historias grandes en incrementos seguros y valiosos]]></description><link>https://newsletter.gemba.es/p/story-splitting-cuando-el-tamano</link><guid isPermaLink="false">https://newsletter.gemba.es/p/story-splitting-cuando-el-tamano</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 30 Mar 2026 06:30:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Pd9r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Este es el sexto art&#237;culo de una serie de 7 sobre el AI Mercadona User Story Framework. Despu&#233;s de recorrer el Quality Guard, Research, JTBD to Stories y Quality Coach, llegamos al m&#243;dulo desarrollado por Eduardo Ferro (@eferro): Story Splitting. </em><a href="https://www.eferro.net/">https://www.eferro.net/</a></p><div><hr></div><h2>La paradoja del trabajo de software: El riesgo crece m&#225;s r&#225;pido que el tama&#241;o</h2><p>Hace poco m&#225;s de una d&#233;cada, mientras trabajaba en equipos de entrega continua, Eduardo Ferro se dio cuenta de algo que parec&#237;a desafiar la l&#243;gica. Si tomabas una tarea que normalmente tardaba una semana y la hac&#237;as el doble de grande, el riesgo asociado no se duplicaba. Se multiplicaba por cuatro. A veces, incluso por diez.</p><p>Este descubrimiento no era te&#243;rico. Lo vio una y otra vez en retros, en despliegues fallidos, en historias que se arrastraban sprint tras sprint. El patr&#243;n era consistente: cuanto m&#225;s grande era una historia, m&#225;s cosas pod&#237;an salir mal. No de manera lineal. De manera exponencial.</p><p>La raz&#243;n es simple pero profunda. Una historia peque&#241;a &#8212;una que toma tres d&#237;as o menos&#8212; es un &#8220;experimento sobrevivible&#8221;. Si algo falla, el equipo puede revertir r&#225;pidamente, aprender, y seguir adelante. El costo del error es manejable.</p><p>Pero una historia de dos semanas o m&#225;s es diferente. Si falla, has invertido semanas en el trabajo. Otros equipos est&#225;n esperando. Revertir no es una opci&#243;n elegante; es un desastre. Los equipos no revierten. Aceptan un resultado mediocre. Dedican m&#225;s tiempo a arreglarlo. La historia se estira. La incertidumbre crece. El riesgo se expande.</p><p>Esta es la raz&#243;n por la que Eduardo Ferro dise&#241;&#243; el m&#243;dulo de Story Splitting que hemos usado en el <strong>AI Mercadona User Story Framework</strong>: no como un ejercicio acad&#233;mico de descomposici&#243;n, sino como una defensa pr&#225;ctica contra el riesgo exponencial. Su objetivo es simple pero ambicioso: detectar autom&#225;ticamente las historias que son demasiado grandes para ser seguras y descomponerlas en incrementos que sean, cada uno, independientemente valiosos, desplegables por s&#237; solos, y completables en tres d&#237;as o menos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pd9r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pd9r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 424w, https://substackcdn.com/image/fetch/$s_!Pd9r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 848w, https://substackcdn.com/image/fetch/$s_!Pd9r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 1272w, https://substackcdn.com/image/fetch/$s_!Pd9r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pd9r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png" width="1456" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:779432,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/188742395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pd9r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 424w, https://substackcdn.com/image/fetch/$s_!Pd9r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 848w, https://substackcdn.com/image/fetch/$s_!Pd9r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 1272w, https://substackcdn.com/image/fetch/$s_!Pd9r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce2753f-3427-4f13-a4d7-64873824b2d2_2874x1514.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>El primer paso: Detectar cuando el peligro est&#225; oculto en el lenguaje</h2><p>Eduardo reconoci&#243; que el tama&#241;o excesivo de una historia casi siempre se anuncia a s&#237; mismo. No a trav&#233;s del n&#250;mero de l&#237;neas, sino a trav&#233;s del lenguaje. Las historias que son demasiado grandes tienden a usar palabras espec&#237;ficas que revelan que esconden m&#250;ltiples historias dentro de una sola.</p><p>Identific&#243; seis categor&#237;as de indicadores ling&#252;&#237;sticos que act&#250;an como banderas rojas.</p><p><strong>Primera categor&#237;a: las conjunciones coordinantes</strong>. Cuando una historia dice &#8220;Los usuarios pueden subir <em>y</em> descargar archivos&#8221;, est&#225; ocultando dos historias completamente separadas. Subir es un flujo completamente diferente al de descargar. Tienen diferentes interfaces, diferentes casos de error, diferentes criterios de &#233;xito.</p><p><strong>Segunda categor&#237;a: los conectores de acci&#243;n</strong>. Palabras como &#8220;gestionar&#8221;, &#8220;administrar&#8221;, &#8220;procesar&#8221;, &#8220;manejar&#8221;. Estos verbos casi siempre esconden operaciones CRUD completas. &#8220;Gestionar usuarios&#8221; es crear, leer, actualizar y eliminar usuarios. Eso son potencialmente cuatro historias.</p><p><strong>Tercera categor&#237;a: los conectores de secuencia</strong>. Palabras como &#8220;antes&#8221;, &#8220;despu&#233;s&#8221;, &#8220;luego&#8221;, &#8220;entonces&#8221;. Revelan historias que agrupan pasos separables que podr&#237;an entregarse de forma independiente.</p><p><strong>Cuarta categor&#237;a: los indicadores de alcance</strong>. Palabras como &#8220;incluyendo&#8221;, &#8220;adem&#225;s&#8221;, &#8220;tambi&#233;n&#8221;. Cada palabra de este tipo es un s&#237;ntoma de que alguien a&#241;adi&#243; una caracter&#237;stica m&#225;s a lo que ya era una historia completa.<strong>Quinta categor&#237;a: los indicadores de opcionalidad</strong>. Palabras como &#8220;o bien&#8221;, &#8220;opcionalmente&#8221;, &#8220;alternativamente&#8221;. Cuando una historia presenta m&#250;ltiples caminos opcionales, est&#225; escondiendo historias que deber&#237;an desarrollarse por separado.</p><p><strong>Sexta categor&#237;a: los indicadores de excepci&#243;n</strong>. Palabras como &#8220;excepto&#8221;, &#8220;a menos que&#8221;, &#8220;sin embargo&#8221;, &#8220;en caso de&#8221;. La mejor pr&#225;ctica es desarrollar y desplegar el caso base primero &#8212;el 80% del trabajo&#8212;, y despu&#233;s, en historias posteriores, a&#241;adir las excepciones y los bordes. Las excepciones son donde la mayor&#237;a de los bugs se esconden.</p><p>El genio de Eduardo en el dise&#241;o del m&#243;dulo fue automatizar esto. El modulo de Eduardo que usamos en el <strong>AI Mercadona User Story Framework</strong> escanea la descripci&#243;n de la historia buscando exactamente estas palabras y estructuras ling&#252;&#237;sticas. Cuando las encuentra, levanta una bandera. No para rechazar la historia, sino para alertar al equipo de que aqu&#237; hay complejidad oculta que merece atenci&#243;n consciente.</p><div><hr></div><h2>El segundo paso: Transformar la detecci&#243;n en acci&#243;n</h2><p>Detectar que una historia es demasiado grande es solo el primer paso. El verdadero valor est&#225; en saber <em>c&#243;mo</em> dividirla. Eduardo Ferro, bas&#225;ndose en a&#241;os de experiencia con equipos en entrega continua, destil&#243; nueve heur&#237;sticas espec&#237;ficas de splitting que transforman las historias monol&#237;ticas en historias peque&#241;as, seguras, y todav&#237;a valiosas.</p><p><strong>Heur&#237;stica 1: Comenzar por los outputs</strong>. Los outputs son entidades discretas. Si est&#225;s construyendo un reporte, puedes entregar primero la versi&#243;n m&#225;s simple: el resumen en texto plano. Despu&#233;s, los detalles. Despu&#233;s, la exportaci&#243;n a CSV. Cada uno puede validarse, desplegarse y usarse de forma independiente.</p><p><strong>Heur&#237;stica 2: Estrechar el segmento</strong>. Entregar funcionalidad completa para el grupo m&#225;s peque&#241;o posible. Si est&#225;s construyendo una caracter&#237;stica para &#8220;todos los usuarios&#8221;, preg&#250;ntate: &#191;Puedo entregarla primero solo para los empleados de tienda? Esta heur&#237;stica reduce dram&#225;ticamente la complejidad.</p><p><strong>Heur&#237;stica 3: Extraer la utilidad b&#225;sica</strong>. El MVP es lo m&#237;nimo. Lo bello puede venir despu&#233;s. Si est&#225;s construyendo cancelaci&#243;n en lotes, la primera historia es subir una lista de IDs. La segunda a&#241;ade filtros. La tercera a&#241;ade validaci&#243;n. Cada una entrega valor y cada una es peque&#241;a.</p><p><strong>Heur&#237;stica 4: De lo dummy a lo din&#225;mico</strong>. Los datos est&#225;ticos primero, despu&#233;s los datos reales. Si est&#225;s construyendo un dashboard, la primera historia muestra datos hardcodeados. La segunda conecta a una fuente real. La tercera a&#241;ade auto-refresh. Divide el problema arquitect&#243;nico del problema de datos.</p><p><strong>Heur&#237;stica 5: Simplificar los outputs</strong>. Formatos m&#225;s simples primero. Si est&#225;s generando un reporte, la primera historia genera CSV. La segunda genera PDF. La tercera lo auto-env&#237;a por email. La complejidad crece de forma predecible.</p><p><strong>Heur&#237;stica 6: Dividir por capacidad</strong>. Limitar el alcance por volumen. La primera historia procesa 100 art&#237;culos. La segunda 1,000. La tercera es ilimitada. Cada versi&#243;n es completamente &#250;til por s&#237; misma.</p><p><strong>Heur&#237;stica 7: Dividir por ejemplo</strong>. Para cambios grandes, usar casos de uso concretos. Si est&#225;s construyendo comunicaci&#243;n post-cancelaci&#243;n, la primera historia es email a usuarios web. La segunda es SMS a usuarios m&#243;viles. La tercera es tickets en soporte. Cada una es un flujo completo y valioso de punta a punta.</p><p><strong>Heur&#237;stica 8: Aprender vs Ganar</strong>. Separar la investigaci&#243;n de la entrega. Si est&#225;s construyendo un sistema de recomendaciones con machine learning, la primera historia es un spike de investigaci&#243;n: 3 d&#237;as m&#225;ximo, que responde una pregunta espec&#237;fica. La segunda es una versi&#243;n simple basada en reglas. La tercera, quiz&#225;s 3 sprints despu&#233;s, es el modelo de ML. La investigaci&#243;n y la entrega son diferentes tipos de trabajo. Mezclarlas casi siempre hace que ambas sean malas.</p><p><strong>Heur&#237;stica 9: Ponerla en muletas</strong>. Entregar con pasos manuales o backends m&#225;s simples. Si est&#225;s sincronizando inventario, la primera historia es subir manualmente un CSV y procesar cambios. La segunda es un script semi-autom&#225;tico. La tercera es sincronizaci&#243;n completa y autom&#225;tica. Cada una es una historia valiosa que el negocio puede usar.</p><p>Lo que Eduardo Ferro entendi&#243; es que estas heur&#237;sticas no son arbitrarias. Cada una separa una dimensi&#243;n diferente de la complejidad. Cada una permite que un equipo entregue, valide, aprenda, y luego avance.</p><div><hr></div><h2>El concepto que todo lo une: El experimento sobrevivible</h2><p>Hay un concepto central que recorre todas las heur&#237;sticas: el &#8220;experimento sobrevivible&#8221;.</p><p>Una historia peque&#241;a &#8212;tres d&#237;as o menos&#8212; es un experimento. Si descubre que no es el enfoque correcto, el equipo puede revertir r&#225;pidamente. El costo del aprendizaje es bajo. El experimento fall&#243;, pero fue barato.</p><p>Una historia grande &#8212;dos semanas o m&#225;s&#8212; no es un experimento sobrevivible. Si falla, la inversi&#243;n es demasiado grande. El equipo no puede revertir. Tiene que aceptar una soluci&#243;n mediocre. Esto es lo opuesto a la agilidad.</p><p>Cuando divides una historia grande en historias peque&#241;as, cada una de ellas se convierte en un experimento sobrevivible. El equipo puede validar supuestos de forma frecuente, obtener feedback frecuente, y ajustar el rumbo. La suma de las historias peque&#241;as no es solo m&#225;s manejable. Es fundamentalmente m&#225;s segura.</p><div><hr></div><h2>La regla que muchos olvidan: Siempre vertical, nunca horizontal</h2><p>Hay una regla en el framework de Eduardo Ferro que es tan importante, y tan frecuentemente violada, que merece &#233;nfasis especial: las divisiones siempre deben ser <em>verticales</em>, nunca <em>horizontales</em>.</p><p>Una divisi&#243;n horizontal ser&#237;a separar la historia en capas t&#233;cnicas: &#8220;Implementar el endpoint de API&#8221;, &#8220;Implementar la l&#243;gica de negocio&#8221;, &#8220;Implementar la interfaz de usuario&#8221;. Esto parece l&#243;gico desde la perspectiva t&#233;cnica. Pero es una trampa. Porque ninguno de estos &#8220;trabajos&#8221; entrega valor por s&#237; solo.</p><p>Si algo sale mal en la l&#243;gica de negocio, has comprometido tambi&#233;n el trabajo del endpoint y la interfaz. Las &#8220;historias&#8221; horizontales no llegan nunca a done. Se agrupan de nuevo cuando llega el momento del release. Y est&#225;s de vuelta a una historia grande.</p><p>La manera correcta es vertical. La historia debe cruzar <em>todas</em> las capas de tecnolog&#237;a y entregar valor completo de punta a punta. &#8220;Los usuarios pueden crear un pedido con los datos b&#225;sicos&#8221; cruza la interfaz, la API, la l&#243;gica de negocio, la base de datos. Y entrega valor.</p><div><hr></div><h2>El marco de validaci&#243;n: Criterios que no son negociables</h2><p>Una vez que tienes una propuesta de split, el framework de Eduardo ofrece cuatro criterios que cada split propuesto debe cumplir. Si no los cumple, el split no es v&#225;lido.</p><p>Primero, la historia debe ser <em>independientemente valiosa</em>. El usuario o el negocio pueden obtener valor de esta historia completada, sin necesitar las otras historias que se dividieron de la original.</p><p>Segundo, la historia debe ser <em>desplegable sola</em>. Si la completaste, puedes desplegarla a producci&#243;n sin desplegar las otras historias.</p><p>Tercero, la historia debe ser <em>completable en tres d&#237;as o menos</em>. Esta es la l&#237;nea que dibuja Eduardo. Si toma m&#225;s de eso, tiene riesgo exponencial.</p><p>Cuarto, la historia debe <em>entregar valor de punta a punta</em>. No es un &#8220;componente de la infraestructura&#8221;. Es una capacidad completa que el usuario puede ejercer.</p><div><hr></div><h2>La tabla de decisi&#243;n: Automatizar lo que puede ser automatizado</h2><p>Una de las caracter&#237;sticas m&#225;s &#250;tiles del m&#243;dulo es la tabla de decisi&#243;n. Es una asignaci&#243;n expl&#237;cita de indicadores ling&#252;&#237;sticos a heur&#237;sticas de splitting.</p><p>Si encuentras &#8220;gestionar&#8221;, la tabla recomienda Heur&#237;stica #1 (comenzar por outputs). Si encuentras &#8220;y&#8221;, sugiere dividir por conjunci&#243;n. Si encuentras &#8220;para todos los usuarios&#8221;, recomienda Heur&#237;stica #2 (estrechar el segmento).</p><p>Esto convierte lo que podr&#237;a ser un ejercicio subjetivo en algo sistem&#225;tico. Eduardo captur&#243; la sabidur&#237;a que un experto en descomposici&#243;n tendr&#237;a y la empaquet&#243; en reglas que cualquier equipo puede aplicar. La descomposici&#243;n no es un arte. Requiere disciplina. Y eso es escalable.</p><div><hr></div><h2>En la pr&#225;ctica: C&#243;mo cambia el trabajo</h2><p>Sin el framework, un equipo recibe una historia como: &#8220;Gestionar usuarios del sistema, incluyendo creaci&#243;n, actualizaci&#243;n y eliminaci&#243;n, adem&#225;s de reseteo de contrase&#241;as, con soporte para roles y permisos, opcionalmente con autenticaci&#243;n de dos factores.&#8221; Es grande. Se estima en 21 puntos. Se estira a tres sprints. El usuario obtiene algo, pero no es exactamente lo que esperaba.</p><p>Con el framework de Story Splitting, la misma historia se convierte en:</p><p>Historia 1 (3 d&#237;as): Los usuarios administradores pueden crear usuarios locales con nombre, email y contrase&#241;a inicial.</p><p>Historia 2 (2 d&#237;as): Los usuarios administradores pueden editar el email y el nombre de usuarios existentes.</p><p>Historia 3 (2 d&#237;as): Los usuarios administradores pueden eliminar usuarios.</p><p>Historia 4 (3 d&#237;as): Los usuarios administradores pueden asignar roles (admin, editor, viewer). Permisos se aplican bas&#225;ndose en roles.</p><p>Historia 5 (3 d&#237;as): Los usuarios pueden resetear sus propias contrase&#241;as a trav&#233;s de un link enviado por email.</p><p>Historia 6 (spike de 3 d&#237;as): Investigaci&#243;n de autenticaci&#243;n de dos factores.</p><p>Historia 7 (3 d&#237;as, despu&#233;s del spike): Los usuarios pueden opcionalmente configurar 2FA con SMS.</p><p>7 historias peque&#241;as en lugar de 1 gigante. El equipo completa la primera en dos d&#237;as. Obtiene feedback. Para el final de las dos primeras semanas, ha entregado cuatro historias completamente funcionales &#8212; el 70% del valor. Comparado con el escenario tradicional donde a&#250;n est&#225;n lidiando con bugs de permisos, esto es un cambio radical.</p><div><hr></div><h2>Conclusiones: El cambio que cambia c&#243;mo pensamos sobre el trabajo</h2><p>El m&#243;dulo de Story Splitting del <strong>AI Mercadona User Story Framework</strong>, dise&#241;ado por Eduardo Ferro, representa algo m&#225;s profundo que una t&#233;cnica de descomposici&#243;n. Representa un cambio en c&#243;mo pensamos sobre el riesgo en el desarrollo de software.</p><p>El riesgo no es una constante que aumenta linealmente con el tama&#241;o. Aumenta exponencialmente. Una historia de tres d&#237;as tiene un tipo de riesgo. Una historia de tres semanas tiene un tipo de riesgo completamente diferente. Es el riesgo de no poder revertir. De estar atrapado. De ser forzado a aceptar una soluci&#243;n mediocre.</p><p>Cuando divides historias grandes en peque&#241;as, no est&#225;s solo haciendo que sean m&#225;s manejables. Est&#225;s transformando el tipo de riesgo que asumes. Cada peque&#241;a historia es un experimento. El blast radius de cualquier error es peque&#241;o.</p><p>El framework de Eduardo automatiza el proceso de identificar d&#243;nde el riesgo est&#225; oculto &#8212;en el lenguaje de las historias que escribimos&#8212;, y proporciona un conjunto sistem&#225;tico de heur&#237;sticas para transformar esas historias en incrementos seguros y valiosos.</p><p>Hay una raz&#243;n por la que Eduardo ha enfatizado la regla vertical vs horizontal tan fuertemente. Es porque es f&#225;cil fingir que est&#225;s siendo &#225;gil mientras est&#225;s cometiendo el mismo error viejo: crear trabajo que no entrega valor a nadie hasta que est&#225; 100% completo. El framework te obliga a ser honesto. Cada historia debe entregar valor de verdad. Cada historia debe poder ser desplegada sola. Cada historia debe ser completable en tres d&#237;as.</p><p>Cuando pones estas restricciones, algo interesante sucede. Los equipos comienzan a preguntarse: &#8220;&#191;Cu&#225;l es la pieza m&#225;s peque&#241;a que puedo hacer que todav&#237;a agregue valor?&#8221; En lugar de: &#8220;&#191;C&#243;mo puedo hacer todo de una vez?&#8221;</p><p>Esta es la pregunta que cambia los equipos de buenos a grandes. Y es la pregunta que el Story Splitting de Eduardo te obliga a hacer.</p><div><hr></div><p><strong>Pr&#243;ximo Art&#237;culo (7 de 7):</strong> Story Builder &#8212; El m&#243;dulo final del AI Mercadona User Story Framework que permite a los equipos construir historias desde cero, sin un DAPP como punto de partida, usando un di&#225;logo estructurado que asegura que lo que crean es una historia bien formada desde el inicio.</p>]]></content:encoded></item><item><title><![CDATA[Quality Coach: Evaluando la Calidad de tus User Stories con IA (Artículo 5 de 7)]]></title><description><![CDATA[Serie Gemba: AI Mercadona User Story Framework &#8212; Puntuaci&#243;n 6D y detecci&#243;n de antipatrones en user stories]]></description><link>https://newsletter.gemba.es/p/quality-coach-evaluando-la-calidad</link><guid isPermaLink="false">https://newsletter.gemba.es/p/quality-coach-evaluando-la-calidad</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 23 Mar 2026 07:30:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!za5w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Este es el <strong>Art&#237;culo 5 de una serie de 7</strong> sobre el Marco de Historias de Usuario de IA Mercadona (AI Mercadona User Story Framework). Si a&#250;n no has le&#237;do los art&#237;culos anteriores, te recomendamos que comiences con:</p><ul><li><p><strong>Art&#237;culo 1:</strong> La investigaci&#243;n de DAPP como puerta de entrada al desarrollo impulsado por evidencia</p></li><li><p><strong>Art&#237;culo 2:</strong> C&#243;mo transformar brechas de investigaci&#243;n en hip&#243;tesis de Jobs-to-be-Done verificables</p></li><li><p><strong>Art&#237;culo 3:</strong> De Jobs-to-be-Done a User Stories: El puente conceptual entre investigaci&#243;n y ejecuci&#243;n</p></li><li><p><strong>Art&#237;culo 4:</strong> El constructor de historias de usuario: c&#243;mo escribir desde cero</p></li></ul><p>En este art&#237;culo, abordaremos el desaf&#237;o que enfrenta cualquier organizaci&#243;n de tecnolog&#237;a con m&#250;ltiples equipos: <strong>&#191;c&#243;mo asegurar consistencia en la calidad de las historias de usuario cuando tienes 12 verticales, decenas de historias por sprint, y cada Product Manager trae su propia intuici&#243;n sobre qu&#233; es &#8220;bueno&#8221;?</strong></p><p>La respuesta no es delegar la evaluaci&#243;n completamente al framework, ni tampoco ignorar el juicio humano experto. Es, en su lugar, crear un <strong>sistema compartido de evaluaci&#243;n</strong> que sea simult&#225;neamente riguroso y accesible, que eleve los est&#225;ndares sin paralizar la ejecuci&#243;n, y que permita a los equipos aprender de los patrones que se repiten una y otra vez en el pipeline.</p><p>Bienvenidos al <strong>Entrenador de Calidad</strong> (Quality Coach).</p><div><hr></div><h2>El Problema Invisible de la Inconsistencia</h2><p>Hace pocos meses, durante una reuni&#243;n de revisi&#243;n de backlogs, sucedi&#243; algo que probablemente reconocer&#225;s si trabajas en una organizaci&#243;n con m&#250;ltiples equipos de producto.</p><p>Un Product Manager present&#243; una historia de usuario que comenzaba as&#237;: <em>&#8220;Como usuario, quiero poder ver mis pedidos previos para poder realizar compras m&#225;s r&#225;pidas.&#8221;</em> El equipo de ingenier&#237;a hizo preguntas t&#233;cnicas sobre la arquitectura. El equipo de dise&#241;o pregunt&#243; sobre wireframes. Pero nadie hizo la pregunta m&#225;s fundamental: <strong>&#191;Sabemos realmente si esto resolver&#225; el problema del usuario?</strong></p><p>Cuando examinas esa historia con rigor, descubres que no hay evidencia de cu&#225;ntos usuarios realmente abandonan el flujo de compra por esta raz&#243;n, no se especifica cu&#225;l es el perfil exacto del usuario, la m&#233;trica de &#233;xito es ambigua, y no hay plan para validar experimentalmente si la hip&#243;tesis era correcta.</p><p>Pero la historia fue aprobada de todas formas. Porque se ve&#237;a &#8220;suficientemente buena.&#8221;</p><p>En Mercadona Tech, con 12 verticales funcionando en paralelo y decenas de historias en cada sprint, esta inconsistencia se multiplica. El equipo de Checkout trabaja con un est&#225;ndar de calidad. El equipo de Tienda trabaja con otro. El equipo de Primera Milla con otro diferente. No por incompetencia, sino porque no existe un framework compartido que defina qu&#233; es realmente &#8220;una buena historia de usuario.&#8221;</p><p>El Entrenador de Calidad (Quality Coach) existe para resolver exactamente esto: crear un sistema de evaluaci&#243;n que sea lo suficientemente riguroso para garantizar que las historias representen experimentos reales sobre comportamiento del usuario, pero lo suficientemente flexible para respetar el contexto, la urgencia y las realidades operativas de cada equipo.</p><div><hr></div><h2>La Filosof&#237;a: Calidad como Experimento, no como Checklist</h2><p>Antes de sumergirnos en las seis dimensiones de evaluaci&#243;n, necesitamos establecer una premisa filos&#243;fica que gu&#237;a todo el trabajo del Entrenador de Calidad.</p><p>La mayor&#237;a de los equipos eval&#250;an historias de usuario usando un checklist: <strong>&#191;Tiene un usuario? S&#237;. &#191;Tiene un beneficio? S&#237;. &#191;Es accionable? S&#237;. Siguiente.</strong></p><p>Pero esto trata la historia como un <strong>art&#237;culo para entregar</strong>, no como una <strong>hip&#243;tesis para validar</strong>.</p><p>Jobs-to-be-Done, el framework que sustenta todo el marco de historias de usuario de IA Mercadona, nos ense&#241;a que el trabajo verdadero no es la caracter&#237;stica que entregamos. El trabajo verdadero es el cambio de comportamiento que queremos producir en el usuario. Una vez que aceptas esa premisa, la pregunta sobre calidad cambia fundamentalmente.</p><p>Ya no preguntamos: <em>&#8220;&#191;Est&#225; bien escrita?&#8221;</em></p><p>Preguntamos: <em>&#8220;&#191;Es verificable como un experimento? &#191;Podemos observar si el usuario realmente cambi&#243; su comportamiento de la manera que esperamos?&#8221;</em></p><p>Esta perspectiva viene del libro <em>&#8220;50 Quick Ideas to Improve Your User Stories&#8221;</em> de Gojko Adzic y David Evans, dos de los pensadores m&#225;s influyentes en evoluci&#243;n del movimiento &#225;gil. Su insight central es que una buena historia de usuario no es una promesa vaga, sino una <strong>hip&#243;tesis comprobable sobre c&#243;mo el usuario se comportar&#225; diferente despu&#233;s de que entregues la soluci&#243;n.</strong></p><p>El Entrenador de Calidad formaliza esta filosof&#237;a en seis dimensiones medibles.</p><div><hr></div><h2>Las Seis Dimensiones de Evaluaci&#243;n</h2><p>El Entrenador de Calidad eval&#250;a cada historia de usuario en una escala de 0 a 10 en cada una de estas dimensiones. No es un enfoque de &#8220;pasar/fallar,&#8221; sino un sistema diagn&#243;stico que te dice exactamente d&#243;nde est&#225;n las debilidades de la historia y qu&#233; se necesita para fortalecerla.</p><h3>Dimensi&#243;n 1: Contexto JTBD y Evidencia del Problema</h3><p><strong>&#191;Realmente entendemos el trabajo que el usuario necesita hacer?</strong></p><p>Esta es la dimensi&#243;n m&#225;s fundamental. Una historia que no est&#225; anclada en una comprensi&#243;n profunda del trabajo del usuario es, en el mejor de los casos, un disparo a ciegas. En el peor, es trabajo que nadie quer&#237;a hacer en primer lugar.</p><p>Una buena puntuaci&#243;n en esta dimensi&#243;n requiere tres tipos de evidencia:</p><p><strong>Primero, evidencia cualitativa:</strong> Observaciones directas de usuarios diciendo que necesitan hacer este trabajo. No es una encuesta. Es alguien en el campo viendo frustraci&#243;n real. Idealmente, esta evidencia viene del PRD, que a su vez proviene de investigaci&#243;n Mom Test (ver Art&#237;culo 1).</p><p><strong>Segundo, evidencia cuantitativa con baseline y target:</strong> Si el trabajo es importante, deber&#237;a ser observable en los datos. &#191;Cu&#225;ntos usuarios enfrentan este problema hoy? &#191;Cu&#225;l es el baseline? &#191;A qu&#233; n&#250;mero queremos llegar? Una historia sobre &#8220;mejorar la experiencia de b&#250;squeda&#8221; podr&#237;a tener un baseline de &#8220;40% de b&#250;squedas no producen compra&#8221; con un target de &#8220;reducir a 25%.&#8221;</p><p><strong>Tercero, observaci&#243;n del terreno (Gemba):</strong> Idealmente, alguien del equipo ha visitado el contexto real donde ocurre el trabajo. Si es un trabajo de log&#237;stica, alguien estuvo en el almac&#233;n. Si es un trabajo de tienda, alguien estuvo en el punto de venta. Esto no siempre es posible, pero cuando es posible, proporciona insights que ning&#250;n an&#225;lisis de datos puede dar.</p><p>Una historia con puntuaci&#243;n 9 en esta dimensi&#243;n te dice exactamente por qu&#233; el trabajo importa, con n&#250;meros que lo respaldan, y con observaciones de campo que lo hacen real. Una historia con puntuaci&#243;n 3 dice: &#8220;Creemos que los usuarios podr&#237;an querer esto&#8221; y espera que tengas fe.</p><h3>Dimensi&#243;n 2: Especificidad del Usuario</h3><p><strong>&#191;Sabemos realmente qui&#233;n es el usuario de esta historia?</strong></p><p>Aqu&#237; llegamos a uno de los antipatrones m&#225;s comunes en la industria: la historia de usuario gen&#233;rica. <em>&#8220;Como usuario, quiero poder buscar productos para encontrar lo que necesito.&#8221;</em> Este es un ejemplo de lo que llamamos una &#8220;historia fantasma.&#8221; Es tan gen&#233;rica que podr&#237;a aplicar a casi cualquier plataforma digital.</p><p>El framework de Jobs-to-be-Done resuelve esto a trav&#233;s de lo que Wendell llama las <strong>cuatro preguntas de usuario espec&#237;fico:</strong></p><ol><li><p><strong>&#191;Qui&#233;n exactamente es este usuario?</strong> No &#8220;usuarios de m&#243;vil.&#8221; Espec&#237;ficamente: &#8220;Mujeres que compraban entre dos y tres veces a la semana en la tienda f&#237;sica, y est&#225;n experimentando con compra online por primera vez.&#8221;</p></li><li><p><strong>&#191;En qu&#233; contexto est&#225; intentando hacer su trabajo?</strong> &#8220;A las 7 AM en casa mientras se prepara para el trabajo, usando 5-10 minutos para hacer un pedido r&#225;pido.&#8221;</p></li><li><p><strong>&#191;Qu&#233; otras alternativas est&#225; considerando?</strong> &#8220;Podr&#237;a seguir yendo a la tienda f&#237;sicamente, podr&#237;a usar Amazon Fresh, podr&#237;a pedir a trav&#233;s de WhatsApp.&#8221;</p></li><li><p><strong>&#191;Qu&#233; obst&#225;culos enfrenta para hacer su trabajo?</strong> &#8220;No sabe qu&#233; categor&#237;as est&#225;n disponibles online, tarda 20 minutos en buscar lo que necesita.&#8221;</p></li></ol><p>Una historia que no puede responder estas cuatro preguntas espec&#237;ficamente tiene una puntuaci&#243;n m&#225;xima de 5 en esta dimensi&#243;n. Este es un <strong>hard rule</strong>, no una sugerencia. Porque sin especificidad de usuario, no puedes medir si la soluci&#243;n realmente funciona para alguien.Dimensi&#243;n 3: Cambio de Comportamiento Cuantificable</p><p><strong>&#191;Qu&#233; har&#225; diferente el usuario despu&#233;s de usar nuestra soluci&#243;n?</strong></p><p>Esta es la dimensi&#243;n donde muchas historias de usuario tradicionalmente fracasan. Porque la mayor&#237;a de las historias definen el &#8220;beneficio&#8221; de manera abstracta. <em>&#8220;Como vendedor de tienda, quiero un dashboard de inventario en tiempo real para tener mejor visibilidad.&#8221;</em> &#191;Mejor visibilidad? &#191;Eso qu&#233; significa?</p><p>Con la &#243;ptica de Jobs-to-be-Done y la filosof&#237;a de experimento del Entrenador de Calidad, necesitamos traducir esto a cambio de comportamiento observable:</p><p><em>&#8220;Como vendedor de tienda en turno de ma&#241;ana, quiero recibir alertas autom&#225;ticas cuando un producto se queda sin stock para que pueda reabastecer en los pr&#243;ximos 15 minutos en lugar de esperar a la revisi&#243;n manual cada hora. Baseline: 3 horas de espera promedio. Target: 15 minutos.&#8221;</em></p><p>Observa lo que cambi&#243;: el usuario es espec&#237;fico (vendedor en turno de ma&#241;ana), el comportamiento es espec&#237;fico (recibir alertas, actuar r&#225;pido vs. revisar manualmente), y es cuantificable (15 minutos vs. 3 horas).</p><p>Esto es una historia que puedes validar experimentalmente. Despliegas el feature, y despu&#233;s de dos semanas observas: &#191;Los vendedores realmente est&#225;n reabasteciendo en 15 minutos en lugar de 3 horas?</p><p>Una historia sin cambio de comportamiento cuantificable tiene una puntuaci&#243;n m&#225;xima de 5 en esta dimensi&#243;n. Este es otro <strong>hard rule</strong>. Sin cambio de comportamiento cuantificado, es solo un feature backlog, no una historia de usuario.</p><h3>Dimensi&#243;n 4: Zona de Control</h3><p><strong>&#191;Est&#225; el equipo en control de lo que necesita entregar para lograr este cambio de comportamiento?</strong></p><p>Este es un tema sutil pero cr&#237;tico. Imaginemos esta historia: <em>&#8220;Como centro de distribuci&#243;n, quiero que los proveedores entreguen con exactitud 99% de las unidades pedidas para que nuestro sistema de picking sea m&#225;s eficiente.&#8221;</em></p><p>Este es un problema real. Pero el equipo de tecnolog&#237;a no controla a los proveedores. Una historia en esta situaci&#243;n tiene que redefinirse para estar dentro de la zona de control del equipo:</p><p><em>&#8220;Como especialista de relaciones con proveedores, quiero un dashboard que muestre exactitud de entregas por proveedor en tiempo real para poder identificar patrones y contactar proactivamente a proveedores con bajo desempe&#241;o.&#8221;</em></p><p>Ahora el equipo controla lo que importa: generar datos confiables, alertar, facilitar la comunicaci&#243;n. El cambio de comportamiento del proveedor es el segundo efecto, no el primero.</p><h3>Dimensi&#243;n 5: Restricciones de Tiempo</h3><p><strong>&#191;Es la urgencia real o artificial?</strong></p><p>He visto esto en cientos de organizaciones: llega el final del sprint, y de repente todo es urgente. Cuando m&#225;s del 50% de las historias de un sprint tienen deadlines cercanas, algo est&#225; mal. No es un problema de ejecuci&#243;n. Es un problema de priorizaci&#243;n.</p><p>El Entrenador de Calidad observa las restricciones de tiempo en dos dimensiones: <strong>Primero, &#191;es la urgencia real o percibida?</strong> &#8220;Perderemos 10k en ventas por d&#237;a si no lo entregamos&#8221; es real. &#8220;El stakeholder quiere verlo en la review&#8221; es artificial. <strong>Segundo, &#191;es s&#237;ntoma de un problema sist&#233;mico?</strong> Un sprint donde cada historia tiene presi&#243;n de tiempo es un patr&#243;n que necesita atenci&#243;n.</p><h3>Dimensi&#243;n 6: Experimento Sobrevivible</h3><p><strong>&#191;Qu&#233; haremos si nos equivocamos?</strong></p><p>Esta es la dimensi&#243;n m&#225;s futurista, pero tambi&#233;n la m&#225;s importante para una organizaci&#243;n que quiere escalar. Una buena historia de usuario deber&#237;a incluir desde el principio:</p><ol><li><p><strong>La hip&#243;tesis expl&#237;cita:</strong> Lo que creemos que va a pasar</p></li><li><p><strong>La m&#233;trica de &#233;xito:</strong> C&#243;mo sabremos si tuvimos raz&#243;n</p></li><li><p><strong>El plan de rollback:</strong> C&#243;mo revertiremos si nos equivocamos</p></li><li><p><strong>El plan de validaci&#243;n:</strong> Cu&#225;ntos usuarios, durante cu&#225;nto tiempo, antes de la entrega completa</p></li></ol><p>Un ejemplo de una historia que punt&#250;a 9 en esta dimensi&#243;n: <em>&#8220;Hip&#243;tesis: Mostrar productos frecuentemente comprados juntos en la p&#225;gina de detalles del producto aumentar&#225; la cesta promedio de compra en 15% para usuarios que repiten compra semanal. M&#233;trica de &#233;xito: AOV sube a 15% en grupo de test vs. control despu&#233;s de 2 semanas. Plan B: Si AOV no aumenta, revertir autom&#225;ticamente a control. Validaci&#243;n: 10,000 usuarios en grupo de test durante 14 d&#237;as.&#8221;</em></p><p>Una historia que punt&#250;a 3: <em>&#8220;Queremos mostrar productos relacionados en la p&#225;gina de detalles del producto.&#8221;</em> &#191;Qu&#233; hip&#243;tesis estamos validando? No se sabe. &#191;Cu&#225;ndo sabemos que fue exitoso? Cuando termine el sprint.</p><div><hr></div><h2>Los Siete Antipatrones de Historia D&#233;bil</h2><p>A trav&#233;s de analizar cientos de historias de usuario en Mercadona Tech, hemos identificado patrones recurrentes de debilidad. No son errores en s&#237; mismos, sino s&#237;ntomas de historias que no han sido pensadas como experimentos verificables sobre cambio de comportamiento.</p><h3>Antipatr&#243;n 1: El Usuario Fantasma</h3><p><em>&#8220;Como usuario, quiero poder filtrar por marca para buscar m&#225;s f&#225;cilmente.&#8221;</em> El usuario aqu&#237; es tan gen&#233;rico que es invisible. &#191;Qui&#233;n? &#191;Un usuario habitual que compra dos veces a la semana? &#191;Un nuevo usuario que no sabe cu&#225;les son las marcas disponibles? La soluci&#243;n es incluir el proto-personaje completo, respondiendo las cuatro preguntas de especificidad de usuario de Wendell.</p><h3>Antipatr&#243;n 2: El Beneficio Fantasma</h3><p><em>&#8220;Para poder encontrar lo que necesito.&#8221;</em> &#191;Qu&#233; significa &#8220;encontrar&#8221;? &#191;Menos clics? &#191;Menos tiempo? &#191;Resultados m&#225;s relevantes? Sin una definici&#243;n operacional del beneficio, no puedes validar experimentalmente si la soluci&#243;n funcion&#243;.</p><h3>Antipatr&#243;n 3: La Historia Falsa</h3><p><em>&#8220;Como equipo de ingenier&#237;a, quiero refactorizar la base de datos para poder tener mejor performance.&#8221;</em> &#191;Qui&#233;n es el usuario aqu&#237;? No es el equipo de ingenier&#237;a. Es el usuario final que espera una aplicaci&#243;n m&#225;s r&#225;pida. Una historia verdadera ser&#237;a: <em>&#8220;Como usuario que hace b&#250;squedas frecuentes de ofertas en categor&#237;a Frescos, quiero que los resultados se carguen en menos de 2 segundos (vs. los actuales 5 segundos) para poder navegar sin frustraci&#243;n.&#8221;</em></p><h3>Antipatr&#243;n 4: La Soluci&#243;n como Necesidad</h3><p><em>&#8220;Quiero un bot&#243;n de favoritos en la p&#225;gina de producto.&#8221;</em> Estamos describiendo la soluci&#243;n t&#233;cnica, no el trabajo del usuario. &#191;Por qu&#233; el usuario necesita favoritos? &#191;Es para comparar productos? &#191;Es para volver a productos vistos anteriormente? Cada respuesta es una historia diferente, con m&#233;tricas de &#233;xito diferentes.</p><h3>Antipatr&#243;n 5: Entrega Fuera de Control</h3><p><em>&#8220;Como gestor de centros, quiero que el sistema de proveedores externo env&#237;e datos de inventario cada hora.&#8221;</em> El equipo no controla el sistema externo. La historia est&#225; configurada para fracasar porque est&#225; fuera de la zona de control del equipo.</p><h3>Antipatr&#243;n 6: Todo es Urgente</h3><p>Si tu sprint tiene 80% de las historias con deadlines apretadas, tu priorizaci&#243;n est&#225; rota. No es un problema de ejecuci&#243;n. Una historia bajo presi&#243;n de tiempo real es diferente de una sprint donde todo es urgente por defecto.</p><h3>Antipatr&#243;n 7: Divisi&#243;n T&#233;cnica Horizontal</h3><p><em>&#8220;Como desarrollador frontend, quiero crear la interfaz de filtros. Como desarrollador backend, quiero implementar los endpoints de filtros.&#8221;</em> Lo que deber&#237;a ser una &#250;nica historia de usuario se divide en tareas t&#233;cnicas de capas. Puedes tener dos &#8220;historias&#8221; completadas y el usuario seguir sin tener la funcionalidad de punta a punta.</p><div><hr></div><h2>El Mecanismo: Evaluaci&#243;n Rigurosa sin Rigidez</h2><p>El Entrenador de Calidad utiliza las seis dimensiones para evaluar cada historia en una escala de 0-10. Pero el mecanismo es importante: no es un juicio de &#8220;bueno&#8221; o &#8220;malo.&#8221; Es un diagn&#243;stico.</p><p><strong>Una historia que punt&#250;a 32/60 (53%) no es rechazada.</strong> Se dice: &#8220;Aqu&#237; est&#225; el diagn&#243;stico. La historia es d&#233;bil en especificidad de usuario, d&#233;bil en cambio de comportamiento cuantificado, fuerte en contexto JTBD. Esto significa que entiendes el problema real, pero a&#250;n necesitas clarificar exactamente qui&#233;n es el usuario y qu&#233; comportamiento esperas cambiar.&#8221;</p><p>Entonces el Entrenador proporciona una <strong>reescritura sugerida</strong> de la historia, reformulada en lenguaje JTBD, que el Product Manager puede adoptar, adaptar, o descartar.</p><p>Aqu&#237; es donde la filosof&#237;a es crucial: <strong>El Entrenador respeta la autonom&#237;a de decisi&#243;n del PM, pero no respeta la vaguedad.</strong> Si decides ignorar el feedback del Entrenador, puedes hacerlo. Pero hazlo con los ojos abiertos, sabiendo exactamente d&#243;nde est&#225; el riesgo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!za5w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!za5w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 424w, https://substackcdn.com/image/fetch/$s_!za5w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 848w, https://substackcdn.com/image/fetch/$s_!za5w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 1272w, https://substackcdn.com/image/fetch/$s_!za5w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!za5w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:812525,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/188741917?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!za5w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 424w, https://substackcdn.com/image/fetch/$s_!za5w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 848w, https://substackcdn.com/image/fetch/$s_!za5w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 1272w, https://substackcdn.com/image/fetch/$s_!za5w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8572166-fa99-47f9-abc3-c0701f13c6d5_2904x1518.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>Ejemplo Completo: Reescritura de Una Historia D&#233;bil</h2><p>Vamos a tomar una historia de usuario tal como aparecer&#237;a en un backlog real, y mostrar exactamente c&#243;mo el Entrenador de Calidad la diagnostica y propone una reescritura.</p><h3>Historia Original:</h3><p><em>&#8220;Como usuario de la aplicaci&#243;n de compra, quiero poder ver recomendaciones personalizadas de productos en mi inicio de sesi&#243;n para poder descubrir productos nuevos y aumentar mis compras.&#8221;</em></p><h3>Diagn&#243;stico del Entrenador:</h3><p>Dimensi&#243;n/Puntuaci&#243;n/Observaci&#243;n </p><p>D1: Contexto JTBD 4/10 Hay un problema impl&#237;cito (&#8221;descubrir productos nuevos&#8221;) pero sin evidencia cuantificada. </p><p>D2: Especificidad de Usuario 2/10 &#8221;Usuario de la aplicaci&#243;n de compra&#8221; es extremadamente gen&#233;rico. Hard rule: m&#225;ximo 5 sin especificidad. </p><p>D3: Cambio de Comportamiento 3/10 &#8221;Descubrir productos nuevos&#8221; y &#8220;aumentar mis compras&#8221; son beneficios abstractos. Hard rule: sin cuantificaci&#243;n clara, m&#225;ximo 5. </p><p>D4: Zona de Control 7/10 El equipo controla la recomendaci&#243;n y el display. Mayormente controlable. </p><p>D5: Restricciones de Tiempo 8/10 Sin deadline urgente aparente. Puede desarrollarse con rigor adecuado. </p><p>D6: Experimento Sobrevivible 2/10 No hay hip&#243;tesis expl&#237;cita, no hay plan de validaci&#243;n, no hay m&#233;trica de &#233;xito clara, no hay plan B.</p><p><strong>Puntuaci&#243;n Total: 26/60 (43%)</strong></p><h3>Feedback del Entrenador:</h3><p>&#8220;Esta historia toca un tema leg&#237;timo (personalization aumenta valor), pero est&#225; muy poco especificada. No sabemos qui&#233;n es el usuario exacto, no sabemos en qu&#233; contexto est&#225; usando recomendaciones, y no sabemos c&#243;mo mediremos el &#233;xito. Recomendaci&#243;n: Reformular incluyendo proto-personaje espec&#237;fico, contexto, cambio de comportamiento cuantificado, y m&#233;trica de validaci&#243;n.&#8221;</p><h3>Historia Reescrita (Sugerencia del Entrenador):</h3><p><em>&#8220;Como cliente en categor&#237;a de Frescos que hist&#243;ricamente compra el mismo tipo de productos cada semana (pl&#225;tanos, leche, queso), quiero recibir recomendaciones de nuevos productos en las mismas categor&#237;as al iniciar sesi&#243;n para poder descubrir ofertas o variantes que se alineen con mis preferencias sin incrementar el tiempo de b&#250;squeda. Contexto: Cliente que dedica 8-10 minutos a completar su pedido. Hip&#243;tesis: Mostrar 3-5 recomendaciones de &#8216;tambi&#233;n te pueden gustar&#8217; en la pantalla de inicio aumentar&#225; el AOV (Average Order Value) en al menos 8% en este segmento, sin aumentar el tiempo de compra (permanecer&#225; menos de 12 minutos). M&#233;trica: Comparar AOV grupo test vs. grupo control durante 2 semanas. Plan de validaci&#243;n: 5,000 usuarios en grupo test. Plan B: Si AOV no aumenta en 5 d&#237;as, revertir recomendaciones a grupo de control.&#8221;</em></p><h3>Puntuaci&#243;n de la Historia Reescrita:</h3><p>Dimensi&#243;nPuntuaci&#243;nObservaci&#243;n D1: Contexto JTBD7/10Hay hip&#243;tesis clara, hay segmento de usuario identificado. Falta evidencia de campo, pero es s&#243;lida. D2: Especificidad de Usuario9/10Espec&#237;fico: cliente de Frescos que repite compra semanal. Proto-personaje claro. D3: Cambio de Comportamiento8/10Cuantificado: AOV aumenta 8%. Contexto: sin aumentar tiempo de compra. Claramente medible. D4: Zona de Control8/10Equipo controla recomendaciones y display. AOV es m&#233;trica observable del sistema. D5: Restricciones de Tiempo9/102 semanas de test. Plan de decisi&#243;n claro. No artificial. D6: Experimento Sobrevivible9/10Hip&#243;tesis expl&#237;cita, m&#233;trica de &#233;xito, plan de validaci&#243;n, plan B. Es un experimento real.</p><p><strong>Puntuaci&#243;n Total: 50/60 (83%)</strong></p><div><hr></div><h2>Casos de Uso: Evaluar Historias en Cualquier Momento del Pipeline</h2><p>Lo que hace al Entrenador de Calidad especialmente valioso es que funciona en <strong>m&#250;ltiples puntos del pipeline</strong>, no solo para nuevas historias.</p><h3>Caso 1: Evaluaci&#243;n Temprana (PRD &#8594; Story)</h3><p>Durante la fase de investigaci&#243;n (Art&#237;culos 1-2), el Entrenador puede evaluar los PRDs para asegurar que contienen la evidencia necesaria. Un PRD que no tiene suficiente contexto JTBD para puntuar mayor a 6 en Dimensi&#243;n 1 significa que necesitas m&#225;s investigaci&#243;n antes de escribir historias.</p><h3>Caso 2: Evaluaci&#243;n en Escritura (Story Builder)</h3><p>Mientras escribes historias de usuario (Art&#237;culo 4), el Entrenador proporciona feedback en tiempo real. &#8220;Esta versi&#243;n punt&#250;a 4 en especificidad de usuario. Intenta nombrar el segmento exacto.&#8221;</p><h3>Caso 3: Evaluaci&#243;n en Sprint (Historias Existentes)</h3><p>El Entrenador puede evaluarse directamente desde Jira, incluso historias que fueron escritas sin el framework. Un Product Manager puede correr el Entrenador contra su backlog actual, ver d&#243;nde est&#225;n los problemas, y enfocarse en las historias d&#233;biles para mejoramiento.</p><h3>Caso 4: Benchmarking Entre Equipos</h3><p>Cuando corres el Entrenador contra historias de 12 equipos diferentes, emergen patrones. El equipo de Tienda tiende a ser fuerte en especificidad de usuario pero d&#233;bil en cambio de comportamiento cuantificado. El equipo de Primera Milla tiende a ser fuerte en contexto JTBD pero d&#233;bil en experimento sobrevivible.</p><p>Estos patrones son <strong>datos de coaching.</strong> Permiten que los l&#237;deres de producto identifiquen d&#243;nde entrenar al equipo, qu&#233; hacer diferente, c&#243;mo transferir mejores pr&#225;cticas entre equipos.</p><div><hr></div><h2>La Paradoja de la Consistencia</h2><p>Aqu&#237; est&#225; la paradoja deliciosa del Entrenador de Calidad: <strong>Proporciona consistencia sin requerir rigidez.</strong></p><p>En organizaciones tradicionales, intentas imponer consistencia forzando un est&#225;ndar. &#8220;Todas las historias DEBEN tener este formato.&#8221; El resultado es que las historias son uniformes pero vac&#237;as. Todos cumplen con el checklist. Pero nadie realmente est&#225; pensando.</p><p>El Entrenador hace lo opuesto. Proporciona un sistema de diagn&#243;stico que es lo suficientemente flexible para respetar contextos diferentes, pero lo suficientemente riguroso para garantizar que ciertas debilidades sean transparentes.</p><p>Una historia en Checkout puede priorizar diferente que una en Tienda. Pero ambas responden las mismas preguntas fundamentales: &#191;Qui&#233;n exactamente es el usuario? &#191;Qu&#233; comportamiento espera cambiar? &#191;C&#243;mo validaremos que nuestra hip&#243;tesis fue correcta?</p><p>Porque si estos tres puntos no est&#225;n claros, entonces no es realmente una historia de usuario. Es una tarea t&#233;cnica disfrazada de historia.</p><div><hr></div><h2>La Importancia de &#8220;Especificidad de Usuario&#8221; y &#8220;Cambio de Comportamiento&#8221; como Hard Rules</h2><p>Es importante enfatizar dos de las seis dimensiones porque emergen como los mayores predictores de fracaso en historias de usuario tradicionales.</p><p><strong>Dimensi&#243;n 2 (Especificidad de Usuario):</strong> El cambio de comportamiento observable, medible, requiere un usuario espec&#237;fico. Porque diferentes usuarios tienen diferentes contextos, diferentes limitaciones, diferentes motivaciones. Una historia que dice &#8220;usuario&#8221; en lugar de &#8220;usuario que compra en Frescos dos veces a la semana&#8221; es una historia que no puedes validar experimentalmente. Por eso tiene un hard rule: m&#225;ximo 5 sin especificidad.</p><p><strong>Dimensi&#243;n 3 (Cambio de Comportamiento Cuantificado):</strong> El cambio de comportamiento es lo que distingue entre un feature backlog y una hip&#243;tesis verificable. &#8220;Mejorar la experiencia&#8221; es un feature backlog. &#8220;Reducir el tiempo de b&#250;squeda de 180 segundos a 60 segundos&#8221; es una hip&#243;tesis verificable. Por eso tiene un hard rule: m&#225;ximo 5 sin cuantificaci&#243;n.</p><p>Estos hard rules no son arbitrarios. Son las condiciones m&#237;nimas para que una historia sea experimentable.</p><div><hr></div><h2>Antipatrones en Mercadona Tech: Aprendizajes Espec&#237;ficos</h2><p>En los meses que el Entrenador de Calidad ha estado operacional, hemos visto patrones espec&#237;ficos en c&#243;mo diferentes equipos de Mercadona Tech necesitan mejorar.</p><p><strong>Tienda (Shop):</strong> Tendencia fuerte a cometer antipatr&#243;n #1 (Usuario Fantasma) porque el usuario es &#8220;vendedor&#8221; o &#8220;cliente.&#8221; Necesidad de entrenar en diferenciaci&#243;n de proto-personajes por turno, por antig&#252;edad, por tipo de tienda.</p><p><strong>Primera Milla:</strong> Tendencia a cometer antipatr&#243;n #3 (Historia Falsa) porque a menudo las historias est&#225;n escritas desde la perspectiva del equipo t&#233;cnico en lugar del usuario final (repartidor, cliente, operador de log&#237;stica).</p><p><strong>Ser Humano:</strong> Mezcla de antipatr&#243;n #2 (Beneficio Fantasma) con antipatr&#243;n #6 (Todo es Urgente). Historias frecuentemente bajo presi&#243;n de tiempo, lo que significa menos tiempo para especificar. Necesidad de proteger tiempo de planning.</p><p><strong>Colmena:</strong> Tendencia a antipatr&#243;n #4 (Soluci&#243;n como Necesidad) porque la mayor&#237;a del trabajo es automatizaci&#243;n/reposici&#243;n. Requiere pasos expl&#237;citos para conectar la soluci&#243;n t&#233;cnica con el cambio de comportamiento del usuario humano (reponedor, operador, gestor).</p><p>Estos patrones no son cr&#237;ticos. Son observaciones que permiten coaching espec&#237;fico.</p><div><hr></div><h2>Conclusiones: De la Intuici&#243;n a la Disciplina</h2><p>A lo largo de cinco art&#237;culos de esta serie, hemos construido un framework completo para transformar investigaci&#243;n de usuarios en historias de usuario de alta calidad que act&#250;en como experimentos sobre cambio de comportamiento.</p><p><strong>Primero</strong>, aprendimos a investigar PRDs con rigor cient&#237;fico, usando Mom Test para validar hip&#243;tesis directamente en el campo (Art&#237;culo 1).</p><p><strong>Segundo</strong>, aprendimos a traducir esa investigaci&#243;n en Jobs-to-be-Done, el lens conceptual que nos permite ver el trabajo verdadero que el usuario est&#225; intentando hacer (Art&#237;culo 2).</p><p><strong>Tercero</strong>, aprendimos a hacer puente entre Jobs-to-be-Done y User Stories, manteniendo la especificidad y rigor a trav&#233;s de la transici&#243;n (Art&#237;culo 3).</p><p><strong>Cuarto</strong>, aprendimos a escribir historias de usuario desde cero cuando no tenemos un PRD, usando un proceso conversacional que extrae claridad (Art&#237;culo 4).</p><p><strong>Ahora</strong>, aprendemos a evaluar historias consistentemente usando un sistema que es simult&#225;neamente riguroso y flexible.</p><p>Lo que emerge de estos cinco pasos es una transformaci&#243;n organizacional profunda. <strong>Ya no est&#225;s entregando features basado en intuici&#243;n de PM.</strong> Est&#225;s ejecutando hip&#243;tesis sobre cambio de comportamiento, validadas con evidencia de investigaci&#243;n, escritas con especificidad, evaluadas contra est&#225;ndares claros.</p><p>El Entrenador de Calidad no es un polic&#237;a que rechaza historias d&#233;biles. Es un coach que dice: &#8220;Aqu&#237; est&#225; exactamente d&#243;nde tu historia es d&#233;bil. Aqu&#237; est&#225; lo que necesitas hacer para reforzarla. Tienes la autonom&#237;a de decidir si quieres hacer el esfuerzo.&#8221;</p><p>Algunos equipos lo har&#225;n. Otros usar&#225;n el diagn&#243;stico para tomar decisiones conscientes sobre riesgo. Ambas opciones son v&#225;lidas. Lo que no es v&#225;lido es pretender que una historia vaga es una historia de usuario simplemente porque est&#225; en el backlog.</p><p>En Mercadona Tech, con 12 verticales en paralelo, la diferencia entre intuici&#243;n y disciplina en la calidad de historias de usuario es la diferencia entre ejecutar y ejecutar con confianza.</p><p>El Entrenador de Calidad existe para hacer esa diferencia tangible y medible.</p><div><hr></div><p><strong>Pr&#243;ximo Art&#237;culo (6 de 7):</strong> S&#237;ntesis e Integraci&#243;n &#8212; C&#243;mo todas las piezas del Marco de Historias de Usuario de IA Mercadona trabajan juntas en un workflow real, y c&#243;mo ha cambiado la forma en que Mercadona Tech ejecuta producto.</p>]]></content:encoded></item><item><title><![CDATA[De JTBDs Validados a User Stories: El Arte de No Perder Información (Artículo 4 de 7)]]></title><description><![CDATA[Serie Gemba: AI Mercadona User Story Framework &#8212; Tres marcos integrados para traducir research en stories implementables]]></description><link>https://newsletter.gemba.es/p/de-jtbds-validados-a-user-stories</link><guid isPermaLink="false">https://newsletter.gemba.es/p/de-jtbds-validados-a-user-stories</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 16 Mar 2026 21:43:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Is6n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introducci&#243;n: La Brecha de Traducci&#243;n</h2><p>Imagina este escenario com&#250;n en cualquier equipo de producto: Acabas de terminar una ronda de investigaci&#243;n rigurosa con clientes reales. Tienes notas ricas, videos de sesiones, transcripciones de conversaciones donde los usuarios explicaban exactamente qu&#233; estaban tratando de lograr, cu&#225;ndo lo intentaban, qu&#233; les frustraba y qu&#233; resultados quer&#237;an ver. Los insights est&#225;n ah&#237;, tangibles, cargados de contexto.</p><p>Entonces llega el momento de escribir las user stories para el sprint. Y aqu&#237; es donde sucede algo m&#225;gico y terrible a la vez: toda esa riqueza desaparece.</p><p>Lo que comenz&#243; como &#8220;Una madre que intenta completar su compra mientras sus hijos corren entre los pasillos, y tiene miedo de olvidar items de su lista porque est&#225; distra&#237;da&#8221; se convierte en: &#8220;Como cliente, quiero poder acceder a mi carrito r&#225;pidamente, para completar mi compra.&#8221; El usuario se vuelve gen&#233;rico. El comportamiento cambia desaparece. La frustraci&#243;n emocional se evapora. Los criterios de &#233;xito se vuelven vagos. Y lo peor: el equipo de ingenier&#237;a recibe una descripci&#243;n de una <em>caracter&#237;stica</em> (carrito r&#225;pido), no de un <em>resultado</em> que el usuario necesita lograr.</p><p>Este es el problema central que resuelve el <strong>AI Mercadona User Story Framework</strong> en su segundo acto: convertir research validado en stories estructuradas sin perder informaci&#243;n.</p><p>En este art&#237;culo &#8212;cuarto de una serie de siete sobre c&#243;mo construimos un framework de user stories que honra la research y produce historias implementables&#8212; te mostraremos exactamente c&#243;mo evitar que tu research valiosa se diluya en el camino hacia el backlog.</p><p>Ahora aprender&#225;s tres marcos integrados que, usados juntos, garantizan que nada se pierda en la traducci&#243;n.</p><div><hr></div><h2>Parte 1: Por Qu&#233; la Informaci&#243;n se Pierde en la Traducci&#243;n</h2><p>Antes de mostrar c&#243;mo retener informaci&#243;n, necesitamos entender por qu&#233; desaparece. Hay tres culpables principales.</p><h3>El Culpable 1: La Abstracci&#243;n sin Ra&#237;ces</h3><p>Cuando un PM comienza a escribir una story despu&#233;s de investigaci&#243;n, enfrenta una presi&#243;n cognitiva inmediata: necesita abstraer, generalizar, &#8220;crear una historia que aplique a muchos usuarios.&#8221; Piensa que si escribes sobre Mar&#237;a, una madre espec&#237;fica en Castell&#243;n con dos ni&#241;os, un presupuesto de 40&#8364; y el h&#225;bito de comprar los martes, estar&#225;s siendo demasiado anecd&#243;tica.</p><p>Pero aqu&#237; est&#225; el problema: esa especificidad <em>no es una limitaci&#243;n</em>, es tu mayor activo. Mar&#237;a representa un patr&#243;n. Lo que la hace espec&#237;fica (el contexto de presi&#243;n temporal, la carga cognitiva, el punto de dolor de olvidar items) es exactamente lo que hace su job relevante y observable.</p><p>Cuando el PM &#8220;abstracts away&#8221; estos detalles para crear un &#8220;usuario promedio,&#8221; lo que realmente est&#225; haciendo es desechar informaci&#243;n.El Culpable 2: La Soluci&#243;n Oculta en el Comportamiento</p><p>Muy frecuentemente, lo que comienza como &#8220;el cliente quiere poder completar su compra sin olvidar nada&#8221; es en realidad un job <em>expresado como soluci&#243;n</em>. El cliente nunca dijo &#8220;quiero una lista de favoritos.&#8221; Lo que el cliente dijo fue: &#8220;Me olvido de items. Tengo miedo de llegar a casa y darme cuenta de que falta algo.&#8221;</p><p>El job es &#8220;asegurarme de que tengo todo lo que necesito para alimentar a mi familia esta semana.&#8221; Pero cuando el PM escribe &#8220;quiero una lista de favoritos&#8221; en la story, ha colapsado el job en una caracter&#237;stica.</p><h3>El Culpable 3: Las Dimensiones Ocultas de Motivaci&#243;n</h3><p>Cuando Mar&#237;a dice &#8220;tengo miedo de olvidar algo,&#8221; est&#225; expresando una motivaci&#243;n emocional de seguridad. Cuando dice &#8220;no quiero que mi familia se enfade conmigo por olvidar cosas,&#8221; est&#225; expresando una motivaci&#243;n social. Cuando dice &#8220;necesito ser eficiente porque solo tengo 20 minutos,&#8221; est&#225; expresando una motivaci&#243;n funcional.</p><p>Estas tres dimensiones &#8212;funcional, emocional, social&#8212; determinan completamente qu&#233; experiencia funcionar&#225; para Mar&#237;a. Pero en la story tradicional, todas esas dimensiones se colapsan en una frase gen&#233;rica: &#8220;Como cliente, quiero X para Y.&#8221;</p><div><hr></div><h2>Parte 2: La Trilog&#237;a de Marcos que Detiene la P&#233;rdida</h2><p>El framework de Mercadona resuelve estos tres problemas usando tres marcos integrados. Ninguno funciona solo. Juntos, son pr&#225;cticamente a prueba de &#8220;desvinculaci&#243;n de informaci&#243;n.&#8221;</p><h3>Marco 1: JTBD Reforzado &#8212; El Contenedor de Contexto Completo</h3><p>La versi&#243;n reforzada de Jobs to Be Done que usamos en Mercadona extiende la simple estructura &#8220;cuando X, quiero Y, para Z.&#8221; Una JTBD Reforzada contiene ocho elementos:</p><h4>A. Job Principal (El Qu&#233;)</h4><p>La tarea fundamental que el usuario est&#225; tratando de lograr. Debe ser <em>un job</em>, no una soluci&#243;n. Un job responde &#8220;&#191;Por qu&#233;?&#8221; Un user puede hacer el job de m&#250;ltiples formas.</p><h4>B. Struggle (La Fricci&#243;n Actual)</h4><p>El dolor concreto, espec&#237;fico, frecuentemente expresado en citas literales de investigaci&#243;n. Preserva la intensidad emocional en m&#250;ltiples capas: <strong>Operativa</strong> (&#8221;Me olvido items&#8221;), <strong>Emocional</strong> (&#8221;Me arrepiento&#8221;), <strong>Social</strong> (&#8221;Mi familia me reclama&#8221;), <strong>Contextual</strong> (&#8221;Especialmente cuando estoy con los ni&#241;os&#8221;).</p><h4>C. Trigger (El Cu&#225;ndo)</h4><p>El momento espec&#237;fico en el que el job se vuelve urgente. Determina completamente el contexto de dise&#241;o. El trigger debe ser observable y verificable.</p><h4>D. Outcome (El Resultado Deseado)</h4><p>El estado futuro espec&#237;fico que el usuario quiere ver. Los outcomes deben ser <em>cuantificables</em> o al menos <em>observables</em>.</p><h4>E. Tres Dimensiones de Motivaci&#243;n</h4><p><strong>Motivaci&#243;n Funcional:</strong> &#191;Qu&#233; quiere lograr en t&#233;rminos concretos, medibles?</p><p><strong>Motivaci&#243;n Emocional:</strong> &#191;C&#243;mo quiere <em>sentirse</em>?</p><p><strong>Motivaci&#243;n Social:</strong> &#191;C&#243;mo quiere ser <em>percibida</em>?F. Anxieties y Barriers</p><p>Los obst&#225;culos que previenen que el cambio suceda:</p><ul><li><p><strong>Ansiedad:</strong> &#8220;&#191;Y si la lista se borra?&#8221; &#8220;&#191;Y si el sistema no est&#225; actualizado?&#8221;</p></li><li><p><strong>Barrier operativa:</strong> &#8220;No s&#233; si este producto est&#225; disponible en mi tienda&#8221;</p></li><li><p><strong>Barrier contextual:</strong> &#8220;En el supermercado no tengo WiFi estable&#8221;</p></li></ul><p>Estas ansiedades y barriers no son &#8220;cosas que resolver despu&#233;s.&#8221; Son restricciones del dise&#241;o <em>ahora</em>.</p><h4>G. Validaci&#243;n: Job vs Soluci&#243;n</h4><p>Un elemento metacognitivo. El PM debe verificar continuamente: &#8220;&#191;Es esto realmente un job o una soluci&#243;n?&#8221; Herramienta: &#8220;&#191;Podr&#237;a un usuario lograr esto de m&#250;ltiples formas?&#8221; Si la respuesta es NO, has colapsado la soluci&#243;n en el job.</p><h4>H. Rastreo de Fuente</h4><p>Cada elemento de la JTBD Reforzada debe poder ser trazado hasta la evidencia de research. Cuando alguien cuestiona la story m&#225;s tarde, puedes volver a la fuente.</p><div><hr></div><h3>Marco 2: Wendel Checklist &#8212; Las Cuatro Preguntas Que Revelan si tu Usuario es Real</h3><p>Stephen Wendel identifica cuatro factores cr&#237;ticos que determinan si un usuario <em>realmente</em> har&#225; el cambio de comportamiento que el producto espera.</p><h4>Pregunta 1: &#191;Cu&#225;l es la Experiencia Previa del Usuario?</h4><p>&#191;Ha intentado algo similar antes? &#191;C&#243;mo le fue? Un usuario sin experiencia previa mapeada es una bandera roja.</p><h4>Pregunta 2: &#191;Cu&#225;l es la Relaci&#243;n del Usuario con el Producto Actual?</h4><p>&#191;Usa el producto? &#191;Conf&#237;a en &#233;l? Determinar&#225; la fricci&#243;n de adopci&#243;n.</p><h4>Pregunta 3: &#191;Cu&#225;l es la Motivaci&#243;n Situacional del Usuario?</h4><p>&#191;Qu&#233; sucede en el contexto espec&#237;fico que lo hace <em>ahora</em> motivado a cambiar? La motivaci&#243;n no es est&#225;tica.</p><h4>Pregunta 4: &#191;Cu&#225;l es el Impedimento Actual que Previene el Cambio?</h4><p>&#191;Qu&#233; espec&#237;ficamente est&#225; frenando el cambio <em>ahora</em>? La soluci&#243;n debe dise&#241;arse para superar este impedimento espec&#237;fico.</p><p>Si no puedes responder completamente todas cuatro preguntas para tu usuario, tu story no est&#225; lista.</p><div><hr></div><h3>Marco 3: Behavior Change &#8212; De NOW a NEW</h3><p>&#191;Qu&#233; cambia realmente cuando el usuario interact&#250;a con tu soluci&#243;n? Muchas user stories describen <em>caracter&#237;sticas</em>, no <em>cambios de comportamiento</em>. Un cambio de comportamiento responde: &#191;Qu&#233; estaba haciendo el usuario <em>ahora</em>? &#191;Qu&#233; har&#225; diferente? &#191;Cu&#225;nto cambiar&#225;?</p><h4>Componente A: NOW &#8212; El Comportamiento Actual, Documentado</h4><p>Para Mar&#237;a: &#8220;Cada martes intenta recordar mentalmente qu&#233; necesita comprar. A menudo falla, olvidando items importantes. Para compras grandes, realiza una lista en papel que frecuentemente pierde. El resultado: olvidar alrededor del 15-20% de los items planeados.&#8221; La riqueza est&#225; en la especificidad: qu&#233; intenta, c&#243;mo falla, con qu&#233; frecuencia.</p><h4>Componente B: NEW &#8212; El Comportamiento Deseado</h4><p>NEW debe ser expl&#237;cito sobre <em>qu&#233; comienza, qu&#233; se detiene, qu&#233; cambia</em>.</p><p><strong>START:</strong> Mar&#237;a comienza a usar la app de lista en el contexto del supermercado.</p><p><strong>STOP:</strong> Mar&#237;a deja de intentar memorizar completamente.</p><p><strong>DIFFERENT:</strong> Mar&#237;a cambia su relaci&#243;n con el riesgo de olvidos. De &#8220;es inevitable&#8221; a &#8220;es controlable.&#8221;</p><h4>Componente C: Rangos de Cambio</h4><p><strong>M&#237;nimo (aceptable):</strong> Usa la lista para el 30% de compras. Olvidos se reducen 50%.</p><p><strong>Target (esperado):</strong> Usa la lista para el 70%. Olvidos se reducen 80%.</p><p><strong>Over-top (aspiracional):</strong> Usa la lista para el 90%. Olvidos se reducen 95%.</p><p>Tres niveles porque dise&#241;o es una pr&#225;ctica bajo incertidumbre. Si defines solo &#8220;target,&#8221; cuando obtuviste &#8220;m&#237;nimo,&#8221; tu equipo pensar&#225; que fracas&#243;.</p><div><hr></div><h2>Parte 3: Integrando los Tres Marcos &#8212; De Research a Stories</h2><p>El workflow es: <strong>Input</strong> (JTBD Reforzado + Wendel Checklist + Behavior Change mapeado) &#8594; <strong>Proceso</strong> (PM estructura la informaci&#243;n en Story Format) &#8594; <strong>Output</strong> (Story legible por ingenier&#237;a y dise&#241;o que mantiene toda la riqueza contextual).</p><h3>La Estructura de Story que Retiene Informaci&#243;n</h3><p>Una story creada correctamente tiene esta estructura: EPIC (Job Principal), STORY (Nombre espec&#237;fico del comportamiento), ACCEPTANCE CRITERIA (Given/When/Then con Trigger, NEW behavior y Observable outcome), CONTEXT (Wendel Checklist), MOTIVATIONS (Funcional, Emocional, Social), BARRIERS (Anxieties e impedimentos), EVIDENCE (Rastreo a investigaci&#243;n), SUCCESS METRICS (M&#237;nimo / Target / Over-top).</p><p>Cada elemento del marco aparece en la story. No hay colapso de informaci&#243;n. El equipo de ingenier&#237;a puede leer &#8220;Acceptance Criteria&#8221; y entender exactamente qu&#233; construir. El equipo de dise&#241;o puede leer &#8220;Context&#8221; y entender por qu&#233; el usuario necesita lo que necesita.</p><h3>Ejemplo Concreto: De JTBD a Story</h3><p>Tomando la JTBD de Mar&#237;a (madre de dos ni&#241;os que compra los martes bajo presi&#243;n de tiempo), la story resultante incluye: Epic &#8220;Confidence in Grocery Completeness&#8221;, Story &#8220;Load and Review Favorite List Before Shopping&#8221;, con criterios de aceptaci&#243;n que especifican carga en menos de 2 segundos, funcionalidad offline, persistencia de datos. El contexto incluye su experiencia previa fallida con listas y su relaci&#243;n con la app. Las m&#233;tricas de &#233;xito definen tres niveles: M&#237;nimo (30% adopci&#243;n, 50% reducci&#243;n olvidos), Target (70% adopci&#243;n, 80% reducci&#243;n), Over-top (90% adopci&#243;n, 95% reducci&#243;n).</p><p>La riqueza de informaci&#243;n retenida es total. El equipo de ingenier&#237;a sabe qu&#233; construir. El equipo de dise&#241;o entiende por qu&#233; Mar&#237;a rechazar&#237;a algo complicado. El PM puede explicar por qu&#233; esta story es importante.</p><div><hr></div><h2>Parte 4: Puntuaci&#243;n 6D &#8212; Evaluando la Salud de tu Story</h2><p>No todas las stories son iguales. El framework incluye un sistema de puntuaci&#243;n en seis dimensiones que eval&#250;a la confianza en cada story:</p><h3>Dimensi&#243;n 1: JTBD Context (0-10)</h3><p>&#191;Cu&#225;n rico y espec&#237;fico es el contexto de la JTBD? Stories de investigaci&#243;n real t&#237;picamente punt&#250;an 8-10. Las especulativas punt&#250;an 2-3.</p><h3>Dimensi&#243;n 2: User Specificity (0-10)</h3><p>&#191;Cu&#225;n espec&#237;fico es el usuario? &#191;Puedes describirlo sin decir &#8220;usuario&#8221; o &#8220;cliente&#8221;?</p><h3>Dimensi&#243;n 3: Behavior Change Clarity (0-10)</h3><p>&#191;Cu&#225;n claro es el cambio de comportamiento? &#191;Puedes describir observable NOW vs NEW?</p><h3>Dimensi&#243;n 4: Control Zone (0-10)</h3><p>&#191;Cu&#225;nto de este cambio est&#225; <em>dentro</em> del control de tu producto?</p><h3>Dimensi&#243;n 5: Time Constraints (0-10)</h3><p>&#191;Cu&#225;n bien entiendes las restricciones de tiempo del usuario?</p><h3>Dimensi&#243;n 6: Survivable Experiment (0-10)</h3><p>&#191;Podr&#237;a este cambio ser validado en un experimento peque&#241;o antes de invertir en desarrollo completo?</p><p>La puntuaci&#243;n 6D no es &#8220;bueno si &gt;7.&#8221; Es un diagn&#243;stico. Una story que punt&#250;a 2/10 en Behavior Change Clarity tiene un problema cr&#237;tico. Las stories provenientes de research validado t&#237;picamente punt&#250;an &#8805;7 en las primeras dos dimensiones autom&#225;ticamente.</p><div><hr></div><h2>Parte 5: El Rol de AI en la Traducci&#243;n</h2><p>La IA &#8212;incluyendo sistemas avanzados&#8212; <em>no puede</em> reemplazar research. No puede inventar JTBDs v&#225;lidas. Pero la IA es excepcional en:</p><p><strong>Retener informaci&#243;n sin colapsar:</strong> Puede producir una story estructurada que contiene todos los elementos sin perder densidad de informaci&#243;n.</p><p><strong>Verificar completitud:</strong> Puede preguntar &#8220;&#191;respondiste todas las preguntas de Wendel?&#8221; y rechazar una story incompleta.</p><p><strong>Generar variantes:</strong> Puede generar m&#250;ltiples versiones de story con diferentes puntos de entrada.</p><p><strong>Puntuaci&#243;n 6D honesta:</strong> Puede puntuar basado en datos expl&#237;citos, evitando el sesgo humano.</p><p><strong>Rastreo de evidencia:</strong> Manteniendo referencias expl&#237;citas a research original.</p><p>Pero &#8212;y esto es cr&#237;tico&#8212; <strong>El PM todav&#237;a decide.</strong> El framework de Mercadona mantiene el criterio <em>humano</em> en decisiones de producto. La IA mantiene la consistencia y trazabilidad. Juntos, retienen informaci&#243;n sin perder calidad.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Is6n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Is6n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 424w, https://substackcdn.com/image/fetch/$s_!Is6n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 848w, https://substackcdn.com/image/fetch/$s_!Is6n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 1272w, https://substackcdn.com/image/fetch/$s_!Is6n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Is6n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png" width="1456" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:830575,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/188741560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Is6n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 424w, https://substackcdn.com/image/fetch/$s_!Is6n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 848w, https://substackcdn.com/image/fetch/$s_!Is6n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 1272w, https://substackcdn.com/image/fetch/$s_!Is6n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd30de4a1-47e9-47bb-ad7d-1a9f9b23ae9a_2908x1524.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>Conclusiones: S&#237;ntesis de C&#243;mo Retener Informaci&#243;n en la Traducci&#243;n</h2><p><strong>1. El Problema es Real:</strong> Tres fuerzas trabajan contra la retenci&#243;n: la presi&#243;n de abstraer, la tendencia a colapsar el job en una soluci&#243;n, y la omisi&#243;n de dimensiones motivacionales.</p><p><strong>2. JTBD Reforzada es el Contenedor:</strong> Ocho elementos que preservan cada aspecto cr&#237;tico de la investigaci&#243;n. La clave est&#225; en la especificidad.</p><p><strong>3. Wendel Checklist Revela si tu Usuario es Real:</strong> Cuatro preguntas que convierten un usuario abstracto en uno concreto cuyas decisiones puedes predecir.</p><p><strong>4. Behavior Change Especifica el Qu&#233; Cambia:</strong> Observable NOW vs NEW, con rangos m&#237;nimo/target/over-top.</p><p><strong>5. La Story Estructurada Retiene Todo:</strong> Epic &gt; Story &gt; Acceptance Criteria &gt; Context &gt; Motivations &gt; Barriers &gt; Evidence &gt; Metrics.</p><p><strong>6. Puntuaci&#243;n 6D es Diagn&#243;stico, No Veredicto:</strong> Seis dimensiones que revelan d&#243;nde est&#225; incompleta una story.</p><p><strong>7. La IA Retiene, El Humano Decide:</strong> El rol de IA es mantener informaci&#243;n. El rol del PM es investigar y elegir.</p><p><strong>8. Honestidad Sobre Gaps:</strong> Un gap documentado es una oportunidad. Un gap no documentado es una bomba de tiempo.</p><div><hr></div><h2>Reflexi&#243;n Final: De Donde Venimos, Hacia Donde Vamos</h2><p>Si has le&#237;do los art&#237;culos 1, 2, 3 y este art&#237;culo 4, has recorrido un camino completo de research a product:</p><ul><li><p><strong>Art&#237;culo 1:</strong> Identificaste un DAPP rico en contexto de negocio</p></li><li><p><strong>Art&#237;culo 2:</strong> Investigaste ese problema con metodolog&#237;a rigurosa</p></li><li><p><strong>Art&#237;culo 3:</strong> Validaste que hab&#237;as encontrado Jobs verdaderos, no soluciones disfrazadas</p></li><li><p><strong>Art&#237;culo 4 (este):</strong> Tradujiste esos jobs en stories que retienen toda la informaci&#243;n</p></li></ul><p>Quedan tres art&#237;culos m&#225;s: Art&#237;culo 5 sobre el Quality Coach para evaluar calidad de stories, Art&#237;culo 6 sobre Story Splitting para descomponer stories grandes, y Art&#237;culo 7 sobre el Story Builder conversacional.</p><p>Por ahora, la lecci&#243;n es simple: <em>La informaci&#243;n que pierdes en la traducci&#243;n de research a story no se recupera despu&#233;s.</em> Construye tus stories con estructura suficiente para retenerla. Integra los tres marcos. Punt&#250;a honestamente. Y mant&#233;n el rastreo a las fuentes.</p><p>Tus usuarios &#8212;y tu equipo&#8212; lo agradecer&#225;n cuando las stories sean tan ricas en contexto que el desarrollo se vuelve claramente identificado hacia el outcome real, no hacia una caracter&#237;stica gen&#233;rica.</p><div><hr></div><p><em>Este art&#237;culo es parte de la serie &#8220;Gemba&#8221; sobre el &#8220;AI Mercadona User Story Framework&#8221;. Pr&#243;ximo art&#237;culo: &#8220;Quality Coach: Evaluando la Calidad de tus User Stories.&#8221;</em></p><p><strong>&#218;ltima actualizaci&#243;n:</strong> Febrero 21, 2026</p>]]></content:encoded></item><item><title><![CDATA[Research Mom Test: Validación de Problemas contra la Realidad del Campo (Artículo 3 de 7)]]></title><description><![CDATA[Serie Gemba: AI Mercadona User Story Framework &#8212; De PRDs validados a JTBDs con evidencia real]]></description><link>https://newsletter.gemba.es/p/research-mom-test-validacion-de-problemas</link><guid isPermaLink="false">https://newsletter.gemba.es/p/research-mom-test-validacion-de-problemas</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 09 Mar 2026 07:30:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QLKG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introducci&#243;n: El Abismo entre lo que Creemos Saber y lo que Realmente Sucede</h2><p>Existe un momento cr&#237;tico en el viaje de cualquier producto digital: el instante justo despu&#233;s de haber finalizado un Documento de Requerimientos de Producto (PRD). El equipo siente la satisfacci&#243;n de haber articulado claramente qu&#233; se va a construir, por qu&#233;, y cu&#225;l ser&#225; el impacto. Los n&#250;meros est&#225;n en la hoja de c&#225;lculo. Las m&#233;tricas de &#233;xito definidas. Los casos de uso mapeados.</p><p>Pero hay un problema silencioso: <strong>el PRD describe el problema desde la perspectiva del negocio, pero las mejores historias de usuario se construyen desde la perspectiva del usuario</strong>. Entre esos dos universos existe un abismo lleno de suposiciones no cuestionadas, contextos incompletos, y comportamientos que nadie ha observado realmente.</p><p>En el art&#237;culo anterior exploramos c&#243;mo <strong>Quality Guard</strong> verifica que el PRD contenga informaci&#243;n suficiente y separada (problema vs. soluci&#243;n) para que el producto pueda dise&#241;ar bien. Pero ahora nos enfrentamos a la pregunta siguiente: <em>&#191;Es ese problema realmente lo que el usuario experimenta?</em></p><p>Esta es la pieza que introduce <strong>Research Mom Test</strong>, el tercer m&#243;dulo del AI Mercadona User Story Framework.</p><div><hr></div><h2>El Mom Test: La Filosof&#237;a de la Investigaci&#243;n Honesta</h2><p>El nombre &#8220;Mom Test&#8221; viene de un concepto acreditado a Rob Fitzpatrick en su libro del mismo nombre. La idea es devastadoramente simple: <strong>si le preguntas a tu madre si tu idea de negocio es buena, te dir&#225; que s&#237;, porque te quiere</strong>. No porque la idea sea buena.</p><p>El Mom Test propone que las preguntas de investigaci&#243;n deben dise&#241;arse para que <strong>incluso tu madre no pueda darte una respuesta falsa</strong>. Esto se logra evitando tres tipos de preguntas t&#243;xicas:</p><p><strong>Preguntas t&#243;xicas que Mom Test proh&#237;be:</strong></p><ul><li><p><strong>Preguntas de opini&#243;n</strong>: &#8220;&#191;Te gustar&#237;a...?&#8221;, &#8220;&#191;Qu&#233; opinas de...?&#8221;, &#8220;&#191;Ser&#237;a &#250;til si...?&#8221;</p></li><li><p><strong>Preguntas hipot&#233;ticas</strong>: &#8220;&#191;Usar&#237;as X si existiera?&#8221;, &#8220;&#191;Cu&#225;nto pagar&#237;as por...?&#8221;, &#8220;&#191;Cambiar&#237;as tu proceso si...?&#8221;</p></li><li><p><strong>Preguntas dirigidas</strong>: &#8220;&#191;No crees que ser&#237;a mejor si...?&#8221;, &#8220;&#191;El problema principal es X, verdad?&#8221;</p></li></ul><p>En su lugar, Mom Test exige preguntas sobre <strong>comportamiento real, pasado, observable</strong>:</p><ul><li><p>&#8220;Cu&#233;ntame la &#250;ltima vez que hiciste X. &#191;Qu&#233; pas&#243;?&#8221;</p></li><li><p>&#8220;&#191;Qu&#233; hiciste cuando ocurri&#243; Y?&#8221;</p></li><li><p>&#8220;&#191;C&#243;mo resuelves Z actualmente?&#8221;</p></li><li><p>&#8220;&#191;Cu&#225;nto tiempo te lleva?&#8221;</p></li><li><p>&#8220;&#191;Qu&#233; intentaste antes de hacer lo que haces ahora?&#8221;</p></li></ul><p>La clave es que estas preguntas revelan comportamiento real, no intenci&#243;n declarada. Y en Mercadona, donde cada cambio de proceso en un almac&#233;n puede impactar a 1,800 empleados, la diferencia entre intenci&#243;n declarada y comportamiento real puede costar millones.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QLKG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QLKG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 424w, https://substackcdn.com/image/fetch/$s_!QLKG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 848w, https://substackcdn.com/image/fetch/$s_!QLKG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 1272w, https://substackcdn.com/image/fetch/$s_!QLKG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QLKG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:839704,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/188740445?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QLKG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 424w, https://substackcdn.com/image/fetch/$s_!QLKG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 848w, https://substackcdn.com/image/fetch/$s_!QLKG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 1272w, https://substackcdn.com/image/fetch/$s_!QLKG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff146de10-c2d6-4af0-abab-a2055f1bcd6c_2892x1514.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>C&#243;mo Research Mom Test Transforma PRDs en Investigaci&#243;n de Campo</h2><p>En el AI Mercadona User Story Framework, Research Mom Test recibe un PRD que ha pasado Quality Guard. El PRD contiene: m&#233;tricas baseline y target, proceso AS-IS y TO-BE, actores y handoffs, y un problema limpio sin contaminaci&#243;n de soluci&#243;n.</p><p>Research Mom Test analiza este PRD y genera autom&#225;ticamente:</p><p><strong>1. Gap Detection (Detecci&#243;n de Huecos):</strong> Identifica qu&#233; informaci&#243;n falta en el PRD para poder construir buenas historias de usuario. Busca: suposiciones no validadas, comportamientos asumidos pero no observados, actores mencionados pero no entrevistados, m&#233;tricas que dependen de datos no recopilados, y procesos descritos te&#243;ricamente pero no verificados en campo.</p><p><strong>2. Gu&#237;a de Entrevistas Mom Test:</strong> Para cada gap detectado, genera preguntas de entrevista que cumplen estrictamente Mom Test. No preguntas de opini&#243;n. No hipot&#233;ticas. Solo preguntas sobre comportamiento real, pasado, observable.</p><p><strong>3. Jobs-to-be-Done (JTBD) Reforzado:</strong> Despu&#233;s de las entrevistas, Research Mom Test procesa las notas y genera JTBDs enriquecidos con evidencia real: citas directas, patrones observados, frecuencia, contexto emocional.</p><div><hr></div><h2>Gap Detection: Encontrar lo que No Sabemos que No Sabemos</h2><p>La parte m&#225;s valiosa de Research Mom Test es su capacidad para detectar huecos en el conocimiento. Hay tres categor&#237;as:</p><p><strong>Gaps de Proceso Funcional (PF):</strong> Informaci&#243;n faltante sobre c&#243;mo funciona el proceso actual. Ejemplo: el PRD dice que &#8220;recepcionistas procesan pallets&#8221; pero no dice cu&#225;ntos pallets por turno, cu&#225;nto dura cada procesamiento, o qu&#233; pasa cuando hay 3 camiones simult&#225;neos.</p><p><strong>Gaps de Inventario de Secciones (PI):</strong> Informaci&#243;n faltante sobre las secciones o &#225;reas afectadas. Ejemplo: el PRD menciona &#8220;almac&#233;n&#8221; pero no especifica si aplica a refrigerados, secos, congelados, o todos. Cada secci&#243;n puede tener flujos diferentes.</p><p><strong>Gaps de Contexto de Usuario:</strong> Falta de comprensi&#243;n sobre c&#243;mo los usuarios realmente interact&#250;an con el proceso. Qu&#233; workarounds usan, qu&#233; frustraciones tienen, qu&#233; han intentado antes.</p><div><hr></div><h2>La Gu&#237;a de Entrevistas: Preguntas que Revelan Verdad</h2><p>Para cada gap detectado, Research Mom Test genera preguntas de entrevista espec&#237;ficas. Un ejemplo real del almac&#233;n de Lleida:</p><p><strong>Gap detectado:</strong> &#8220;El PRD asume que las discrepancias en recepci&#243;n son un problema grave, pero no sabemos con qu&#233; frecuencia ocurren realmente, ni c&#243;mo las resuelven los recepcionistas.&#8221;</p><p><strong>Preguntas Mom Test generadas:</strong></p><ul><li><p>&#8220;Cu&#233;ntame sobre la &#250;ltima vez que recibiste un pallet con algo diferente a lo esperado. &#191;Qu&#233; pas&#243; exactamente?&#8221;</p></li><li><p>&#8220;&#191;C&#243;mo supiste que hab&#237;a una discrepancia? &#191;Qu&#233; hiciste despu&#233;s?&#8221;</p></li><li><p>&#8220;&#191;Cu&#225;ntas veces esta semana te pas&#243; algo as&#237;? &#191;Es t&#237;pico?&#8221;</p></li><li><p>&#8220;Cuando encontraste la discrepancia, &#191;a qui&#233;n le avisaste? &#191;Cu&#225;nto tard&#243; en resolverse?&#8221;</p></li><li><p>&#8220;&#191;Alguna vez inventaste una forma de resolver esto m&#225;s r&#225;pido por tu cuenta? Cu&#233;ntame.&#8221;</p></li></ul><p>Estas preguntas no preguntan &#8220;te gustar&#237;a un sistema mejor&#8221;. Preguntan &#8220;qu&#233; haces hoy&#8221;. La diferencia es fundamental.</p><p>Research Mom Test tambi&#233;n genera preguntas para cada rol diferente. Para el recepcionista, para el analista de almac&#233;n, para el supervisor, para el operador log&#237;stico. Cada uno ve el proceso desde un &#225;ngulo diferente.</p><div><hr></div><h2>JTBD Reforzado: Jobs-to-be-Done con Evidencia Real</h2><p>Despu&#233;s de las entrevistas, llega el momento m&#225;s transformador: convertir las respuestas en <strong>Jobs-to-be-Done</strong> enriquecidos con evidencia.</p><p>Un JTBD tradicional dice: <em>&#8220;Cuando [situaci&#243;n], quiero [motivaci&#243;n], para poder [resultado esperado].&#8221;</em></p><p>Un JTBD Reforzado en nuestro framework a&#241;ade capas cr&#237;ticas:</p><ul><li><p><strong>Funcional:</strong> &#191;Qu&#233; tarea espec&#237;fica necesita completar?</p></li><li><p><strong>Emocional personal:</strong> &#191;C&#243;mo quiere sentirse durante y despu&#233;s?</p></li><li><p><strong>Emocional social:</strong> &#191;C&#243;mo quiere ser percibido por colegas/supervisores?</p></li><li><p><strong>Cambio de comportamiento:</strong> &#191;Qu&#233; deber&#237;a empezar (START), dejar de hacer (STOP), o hacer diferente (DIFFERENT)?</p></li><li><p><strong>Evidencia de entrevista:</strong> Citas directas y observaciones que soportan cada JTBD</p></li></ul><p>Ejemplo real del almac&#233;n de Lleida:</p><p><strong>JTBD Funcional:</strong> <em>&#8220;Cuando recibo un pallet con discrepancias, necesito poder registrar la diferencia y obtener una decisi&#243;n inmediata sobre qu&#233; hacer con los items sobrantes o faltantes, para no tener que parar mi flujo de trabajo esperando al analista.&#8221;</em></p><p><strong>JTBD Emocional Personal:</strong> <em>&#8220;Quiero sentir que tengo control sobre mi zona de trabajo y que puedo resolver problemas sin depender de otra persona que a veces no est&#225; disponible.&#8221;</em></p><p><strong>JTBD Emocional Social:</strong> <em>&#8220;Quiero que mi supervisor vea que manejo discrepancias de forma profesional y r&#225;pida, sin generar colas en el muelle.&#8221;</em></p><p><strong>Evidencia:</strong> 3 de 5 recepcionistas entrevistados mencionaron esperar entre 15-45 min al analista. Uno dijo: &#8220;A veces resuelvo yo solo porque ya s&#233; lo que hay que hacer, pero despu&#233;s me reganan por no seguir el proceso.&#8221;</p><div><hr></div><h2>Dos Modos de Operaci&#243;n: Discover y Validate</h2><p>Research Mom Test opera en dos modos seg&#250;n el estado del PRD:</p><p><strong>Modo Discover:</strong> Cuando el PRD tiene gaps significativos. La investigaci&#243;n es exploratoria. Se busca entender el territorio completo. Preguntas abiertas, observaci&#243;n en campo, seguimiento de workarounds. Resultado: mapa completo de JTBDs con evidencia.</p><p><strong>Modo Validate:</strong> Cuando el PRD est&#225; bastante completo pero necesita confirmaci&#243;n. La investigaci&#243;n es confirmatoria. Se busca validar que lo que asumimos es correcto. Preguntas m&#225;s espec&#237;ficas, verificaci&#243;n de hip&#243;tesis. Resultado: JTBDs confirmados o corregidos.</p><p>En ambos modos, Research Mom Test SIEMPRE se ejecuta. No hay camino del PRD a las historias de usuario que no pase por investigaci&#243;n de campo. Es un principio no negociable del framework.</p><div><hr></div><h2>El Wendel Checklist: Validando Cambio de Comportamiento</h2><p>Una innovaci&#243;n importante de nuestro framework es integrar el <strong>Wendel Checklist</strong> (inspirado en los principios de dise&#241;o conductual de Stephen Wendel) en la validaci&#243;n de JTBDs.</p><p>La idea: cada JTBD implica un <strong>cambio de comportamiento</strong>. Si queremos que el recepcionista registre discrepancias en tiempo real en lugar de en papel, estamos pidiendo un cambio de h&#225;bito. Y los cambios de h&#225;bito fallan si no se dise&#241;an bien.</p><p>El Wendel Checklist verifica cinco condiciones para cada JTBD:</p><ol><li><p><strong>CUE (Se&#241;al):</strong> &#191;Hay un momento claro que dispara la acci&#243;n? Si el recepcionista no sabe CU&#193;NDO usar el nuevo sistema, no lo usar&#225;.</p></li><li><p><strong>REACTION (Reacci&#243;n):</strong> &#191;La reacci&#243;n instintiva es positiva? Si el sistema parece complicado, el recepcionista volver&#225; al papel.</p></li><li><p><strong>EVALUATION (Evaluaci&#243;n):</strong> &#191;El usuario ve el beneficio inmediato? Si el beneficio es &#8220;mejor para la empresa&#8221; pero no &#8220;mejor para m&#237;&#8221;, la adopci&#243;n ser&#225; baja.</p></li><li><p><strong>ABILITY (Capacidad):</strong> &#191;El usuario PUEDE hacerlo? Si necesita 3 manos (una para el pallet, una para el papel, una para el dispositivo), no es factible.</p></li><li><p><strong>TIMING (Momento):</strong> &#191;Es el momento adecuado? Si el recepcionista tiene 5 camiones esperando, no va a pararse a aprender un sistema nuevo.</p></li></ol><p>Cada JTBD que sale de Research Mom Test se eval&#250;a contra estas cinco condiciones. Si alguna falla, el JTBD necesita ajuste antes de convertirse en historia de usuario.</p><div><hr></div><h2>El Poder del Comportamiento START/STOP/DIFFERENT</h2><p>Research Mom Test introduce una clasificaci&#243;n de cambio de comportamiento para cada JTBD:</p><ul><li><p><strong>START:</strong> Algo que el usuario NO hace hoy y deber&#237;a empezar. Ejemplo: registrar discrepancias digitalmente.</p></li><li><p><strong>STOP:</strong> Algo que el usuario hace hoy y deber&#237;a dejar. Ejemplo: anotar en papel, esperar al analista.</p></li><li><p><strong>DIFFERENT:</strong> Algo que el usuario hace hoy pero de forma diferente. Ejemplo: comunicar discrepancias por radio en vez de caminando.</p></li></ul><p>Los cambios STOP son los m&#225;s dif&#237;ciles. Dejar de hacer algo que funciona (aunque sea ineficiente) requiere que la alternativa sea significativamente mejor. Los cambios START son los m&#225;s riesgosos. A&#241;adir un nuevo paso a un proceso ya cargado genera resistencia. Los cambios DIFFERENT son los m&#225;s f&#225;ciles de adoptar. El h&#225;bito ya existe; solo cambia la herramienta.</p><div><hr></div><h2>Conclusiones: La Investigaci&#243;n como Puente entre Negocio y Usuario</h2><p>Research Mom Test es el puente que conecta la claridad del PRD con la realidad del campo. Sin &#233;l, las historias de usuario se construyen sobre suposiciones. Con &#233;l, se construyen sobre evidencia.</p><p>Aprendizajes clave de este art&#237;culo:</p><p><strong>El Mom Test es no negociable:</strong> No preguntar opiniones. No preguntar hip&#243;tesis. Solo comportamiento real, pasado, observable.</p><p><strong>Gap Detection antes de entrevistar:</strong> Saber qu&#233; no sabemos antes de ir al campo es la mitad del trabajo.</p><p><strong>JTBD Reforzado:</strong> Funcional + Emocional Personal + Emocional Social + Cambio de Comportamiento + Evidencia. No solo &#8220;qu&#233; quiere hacer&#8221; sino &#8220;c&#243;mo quiere sentirse&#8221; y &#8220;c&#243;mo quiere ser visto&#8221;.</p><p><strong>Wendel Checklist:</strong> Cada JTBD implica un cambio de comportamiento. Si no pasa las 5 condiciones (Cue, Reaction, Evaluation, Ability, Timing), la historia de usuario que salga de ah&#237; fracasar&#225; en adopci&#243;n.</p><p><strong>START/STOP/DIFFERENT:</strong> Clasificar el cambio de comportamiento para saber d&#243;nde est&#225; el riesgo de adopci&#243;n.</p><p>En Mercadona, donde cada cambio impacta a miles de personas en cientos de ubicaciones, esta rigurosidad no es un lujo. Es una necesidad. La diferencia entre un producto exitoso y un producto abandonado a menudo no est&#225; en la calidad del c&#243;digo, sino en la calidad de la investigaci&#243;n que lo precedi&#243;.</p><p>En el pr&#243;ximo art&#237;culo, exploraremos c&#243;mo <strong>JTBD to Stories</strong> toma estos JTBDs reforzados y los transforma en historias de usuario de alta calidad, listas para el equipo de desarrollo.</p><div><hr></div><p><strong>Pr&#243;ximo art&#237;culo:</strong> Art&#237;culo 4 &#8212; &#8220;JTBD to Stories: La Transformaci&#243;n de JTBDs en User Stories de Calidad&#8221;</p><p><em>Serie &#8220;AI Mercadona User Story Framework&#8221; &#8212; Febrero 2026</em></p>]]></content:encoded></item><item><title><![CDATA[Quality Guard: El Portero que Protege al Equipo de los PRDs Incompletos (Artículo 2 de 7)]]></title><description><![CDATA[Serie Gemba: AI Mercadona User Story Framework &#8212; La separaci&#243;n QU&#201;/C&#211;MO como quality gate]]></description><link>https://newsletter.gemba.es/p/quality-guard-el-portero-que-protege</link><guid isPermaLink="false">https://newsletter.gemba.es/p/quality-guard-el-portero-que-protege</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 02 Mar 2026 07:39:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FA5K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introducci&#243;n: Cuando el Problema No Es Problema</h2><p>En el art&#237;culo anterior de esta serie sobre el &#8220;AI Mercadona User Story Framework&#8221;, establecimos la visi&#243;n general: un camino desde el descubrimiento profundo del problema hasta la entrega de historias de usuario que realmente resuelven el negocio. Hablamos de por qu&#233; el descubrimiento importa, de c&#243;mo la mayor&#237;a de los fracasos de producto no vienen de implementar mal la soluci&#243;n, sino de resolver el problema equivocado.</p><p>Hoy nos enfrentamos a una pregunta inc&#243;moda: &#191;c&#243;mo sabemos cu&#225;ndo un problema est&#225; <strong>realmente bien definido</strong>?</p><h2>Introducci&#243;n: Cuando el Problema No Es Problema</h2><p>En el art&#237;culo anterior de esta serie sobre el &#8220;AI Mercadona User Story Framework&#8221;, establecimos la visi&#243;n general: un camino desde el descubrimiento profundo del problema hasta la entrega de historias de usuario que realmente resuelven el negocio. Hablamos de por qu&#233; el descubrimiento importa, de c&#243;mo la mayor&#237;a de los fracasos de producto no vienen de implementar mal la soluci&#243;n, sino de resolver el problema equivocado.</p><p>Hoy nos enfrentamos a una pregunta inc&#243;moda: &#191;c&#243;mo sabemos cu&#225;ndo un problema est&#225; <strong>realmente bien definido</strong>?</p><p>La respuesta que hemos descubierto en Mercadona es que la mayor&#237;a de los equipos no lo saben. Y m&#225;s preocupante a&#250;n: la mayor&#237;a de los PRDs (Documentos de Requisitos de Producto) que llegan a manos de los ingenieros no contienen suficiente informaci&#243;n para que el producto pueda tomar decisiones inteligentes.</p><p>Esto no es culpa de nadie. Es un s&#237;ntoma de una confusi&#243;n estructural que existe en pr&#225;cticamente todas las organizaciones tecnol&#243;gicas: la falta de claridad sobre d&#243;nde termina el trabajo de <strong>entender el problema</strong> (responsabilidad del negocio) y d&#243;nde comienza el trabajo de <strong>dise&#241;ar la soluci&#243;n</strong> (responsabilidad del producto).</p><p>Cuando esos l&#237;mites se difuminan, pasan cosas. Se mezclan responsabilidades. Se empieza a construir sin claridad. Y tres sprints despu&#233;s, descubrimos que nunca entendimos realmente qu&#233; est&#225;bamos tratando de resolver.</p><p>Para evitar eso, necesitamos un guardi&#225;n en la puerta. Alguien (o algo) que diga: <strong>&#8220;Espera. Antes de que el producto comience a dise&#241;ar, verifiquemos que el problema est&#233; realmente bien definido.&#8221;</strong></p><p>Ese guardi&#225;n se llama <strong>Quality Guard</strong>.</p><div><hr></div><h2>El Problema: PRDs que No Son Realmente Especificaciones</h2><p>Imaginemos un escenario t&#237;pico en cualquier equipo de tecnolog&#237;a de Mercadona:</p><p>Un gerente de tienda en Barcelona entra en una reuni&#243;n con el equipo de producto de In-Store. El gerente dice: <em>&#8220;La gente tarda mucho en hacer recuento de inventario. Necesitamos una app que lo haga m&#225;s r&#225;pido.&#8221;</em></p><p>El PM asiente. Suena como un problema leg&#237;timo. El PM escribe un PRD:</p><blockquote><p><em>&#8220;El equipo de In-Store debe desarrollar una herramienta de recuento r&#225;pido que permita a los empleados completar inventarios en la mitad del tiempo actual.&#8221;</em></p></blockquote><p>&#191;Ves el problema? No hay <strong>m&#233;tricas baseline</strong>. &#191;Cu&#225;nto tiempo tarda hoy? &#191;Qu&#233; significa &#8220;la mitad&#8221;? No hay <strong>observaci&#243;n de campo</strong>. &#191;Por qu&#233; tarda tanto? &#191;Es porque el proceso est&#225; mal dise&#241;ado? &#191;Porque hay demasiados SKUs? &#191;Porque la app actual es lenta? No hay <strong>claridad sobre restricciones</strong>. &#191;Pueden trabajar en paralelo? &#191;Necesitan estar online o offline? &#191;Qu&#233; datos son cr&#237;ticos vs. secundarios?</p><p>El PM pasa este PRD al equipo de producto. El equipo de producto comienza a dise&#241;ar una interfaz moderna, optimizada, con sinc autom&#225;tico y dashboards en tiempo real. Bonita. Compleja.</p><p>Diez semanas despu&#233;s, el equipo de In-Store comienza a usar la herramienta. Descubren que el verdadero problema nunca fue la velocidad de la UI, sino que <strong>los recuentos se hacen con dos personas que se comunican verbalmente</strong>, una llamando los SKUs y otra marc&#225;ndolos. La app que se dise&#241;&#243; es para una sola persona. El problema real era: <em>&#191;c&#243;mo hacemos que dos personas puedan trabajar juntas sin perder sincron&#237;a?</em></p><p>Tres semanas de ajustes. Conversaci&#243;n tensa entre producto e In-Store. La pregunta inc&#243;moda: <em>&#8220;&#191;Por qu&#233; no preguntaron esto antes de empezar?&#8221;</em></p><p>La respuesta es sencilla: porque el PRD nunca pidi&#243; que preguntaran. El PRD era un deseo vagamente articulado, no una especificaci&#243;n de un problema.</p><div><hr></div><h2>La Teor&#237;a: Separaci&#243;n Estricta entre QU&#201; y C&#211;MO</h2><p>Para entender por qu&#233; Quality Guard existe, necesitamos primero entender una verdad fundamental sobre c&#243;mo se construye bien en organizaciones maduras:</p><p><strong>La distinci&#243;n entre QU&#201; y C&#211;MO es sagrada.</strong></p><p>El <strong>QU&#201;</strong> es: <em>&#191;Cu&#225;l es el problema que existe en la realidad?</em></p><p>El <strong>C&#211;MO</strong> es: <em>&#191;Cu&#225;l es la mejor soluci&#243;n tecnol&#243;gica para ese problema?</em></p><p>Estos dos espacios tienen due&#241;os diferentes:</p><ul><li><p><strong>El negocio</strong> es responsable de especificar el QU&#201;. El negocio vive en las tiendas, en los almacenes, en los repartos. El negocio conoce los procesos, las restricciones, los usuarios finales, las m&#233;tricas que importan.</p></li><li><p><strong>El producto</strong> es responsable de dise&#241;ar el C&#211;MO. El producto entiende de experiencia, arquitectura, escalabilidad, factibilidad t&#233;cnica.</p></li></ul><p>Cuando estos espacios est&#225;n bien separados, pasan cosas buenas:</p><ol><li><p><strong>El negocio tiene claridad</strong>. Se enfoca en lo que importa: definir el problema, los datos, los actores.</p></li><li><p><strong>El producto tiene libertad</strong>. Puede explorar soluciones creativas sin estar atado a prescripciones del negocio.</p></li><li><p><strong>La comunicaci&#243;n es clara</strong>. Sin l&#237;mites claros, todo se vuelve adivinanzas.</p></li></ol><p>Pero en la mayor&#237;a de las organizaciones, estos espacios se contaminan mutuamente. El negocio pide soluciones espec&#237;ficas (C&#211;MO). El producto asume lo que quiere el negocio (QU&#201;) sin preguntar.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FA5K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FA5K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 424w, https://substackcdn.com/image/fetch/$s_!FA5K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 848w, https://substackcdn.com/image/fetch/$s_!FA5K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 1272w, https://substackcdn.com/image/fetch/$s_!FA5K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FA5K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png" width="1456" height="765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:866015,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/188739669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FA5K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 424w, https://substackcdn.com/image/fetch/$s_!FA5K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 848w, https://substackcdn.com/image/fetch/$s_!FA5K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 1272w, https://substackcdn.com/image/fetch/$s_!FA5K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957b976a-15e0-45fb-9d5f-71ec0070b35d_2878x1512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>Las Tres Dimensiones de Quality Guard</h2><p>Quality Guard eval&#250;a el PRD en <strong>tres dimensiones independientes</strong>. Cada dimensi&#243;n se califica de 0 a 10. El puntaje final es el m&#237;nimo de las tres.</p><h3>Dimensi&#243;n 1: Completitud del Problema</h3><p><strong>Pregunta fundamental:</strong> <em>&#191;Existe suficiente informaci&#243;n cuantitativa y cualitativa para que el producto entienda qu&#233; est&#225; siendo resuelto?</em></p><p>Esta dimensi&#243;n verifica que el PRD contenga <strong>tres tipos de evidencia</strong>:</p><p><strong>1.1. M&#233;tricas cuantitativas con baseline y target</strong></p><p>Un problema sin n&#250;meros no es especificaci&#243;n, es opini&#243;n.Veamos ejemplos malos:</p><ul><li><p>&#10060; <em>&#8220;Los empleados tardan mucho tiempo en hacer recuento de inventario&#8221;</em></p></li><li><p>&#10060; <em>&#8220;Queremos mejorar la experiencia de checkout&#8221;</em></p></li><li><p>&#10060; <em>&#8220;La gente est&#225; frustrada con la app de rutas&#8221;</em></p></li></ul><p>Todas son intuiciones. Ninguna es datos.</p><p>Ejemplos buenos:</p><ul><li><p>&#9989; <em>&#8220;El recuento de inventario toma 3.5 horas hoy (medido en 5 tiendas piloto, Feb 2026). Meta: 2.0 horas. Impacto: 1.5 horas &#215; 50 tiendas &#215; 365 d&#237;as = 27,375 horas/a&#241;o.&#8221;</em></p></li><li><p>&#9989; <em>&#8220;En checkout, el 23% de los carritos que inician no se completan. Baseline: 23% (Oct-Dec 2025). Meta: &lt;15%. Impacto: +180 transacciones/mes en tienda media.&#8221;</em></p></li><li><p>&#9989; <em>&#8220;La app de rutas se usa 8 minutos/sesi&#243;n. Competidor usa 5 minutos. Meta: &lt;4 minutos.&#8221;</em></p></li></ul><p>Los ejemplos buenos tienen: un <strong>estado actual medible</strong> (baseline), un <strong>estado deseado medible</strong> (target), una <strong>unidad de medida clara</strong>, una <strong>muestra o per&#237;odo especificado</strong>, y un <strong>impacto cuantificado</strong>.</p><p><strong>1.2. Observaciones de campo con citas directas</strong></p><p>Los datos sin contexto son n&#250;meros hu&#233;rfanos. Quality Guard busca que el PRD contenga visitas a tiendas o almacenes (Gemba walk), notas verbatim, observaciones de c&#243;mo hacen las cosas hoy, y fricci&#243;n observada.</p><p>Ejemplo malo: <em>&#8220;El sistema de picking genera mucho rechazo entre los colaboradores de almac&#233;n.&#8221;</em></p><p>Ejemplo bueno: <em>&#8220;Durante la Gemba walk del 10 de febrero en el almac&#233;n de Lleida, observamos a 4 preparadores. Uno coment&#243;: &#8216;Esto es un show. Tengo que estar constantemente revisando si el item ya fue preparado&#8217;. Otro: &#8216;Los olvidos pasan porque la bater&#237;a se me muere a mitad de la jornada&#8217;. Observamos que 23 de 80 preparaciones tuvieron pick errors en 2 horas. 18 de esos 23 errores fueron en las &#250;ltimas 2 horas de la jornada, cuando la bater&#237;a se agota.&#8221;</em></p><p><strong>1.3. Impacto claro en personas, procesos, herramientas</strong></p><p>El problema debe conectarse a: &#191;Qui&#233;n sufre? &#191;C&#243;mo sufre? &#191;Qu&#233; herramientas est&#225;n implicadas?</p><p><strong>Scoring Dimensi&#243;n 1:</strong> 9-10: M&#233;tricas baseline y target claras, observaciones de campo recientes, impacto articulado. 7-8: M&#233;tricas parciales, observaciones presentes. 5-6: Datos parciales, impacto vago. 3-4: Alg&#250;n n&#250;mero, sin observaciones. 0-2: Sin m&#233;tricas ni claridad.</p><div><hr></div><h3>Dimensi&#243;n 2: Calidad del Proceso</h3><p><strong>Pregunta fundamental:</strong> <em>&#191;Est&#225; documentado c&#243;mo funciona hoy el proceso? &#191;Y c&#243;mo deber&#237;a funcionar idealmente?</em></p><p>Quality Guard busca dos documentos:</p><p><strong>2.1. Mapa AS-IS</strong> &#8212; C&#243;mo funciona hoy, paso a paso, con todos los actores y herramientas.</p><p><strong>2.2. Mapa TO-BE</strong> &#8212; C&#243;mo deber&#237;a funcionar idealmente, abstrayendo de la tecnolog&#237;a. No dice &#8220;usa app mobile&#8221; sino &#8220;c&#243;mo deber&#237;a ser la experiencia de proceso&#8221;.</p><p><strong>2.3. Actores y Handoffs</strong> &#8212; Qui&#233;nes son, qu&#233; hacen, d&#243;nde est&#225;n, cu&#225;ndo interact&#250;an.</p><p><strong>Scoring Dimensi&#243;n 2:</strong> 9-10: AS-IS detallado, TO-BE idealizado, actores claros. 7-8: AS-IS presente, TO-BE parcial. 5-6: Superficial. 3-4: Vago. 0-2: Sin descripci&#243;n de proceso.</p><div><hr></div><h3>Dimensi&#243;n 3: Separaci&#243;n QU&#201;/C&#211;MO (Contaminaci&#243;n de Soluci&#243;n)</h3><p><strong>Pregunta fundamental:</strong> <em>&#191;Hay pistas de que alguien en el negocio est&#225; prescribiendo la soluci&#243;n en lugar de describir el problema?</em></p><p>Esta es la dimensi&#243;n m&#225;s peligrosa. Cuando el negocio dicta soluciones en el PRD, el producto pierde toda libertad de dise&#241;o.</p><p>Quality Guard detecta <strong>antipatrones de contaminaci&#243;n</strong>:</p><p><strong>Antipattern 1: Jobs-to-be-Done en el PRD</strong> &#8212; Los JTBD son responsabilidad del producto, no del negocio. Malo: <em>&#8220;Los preparadores necesitan visualizar la ruta de picking optimizada en tiempo real para minimizar desplazamiento.&#8221;</em> Bueno: <em>&#8220;El preparador tarda 45 min en completar 80 items en almac&#233;n de 8000 m&#178;. Anda ~2.3 km por ruta (datos GPS). Benchmark: almac&#233;n comparable anda ~1.2 km. Diferencia: 1.1 km &#215; 10 min/km = 11 min/ruta &#215; 8 rutas/d&#237;a = 88 min/d&#237;a/persona. Con 15 preparadores = 22 horas/d&#237;a perdidas.&#8221;</em></p><p><strong>Antipattern 2: Prescripciones t&#233;cnicas</strong> &#8212; &#8220;Usa API REST&#8221;, &#8220;usa blockchain&#8221;, &#8220;usa inteligencia artificial&#8221;. Malo: <em>&#8220;Se requiere integraci&#243;n v&#237;a REST API con SAP para sincronizar inventario en tiempo real.&#8221;</em> Bueno: <em>&#8220;Hoy hay retraso de 4 horas entre preparaci&#243;n de item y reflejo en sistema de inventario. Causa sobreventa: 8-12 devoluciones/d&#237;a. Se necesita actualizaci&#243;n dentro de 15 min del evento.&#8221;</em></p><p><strong>Antipattern 3: Prescripciones de UI/UX</strong> &#8212; &#8220;Necesita un bot&#243;n para...&#8221;, &#8220;La app debe tener...&#8221;. Malo: <em>&#8220;Se requiere pantalla t&#225;ctil de 10 pulgadas en cada posici&#243;n de picking.&#8221;</em> Bueno: <em>&#8220;Hoy los preparadores cometen error en 2.3% de picks (confunden art&#237;culos similares). Con foto de referencia, error baja de 2.3% a 0.6%. El preparador necesita acceso a informaci&#243;n visual clara.&#8221;</em></p><p><strong>Antipattern 4: Lenguaje de soluci&#243;n</strong> &#8212; &#8220;La soluci&#243;n deber&#237;a...&#8221;, &#8220;necesitamos software que...&#8221;. Sin contaminar: <em>&#8220;Cuando una devoluci&#243;n ocurre en campo, el registro toma 6 horas. En 40% de casos, driver re-entrega a almac&#233;n equivocado. Necesitamos informaci&#243;n en punto de devoluci&#243;n inmediatamente.&#8221;</em></p><p><strong>Antipattern 5: Hip&#243;tesis de soluci&#243;n disfrazada de requerimiento</strong> &#8212; <em>&#8220;Reducir n&#250;mero de clics en 50%&#8221;</em> es hip&#243;tesis, no problema. Problema puro: <em>&#8220;40% de usuarios abandonan carrito en paso de pago. 65% abandona despu&#233;s de ver opciones. Flujo actual: 7 pantallas, 45 campos. Benchmark competidor: 3 pantallas, 20 campos.&#8221;</em></p><p><strong>Scoring Dimensi&#243;n 3:</strong> Quality Guard comienza asumiendo 10 puntos. Por cada antipattern: cr&#237;tico (-3), alto (-2), medio (-1).</p><div><hr></div><h2>La Prueba de Herramienta Alternativa</h2><p>Quality Guard usa una t&#233;cnica elegante para detectar contaminaci&#243;n de soluci&#243;n: el <strong>Alternative Tool Test</strong>.</p><p>La idea: si reemplazas la herramienta digital por papel/manual y la descripci&#243;n SIGUE SIENDO V&#193;LIDA, entonces es descripci&#243;n de problema leg&#237;tima. Si la descripci&#243;n se disuelve, era prescripci&#243;n de soluci&#243;n.</p><p>Ejemplo: <em>&#8220;El equipo de recepci&#243;n necesita verificar que lo que llega en el pallet coincide con la orden esperada, y registrar las discrepancias.&#8221;</em> &#191;Sigue siendo v&#225;lido en papel? S&#237;. Totalmente. De hecho, hacerlo en papel es exactamente lo que hac&#237;an antes.</p><p>Ejemplo: <em>&#8220;En tiempo real, cada cambio en la posici&#243;n de preparador debe actualizarse en un mapa.&#8221;</em> &#191;Sigue siendo v&#225;lido? El problema real es &#8220;supervisor necesita visibilidad de ubicaci&#243;n preparadores&#8221;. La versi&#243;n original prescribe &#8220;en tiempo real&#8221; y &#8220;mapa&#8221;, que son detalles de soluci&#243;n.</p><div><hr></div><h2>Los Tres Veredictos</h2><p>Cuando Quality Guard termina de evaluar un PRD, entrega uno de tres veredictos:</p><h3>PASS (&#8805; 7.0)</h3><p>El PRD est&#225; listo. El problema est&#225; bien definido. Las tres dimensiones est&#225;n en buen estado. El producto puede comenzar a dise&#241;ar con confianza.</p><h3>CONDITIONAL (5.0 - 6.99)</h3><p>El PRD est&#225; cerca, pero tiene agujeros espec&#237;ficos. Quality Guard genera un <strong>documento de handoff estructurado</strong> que le dice al negocio exactamente qu&#233; falta. No es un rechazo. Es una gu&#237;a: <em>&#8220;Vuelve, agrega esto, y estaremos listos.&#8221;</em></p><p>Ejemplos: <em>&#8220;M&#233;trica baseline clara pero falta target. &#191;Cu&#225;l es el estado deseado?&#8221;</em>, <em>&#8220;Observaciones de campo de solo 2 personas. Necesitamos 5+ para validar patr&#243;n.&#8221;</em>, <em>&#8220;AS-IS documentado pero TO-BE falta.&#8221;</em></p><h3>FAIL (&lt; 5.0)</h3><p>El PRD est&#225; muy lejos. Falta informaci&#243;n cr&#237;tica o hay tanta contaminaci&#243;n que no se puede confiar en que el problema est&#233; bien entendido. Quality Guard genera un <strong>documento de escalada</strong> con: qu&#233; dimensi&#243;n es m&#225;s d&#233;bil, qu&#233; informaci&#243;n falta, y sugerencia de pr&#243;ximos pasos (Gemba walk, entrevistas, mapping de proceso).</p><div><hr></div><h2>La Filosof&#237;a detr&#225;s de Quality Guard</h2><p><strong>Quality Guard no est&#225; juzgando si el problema es importante.</strong> Lo que verifica es diferente: est&#225; verificando que la informaci&#243;n necesaria para que el producto tome buenas decisiones est&#233; realmente presente.</p><p>Es un check de <strong>integridad de informaci&#243;n</strong>, no de <strong>importancia estrat&#233;gica</strong>.</p><p>Imagine que est&#225; a punto de hacer cirug&#237;a. El cirujano necesita: diagn&#243;stico claro, datos de laboratorio, comparativa, y anatom&#237;a. Si el doctor no tiene eso, no importa cu&#225;nto quiera operar. Podr&#237;a operar en el lugar equivocado.</p><p>Quality Guard es el enfermera que dice: <em>&#8220;Doctor, &#191;tenemos todos los datos que necesita antes de entrar al quir&#243;fano?&#8221;</em></p><div><hr></div><h2>Un Caso Real: Recepci&#243;n en Almac&#233;n de Lleida</h2><p>El equipo de Supply trae un PRD: <em>&#8220;Mejorar eficiencia de recepci&#243;n de merchandise en almacenes mediante modernizaci&#243;n del proceso.&#8221;</em></p><p><strong>An&#225;lisis D1 (Completitud):</strong> No hay m&#233;trica baseline. Dice &#8220;recepci&#243;n lenta&#8221; sin decir qu&#233; tan lenta. Hay nota de una visita a Lleida con una persona. Impacto vago. <strong>Score: 4/10.</strong></p><p><strong>An&#225;lisis D2 (Proceso):</strong> Diagrama vago sin actores ni herramientas. TO-BE falta. Actores mencionados sin claridad. <strong>Score: 3/10.</strong></p><p><strong>An&#225;lisis D3 (Separaci&#243;n):</strong> &#8220;Sistema digital que integre escaneo de c&#243;digo de barras, sincronizaci&#243;n autom&#225;tica con inventario central, y reportes autom&#225;ticos.&#8221; Esto prescribe arquitectura completa sin especificar el problema. <strong>Score: 7/10 (10 - 3 por antipattern cr&#237;tico).</strong></p><p><strong>Score final (m&#237;nimo): 3/10. Veredicto: FAIL.</strong></p><p>Quality Guard genera documento de handoff con qu&#233; falta: datos baseline, observaci&#243;n de campo (Gemba walk 4 horas en Lleida, 20+ recepciones), entrevistas a 5+ recepcionistas, mapeo de proceso AS-IS/TO-BE, y limpieza de prescripciones t&#233;cnicas.</p><p>El equipo de Supply hace la Gemba walk. Descubre: recepci&#243;n toma 12 min/pallet, 1800 pallets/mes = 360 horas/mes. 18% de pallets tienen discrepancias. Investigar discrepancia toma 8 min/pallet en papel + sistema. 4 recepcionistas (turno 6-14h), 1 analista (turno 8-16h) &#8212; recepcionistas esperan al analista. Operador log&#237;stico recibe reporte por email 2 horas despu&#233;s, cuando ya se fue.</p><p>Supply trae PRD v2: D1: 9/10 (m&#233;tricas, observaciones, impacto). D2: 8/10 (AS-IS y TO-BE claros). D3: 8/10 (sin prescripciones). <strong>Score final: 8/10. Veredicto: PASS.</strong></p><div><hr></div><h2>Por Qu&#233; Quality Guard Importa: Separar Descubrimiento de Entrega</h2><p>La idea central de Agile era correcta: no esperes a tener todo especificado, comienza a construir, itera. Pero una generaci&#243;n de gestores lo mal-interpret&#243; como: <em>&#8220;No necesitamos especificaci&#243;n de problemas.&#8221;</em></p><p>Lo que una organizaci&#243;n madura necesita es diferente:</p><p><strong>Fase 1: Descubrimiento</strong> (semanas o meses) &#8212; Negocio entiende el problema profundamente. Producto investiga alternativas. Resultado: PRD que PASS Quality Guard.</p><p><strong>Fase 2: Entrega</strong> (semanas) &#8212; Producto dise&#241;a y construye. Negocio responde preguntas t&#225;cticas. Resultado: incremento completado.</p><p>Quality Guard es el <strong>guardi&#225;n que separa estas dos fases</strong>. Para Mercadona, esto significa: menos sorpresas en sprints, mejor productividad del equipo de producto, y mejor velocidad general. Es una inversi&#243;n de 1-2 semanas extra en descubrimiento para ahorrar 6-8 semanas en re-trabajo.</p><div><hr></div><h2>Conclusiones: El Guardi&#225;n de la Claridad</h2><p><strong>La calidad de un PRD no se mide por cu&#225;nto detalle tiene, sino por cu&#225;nta CLARIDAD tiene sobre el problema, separado de la soluci&#243;n.</strong></p><p>Aprendizajes clave: La separaci&#243;n QU&#201;/C&#211;MO es sagrada. Tres dimensiones de evaluaci&#243;n (Completitud, Proceso, Separaci&#243;n). Tres veredictos claros (PASS, CONDITIONAL, FAIL). El Alternative Tool Test. La filosof&#237;a de integridad de informaci&#243;n. Y el costo de no hacerlo: re-hacer cuesta 6-8 semanas; hacer bien desde el inicio cuesta 1-2 semanas extra.</p><p>La pregunta final: &#191;Cu&#225;l es el costo de comenzar a construir sin saber realmente qu&#233; se est&#225; construyendo? En Mercadona, donde los cambios pueden afectar a 250 puntos de venta y miles de empleados, ese costo es extremadamente alto. Quality Guard existe para reducirlo.</p><p>En el siguiente art&#237;culo de esta serie, exploraremos c&#243;mo <strong>Research Mom Test</strong> toma estos PRDs claros y extrae de ellos las verdaderas necesidades del usuario, contrastadas contra la realidad. Porque &#8220;problema bien definido&#8221; no es lo mismo que &#8220;problema realmente entendido&#8221;.</p><div><hr></div><p><strong>Pr&#243;ximo art&#237;culo:</strong> Art&#237;culo 3 &#8212; &#8220;Research Mom Test: Validaci&#243;n de Problemas contra la Realidad del Campo&#8221;</p><p><em>Serie &#8220;AI Mercadona User Story Framework&#8221; &#8212; Febrero 2026</em></p>]]></content:encoded></item><item><title><![CDATA[El AI Mercadona User Story Framework — Visión General (Artículo 1 de 7)]]></title><description><![CDATA[Serie Gemba: C&#243;mo construimos un framework con IA para transformar PRDs en backlogs de calidad en Mercadona Tech]]></description><link>https://newsletter.gemba.es/p/el-ai-mercadona-user-story-framework</link><guid isPermaLink="false">https://newsletter.gemba.es/p/el-ai-mercadona-user-story-framework</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 23 Feb 2026 07:30:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!m3ZI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Este es el art&#237;culo 1 de 7 en la serie &#8220;Gemba&#8221; sobre el AI Mercadona User Story Framework.</em></p><div><hr></div><h2>Introducci&#243;n: El Dilema del Product Manager en Mercadona Tech</h2><p>En Mercadona Tech, gestionamos doce verticales de producto que cubren pr&#225;cticamente todos los aspectos de la operaci&#243;n de la compa&#241;&#237;a. Desde el checkout y tienda online, pasando por log&#237;stica, flota, almacenes y &#250;ltima milla, hasta sistemas internos de recursos humanos y planificaci&#243;n de ventas. Cada vertical es compleja, con centenares de historias de usuario que fluyen a trav&#233;s del pipeline de desarrollo.</p><p>Los Product Managers de Mercadona enfrentan una paradoja moderna: est&#225;n m&#225;s ocupados escribiendo historias que entendiendo usuarios. El d&#237;a se consume en redactar especificaciones, refinar criterios de aceptaci&#243;n, negociar con ingenier&#237;a sobre el alcance. Pero el verdadero valor del PM&#8212;entender los problemas del negocio, hablar con clientes, detectar oportunidades, tomar decisiones estrat&#233;gicas&#8212;queda relegado a momentos robados entre reuniones.</p><p>Esta realidad nace de un problema estructural. Cada PRD (Product Requirements Document) que llega al equipo de producto requiere una transformaci&#243;n manual: se debe analizar el problema, investigar qu&#233; est&#225; faltando, generar hip&#243;tesis sobre qu&#233; quieren realmente los usuarios, fragmentar ese trabajo en historias peque&#241;as y deployables, evaluar si las historias resultantes son de calidad. Todo esto, antes de que un ingeniero escriba una l&#237;nea de c&#243;digo.</p><p>El resultado es un cuello de botella silencioso. Los sprints no avanzan al ritmo que podr&#237;an. Las historias contienen inconsistencias porque los PMs escriben bajo presi&#243;n. Se descubren gaps fundamentales cuando ingenier&#237;a intenta construir. Los stakeholders esperan con incertidumbre mientras el equipo de producto intenta cumplir.</p><p>Hace aproximadamente seis meses, decidimos experimentar. En lugar de contratar m&#225;s PMs o aceptar que esto era simplemente &#8220;el costo de hacer negocio&#8221;, preguntamos: &#191;Y si pudi&#233;ramos automatizar las partes rutinarias de este proceso? &#191;Y si un sistema de IA pudiera hacer el trabajo mec&#225;nico&#8212;evaluar calidad de PRDs, detectar gaps, dise&#241;ar investigaci&#243;n, escribir borradores de historias&#8212;de modo que nuestros PMs recuperaran tiempo para lo que realmente importa?</p><p>As&#237; naci&#243; el <strong>AI Mercadona User Story Framework</strong>, un sistema inteligente en seis m&#243;dulos dise&#241;ado para asistir a los PMs, no para reemplazarlos. Este marco utiliza t&#233;cnicas avanzadas de investigaci&#243;n de usuarios (Mom Test), Jobs-to-be-Done, patrones de escritura de historias de clase mundial, y scoring dimensional para ayudar a convertir PRDs en backlogs de calidad consistentemente alta.</p><p>Este art&#237;culo presenta la visi&#243;n general del framework, c&#243;mo surgi&#243;, por qu&#233; cada m&#243;dulo existe, y c&#243;mo juntos crean un nuevo modelo de trabajo para el product management. Los siguientes art&#237;culos profundizar&#225;n en cada uno de los seis m&#243;dulos, mostrando ejemplos reales, casos de uso, y c&#243;mo los PMs pueden integrar esta herramienta en su d&#237;a a d&#237;a.</p><div><hr></div><h2>El Problema: La Brecha entre PRD y Backlog de Calidad</h2><p>Antes de entender la soluci&#243;n, es importante clarificar el problema con precisi&#243;n. En Mercadona Tech, cuando un PRD llega al equipo de producto, t&#237;picamente incluye una descripci&#243;n del problema que se quiere resolver, contexto de negocio sobre qu&#233; objetivo estrat&#233;gico respalda este trabajo, algunos requisitos funcionales o puntos de alcance, y a veces un diagrama o flujo de usuario.</p><p>Lo que rara vez incluye es evidencia real de que hemos entendido el problema desde la perspectiva del usuario. No hay investigaci&#243;n con usuarios reales. No hay hip&#243;tesis validadas sobre qu&#233; comportamiento queremos cambiar. No hay descomposici&#243;n clara de lo que es un trabajo deployable versus lo que es demasiado grande para un sprint.</p><p>Los PMs heredan este PRD y comienzan el trabajo de transformaci&#243;n manual. Primero, intentan evaluar si el PRD est&#225; lo suficientemente bien definido para pasar a ingenier&#237;a. Si no, hay que rellenar gaps. Luego, dise&#241;an una investigaci&#243;n informal (a menudo solo conversando con stakeholders, no con usuarios finales). Con esa investigaci&#243;n, generan hip&#243;tesis sobre qu&#233; beneficios buscan los usuarios. A continuaci&#243;n, escriben las historias de usuario, intentando separar el problema (JTBD) de la soluci&#243;n propuesta, asegurarse de que cada historia implique un cambio de comportamiento observable, y que sean lo suficientemente peque&#241;as como para ser completadas en un sprint.</p><p>Finalmente, deben validar que las historias sean de calidad&#8212;que no sean gen&#233;ricas, que tengan criterios de aceptaci&#243;n claros, que sean independientes de otras historias, que no sean demasiado grandes ni demasiado peque&#241;as.</p><p>Este proceso, cuando se hace bien, toma entre 20 y 40 horas de trabajo del PM. Cuando se hace mal&#8212;cosa que ocurre bajo presi&#243;n de tiempo&#8212;resulta en historias que ingenier&#237;a no puede ejecutar, que falta contexto, que tienen criterios de aceptaci&#243;n vagos, o que son tan grandes que requieren subsplitting en el medio del sprint.</p><p>Multiplicado por doce verticales, decenas de PRDs por trimestre, y el hecho de que nuestros mejores PMs son buscados constantemente para opiniones estrat&#233;gicas, el resultado es un sistema cr&#243;nicamente bajo de capacidad para hacer este trabajo bien.</p><div><hr></div><h2>La Hip&#243;tesis: Automatizar lo Rutinario, Liberar el Juicio</h2><p>Nuestra hip&#243;tesis era simple pero radical: la mayor&#237;a de este trabajo no requiere un PM humano. Requiere inteligencia, pero no juicio humano. Un sistema de IA, entrenado en patrones de excelencia en product management, podr&#237;a hacer el 70-80% del trabajo de forma completamente autom&#225;tica, con calidad consistente, eliminando variaci&#243;n y permitiendo que nuestros PMs usen su tiempo para las cosas que realmente requieren juicio: hablar con usuarios, entender el contexto competitivo, tomar decisiones sobre priorizaci&#243;n y trade-offs.</p><p>El concepto central es que un PM moderno no deber&#237;a ser un &#8220;escritor de historias&#8221;. Deber&#237;a ser un &#8220;investigador de problemas y tomador de decisiones&#8221;. La IA puede ser el escriba, el revisor, el detector de inconsistencias. El PM puede ser el l&#237;der que formula preguntas, valida hip&#243;tesis, y aprueba o rechaza las propuestas que la IA genera.</p><p>Para esto, construimos seis m&#243;dulos que juntos forman un pipeline coherente: cada uno tiene una responsabilidad clara, pero todos ellos se retroalimentan. Si el PRD es de mala calidad, el Quality Guard lo detecta temprano. Si la investigaci&#243;n encuentra gaps, se generan preguntas de Mom Test. Si las historias resultantes no son de calidad, el Quality Coach las rechaza. Todo el sistema est&#225; dise&#241;ado para mantener un est&#225;ndar consistente de excelencia.</p><div><hr></div><h2>Los Seis M&#243;dulos: Arquitectura del Framework</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m3ZI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m3ZI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 424w, https://substackcdn.com/image/fetch/$s_!m3ZI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 848w, https://substackcdn.com/image/fetch/$s_!m3ZI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 1272w, https://substackcdn.com/image/fetch/$s_!m3ZI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m3ZI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:920154,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.gemba.es/i/188735621?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!m3ZI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 424w, https://substackcdn.com/image/fetch/$s_!m3ZI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 848w, https://substackcdn.com/image/fetch/$s_!m3ZI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 1272w, https://substackcdn.com/image/fetch/$s_!m3ZI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8f77aee-479d-491f-9123-d4bd06c5a7f1_2888x1524.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>1. Quality Guard: La Frontera de Calidad</h3><p>El primer m&#243;dulo, <strong>Quality Guard</strong>, cumple una funci&#243;n cr&#237;tica: act&#250;a como guardaespaldas de calidad en la frontera entre proceso de producto y equipo de ingenier&#237;a. Su responsabilidad es evaluar si un PRD est&#225; suficientemente bien definido para pasar a trabajar en historias.</p><p>Quality Guard opera bajo la premisa de que es m&#225;s econ&#243;mico rechazar un PRD de baja calidad temprano que invertir decenas de horas de PM en transformarlo. Por eso analiza el PRD en tres dimensiones:</p><p><strong>La dimensi&#243;n de completitud del problema:</strong> Quality Guard verifica que el PRD articule claramente cu&#225;l es el problema que se quiere resolver. No lo que quieres construir, sino el problema real. Detecta PRDs que son meramente descripciones de features sin ra&#237;z en problemas observados. Verifica que hay contexto de por qu&#233; este problema importa, qu&#233; sucede hoy que es insatisfactorio, qui&#233;n sufre ese problema.</p><p><strong>La dimensi&#243;n de calidad SOP:</strong> Mercadona Tech sabe que muchos problemas de producto no son realmente problemas de producto. Son problemas de proceso, de formaci&#243;n, de herramientas. Quality Guard analiza si el PRD confunde un problema de SOP (procedimiento operativo est&#225;ndar) con un problema de producto. Quality Guard detecta estos escenarios y genera un documento de handoff para que el equipo de procesos lo maneje, no el equipo de producto.</p><p><strong>La dimensi&#243;n de separaci&#243;n QU&#201;/C&#211;MO:</strong> Un PRD de calidad articula claramente qu&#233; problema queremos resolver sin prescribir c&#243;mo debe hacerlo. Muchos PRDs incurren en el error de llegar con soluci&#243;n propuesta ya decidida. Quality Guard analiza si hay una separaci&#243;n clara entre el problema y la soluci&#243;n, si se deja espacio para que ingenier&#237;a dise&#241;e c&#243;mo construir esto.</p><p>Cuando Quality Guard rechaza un PRD, no es un rechazo definitivo. Genera un documento de retroalimentaci&#243;n clara indicando qu&#233; falta, qu&#233; est&#225; mezclado, qu&#233; deber&#237;a ser un proyecto de proceso en lugar de producto. Cuando aprueba, le da paso al siguiente m&#243;dulo con una evaluaci&#243;n de riesgos.2. Research &amp; JTBDs: De la Incertidumbre a la Evidencia</p><p>Una vez que Quality Guard aprueba un PRD, comienza el trabajo de <strong>Research &amp; JTBDs</strong> (Jobs-to-be-Done). Este m&#243;dulo tiene dos responsabilidades entrelazadas: primera, detectar qu&#233; falta en nuestro entendimiento del problema; segunda, generar investigaci&#243;n validada que nos diga qu&#233; trabajo necesitan hacer realmente los usuarios.</p><p>El m&#243;dulo comienza analizando el PRD y haciendo la pregunta fundamental: &#191;Qu&#233; asunciones tenemos sobre este problema que a&#250;n no hemos validado? Genera una lista de gaps. Una vez identificados, dise&#241;a un plan de investigaci&#243;n utilizando la metodolog&#237;a Mom Test de Rob Fitzpatrick. El Mom Test ense&#241;a a hacer preguntas que revelan verdades, no soluciones. En lugar de preguntar &#8220;&#191;Te gustar&#237;a un dashboard de combustible?&#8221;, se pregunta &#8220;&#191;Cu&#225;ndo fue la &#250;ltima vez que quisiste saber cu&#225;nto combustible consumiste? &#191;Qu&#233; intentaste hacer? &#191;C&#243;mo lo resolviste?&#8221;</p><p>Con esa evidencia, el m&#243;dulo genera Jobs-to-be-Done estructurados con evidencia real: Job Performer espec&#237;fico, trigger concreto, struggle documentada con citas, outcome deseado, tres dimensiones de motivaci&#243;n (funcional, emocional, social) y ansiedades y barreras.</p><h3>3. JTBD to Stories: La Transformaci&#243;n Estructurada</h3><p>Con JTBDs validados en mano, el m&#243;dulo <strong>JTBD to Stories</strong> se dedica a la transformaci&#243;n estructurada que convierte trabajos deseados en historias de usuario deployables. Aplica tres frameworks integrados: el JTBD Reforzado (con struggle, trigger, outcome y tres dimensiones de motivaci&#243;n), la Wendel Checklist (cuatro preguntas obligatorias sobre experiencia previa, relaci&#243;n con producto, motivaci&#243;n situacional e impedimento actual), y el Cambio de Comportamiento (START/STOP/DIFFERENT con rangos cuantificados).</p><p>Cada historia recibe un scoring de seis dimensiones y el output se estructura en tres niveles: Epic (visi&#243;n estrat&#233;gica), Features (2-5 capacidades) y Stories (implementables en 1-2 sprints) con criterios de aceptaci&#243;n Given-When-Then derivados de comportamientos observados.4. Quality Coach: Evaluador de Excelencia</p><p>Despu&#233;s de que las historias son generadas y refinadas, el m&#243;dulo <strong>Quality Coach</strong> act&#250;a como evaluador de calidad final. Su responsabilidad es asegurar que las historias resultantes no solo sean funcionales, sino que sean de clase mundial. Quality Coach eval&#250;a cada historia contra la m&#233;trica de seis dimensiones, pero tambi&#233;n detecta siete antipatrones comunes: el usuario gen&#233;rico (&#8221;Como usuario quiero...&#8221;), la ausencia de cambio de comportamiento, la historia falsa (tarea t&#233;cnica disfrazada), la soluci&#243;n como necesidad, el entregable fuera de zona de control, el &#8220;todo urgente&#8221;, y el splitting horizontal por capas t&#233;cnicas.</p><p>Para cada story que punt&#250;a bajo, el m&#243;dulo ofrece una versi&#243;n reescrita en formato JTBD. No como imposici&#243;n sino como sugerencia que el PM puede adoptar, adaptar o descartar.</p><h3>5. Story Splitting (Eduardo Ferro): La Descomposici&#243;n Experta</h3><p>El m&#243;dulo <strong>Story Splitting</strong>, basado en la metodolog&#237;a de Eduardo Ferro (@eferro), detecta stories demasiado grandes y las descompone en incrementos que cumplen tres condiciones: ser independientemente valiosos, desplegables por separado y completables en 3 d&#237;as o menos. Aplica nueve heur&#237;sticas de splitting: comenzar por outputs, estrechar segmento, extraer utilidad b&#225;sica, de dummy a din&#225;mico, simplificar outputs, dividir por capacidad, dividir por ejemplo, learning vs earning, y ponerla en muletas.</p><p>La base te&#243;rica es el concepto de &#8220;experimento sobrevivible&#8221;: cada story debe poder fallar sin consecuencias graves. Una regla fundamental: los splits deben ser siempre verticales, nunca horizontales.</p><h3>6. Story Builder: El Asistente Conversacional</h3><p>El sexto m&#243;dulo, <strong>Story Builder</strong>, es un asistente conversacional para PMs que quieren crear historias desde cero, sin partir de un PRD estructurado. Gu&#237;a al PM a trav&#233;s de un di&#225;logo en 6 fases: contexto inicial (con detecci&#243;n de &#8220;trampa de soluci&#243;n&#8221;), descubrir el Job (t&#233;cnica del &#191;Por Qu&#233;?), Wendel Checklist, tres dimensiones del trabajo, cambio de comportamiento cuantificado, y story completa en formato JTBD Reforzado.</p><p>Lo poderoso de Story Builder es que democratiza la escritura de historias y tiene un efecto formativo: despu&#233;s de varias sesiones, los PMs internalizan las preguntas y mejoran su criterio incluso sin la herramienta.</p><div><hr></div><h2>El Coraz&#243;n del Framework: Scoring Dimensional Unificado</h2><p>Corriendo a trav&#233;s de todos los seis m&#243;dulos hay un lenguaje com&#250;n: el scoring dimensional de seis dimensiones. Este es el nervio central que conecta todos los m&#243;dulos y asegura que toda la evaluaci&#243;n de calidad sea coherente.</p><p>Las seis dimensiones son: <strong>Contexto JTBD</strong> (&#191;hay evidencia cualitativa y cuantitativa del problema?), <strong>Especificidad del Usuario</strong> (&#191;responde a las 4 preguntas del Wendel Checklist?), <strong>Cambio de Comportamiento</strong> (&#191;qu&#233; va a hacer el usuario de forma diferente y est&#225; cuantificado?), <strong>Zona de Control</strong> (&#191;el equipo controla el entregable?), <strong>Restricciones Temporales</strong> (&#191;la urgencia es real o artificial?), y <strong>Experimento Sobrevivible</strong> (&#191;qu&#233; pasa si nos equivocamos?).</p><p>Cada dimensi&#243;n se punt&#250;a de 0 a 10. Lo importante es que este scoring no es arbitrario. Est&#225; basado en d&#233;cadas de investigaci&#243;n en product management, en patrones de historias de usuarios extraordinarias, y en lo que hemos aprendido en nuestras propias doce verticales.</p><div><hr></div><h2>Filosof&#237;a: PM Como Investigador y Tomador de Decisiones</h2><p>En el fondo, el AI Mercadona User Story Framework est&#225; basado en una filosof&#237;a sobre qu&#233; debe ser el product management moderno. No creemos que un PM sea un &#8220;escritor de historias&#8221;. Una historia es un artefacto. Lo que importa es el pensamiento que la precede. Los grandes PMs son investigadores de usuarios, descubridores de oportunidades, y tomadores de decisiones bajo incertidumbre.</p><p>Este framework invierte esa relaci&#243;n. Usa IA para hacer el acto de escribir autom&#225;tico, permitiendo que el PM se enfoque en lo que realmente importa: entender el problema. Pasa el 80% de tu tiempo investigando, hablando con usuarios, entendiendo contexto. El 20% que antes gastabas escribiendo historias, ahora &#250;salo para refinar lo que la IA sugiere.</p><div><hr></div><h2>El Futuro: PM + IA, No PM O IA</h2><p>Un PM sin IA disponible est&#225; constantemente bajo presi&#243;n de tiempo. Escribe historias r&#225;pido porque hay muchas. Esas historias terminan siendo gen&#233;ricas, con antipatterns, inconsistentes en calidad. El PM no tiene tiempo de investigar realmente.</p><p>Un PM con IA disponible puede hacer las cosas que realmente importan. Pasar tiempo en Gemba&#8212;ir donde ocurre el trabajo real. Hablar con conductores de flota sobre c&#243;mo toman decisiones. Observar gerentes de almac&#233;n en un cambio de turno. Entender frustraci&#243;n en tiempo real. Luego volver y decir a la IA: &#8220;Esto es lo que vi, genera historias alrededor de estos trabajos deseados.&#8221;</p><p>Hemos visto esto en nuestras primeras implementaciones. Los PMs que han abrazado el framework reportan que dedican 15-20% m&#225;s tiempo a hablar con usuarios. Sus backlogs tienen 40% menos incidentes relacionados con historias mal definidas. Los sprints son m&#225;s predecibles.</p><div><hr></div><h2>Conclusiones: El Viaje Comienza</h2><p>El AI Mercadona User Story Framework no es una soluci&#243;n a un problema de &#8220;escribir historias de usuario&#8221;. Es una soluci&#243;n a un problema mucho m&#225;s profundo: c&#243;mo puede la industria de product management escalar cuando hay m&#225;s complejidad de la que un n&#250;mero finito de PMs puede gestionar.</p><p>Los seis m&#243;dulos trabajando juntos&#8212;Quality Guard asegurando que PRDs sean s&#243;lidos, Research &amp; JTBDs trayendo evidencia de usuario, JTBD to Stories transformando investigaci&#243;n en especificaciones, Quality Coach asegurando excelencia, Story Splitting creando backlogs ejecutables, Story Builder democratizando la creaci&#243;n&#8212;forman un ecosistema coherente de product excellence.</p><p>En los art&#237;culos siguientes de esta serie, exploraremos cada m&#243;dulo en profundidad. Veremos ejemplos reales de c&#243;mo se ve cuando cada m&#243;dulo trabaja. Compartiremos los patrones que hemos codificado, las m&#233;tricas que importan, los casos de uso donde el framework agrega m&#225;s valor.</p><p>El product management en Mercadona Tech est&#225; en transici&#243;n. De un modelo donde PMs son principalmente escritores de historias, a un modelo donde PMs son investigadores respaldados por inteligencia artificial. Mercadona Tech est&#225; en el Gemba de esa transformaci&#243;n. El viaje apenas comienza.</p>]]></content:encoded></item><item><title><![CDATA[Go-To-Market de productos con IA]]></title><description><![CDATA[lanzar algo que a&#250;n est&#225; aprendiendo]]></description><link>https://newsletter.gemba.es/p/go-to-market-de-productos-con-ia</link><guid isPermaLink="false">https://newsletter.gemba.es/p/go-to-market-de-productos-con-ia</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 01 Dec 2025 07:30:43 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/179666488/9952cc6c411d68c06d725d6ca2ca5c6d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>En los productos tradicionales, el lanzamiento es un momento: un antes y un despu&#233;s.</p><p>Una versi&#243;n que pasa de <em>beta</em> a <em>live</em>, una nota de prensa, un &#8220;ya est&#225; disponible&#8221;.</p><p>Pero con los productos impulsados por inteligencia artificial, esa l&#243;gica deja de funcionar. Porque la IA <strong>no termina de lanzarse nunca</strong>. Su valor no est&#225; en el d&#237;a en que se publica, sino en c&#243;mo <strong>aprende y mejora con el tiempo</strong>.</p><p>El Go-To-Market de un producto con IA no es una l&#237;nea de meta, es el inicio de una evoluci&#243;n permanente.</p><div><hr></div><h2><strong>De la foto al proceso</strong></h2><p>Cuando lanzas un producto tradicional, entregas una <strong>promesa cerrada</strong>: esto hace X, cuesta Y, y funciona as&#237;.</p><p>En cambio, al lanzar un producto con IA, entregas una <strong>promesa viva</strong>: esto hoy hace X, pero ma&#241;ana lo har&#225; mejor.</p><p>El problema es que esa promesa viva tambi&#233;n es un riesgo. Porque cuando la mejora depende del aprendizaje del modelo, el usuario puede percibir que el producto a&#250;n no est&#225; &#8220;maduro&#8221;.</p><p>Por eso, los equipos de producto que trabajan con IA tienen que repensar por completo su estrategia de Go-To-Market: no solo c&#243;mo lanzar, sino c&#243;mo <strong>comunicar la evoluci&#243;n</strong>, c&#243;mo <strong>gestionar la incertidumbre </strong>y c&#243;mo <strong>crear confianza en lo imperfecto</strong>.</p><div><hr></div><h2><strong>Un nuevo tipo de lanzamiento</strong></h2><p>Lanzar un producto de IA no se parece a lanzar una app o un SaaS.</p><p>Hay tres grandes diferencias que cambian las reglas del juego:</p><ol><li><p><strong>La versi&#243;n 1.0 nunca es definitiva</strong></p><p>Los modelos necesitan datos reales para mejorar. El producto que se lanza no es &#8220;final&#8221;, sino una base que se entrena con cada usuario.</p></li><li><p><strong>El producto no se comporta igual para todos</strong></p><p>Dos personas pueden tener experiencias completamente distintas. El mensaje deja de ser &#8220;funciona igual para todos&#8221; y pasa a ser &#8220;se adapta a cada uno&#8221;.</p></li><li><p><strong>La propuesta de valor evoluciona en p&#250;blico: </strong></p><p>Los fallos o sesgos del modelo se corrigen con exposici&#243;n real. El Go-To-Market tambi&#233;n es un ejercicio de humildad: reconocer que la versi&#243;n inicial no es perfecta, pero que est&#225; dise&#241;ada para <strong>aprender r&#225;pido</strong>.</p></li></ol><div><hr></div><h2><strong>Caso: el lanzamiento de Copilot</strong></h2><p>Cuando GitHub present&#243; <strong>Copilot</strong>, el producto estaba lejos de ser infalible. A menudo generaba c&#243;digo incorrecto o sugerencias poco &#250;tiles. Pero el equipo fue transparente desde el principio:</p><blockquote><p>&#8220;Copilot no reemplaza al desarrollador; es un asistente que aprende contigo.&#8221;</p></blockquote><p>Esa frase cambi&#243; las reglas del juego. Ya no se esperaba precisi&#243;n absoluta, sino <strong>colaboraci&#243;n progresiva</strong>. El lanzamiento fue un &#233;xito, no porque el modelo fuera perfecto, sino porque se comunic&#243; como un <strong>proceso vivo</strong>, no como un producto acabado.</p><div><hr></div><h2><strong>La comunicaci&#243;n como dise&#241;o</strong></h2><p>En los productos con IA, <strong>comunicar el lanzamiento es parte del dise&#241;o del producto</strong>.</p><p>No es solo marketing, es dise&#241;o de expectativas.</p><p>Tres principios clave:</p><ol><li><p><strong>Comunicar el aprendizaje, no solo la funcionalidad</strong></p><p>El usuario debe entender que el producto <strong>va a mejorar con su uso</strong>.</p><p>Ejemplo: Notion AI muestra claramente &#8220;Esta funci&#243;n aprende de c&#243;mo la usas&#8221;.</p></li><li><p><strong>Mostrar l&#237;mites con transparencia</strong></p><p>&#8220;Puede contener errores&#8221; o &#8220;Generado autom&#225;ticamente&#8221; no restan confianza. La aumentan.</p></li><li><p><strong>Celebrar la mejora continua</strong></p><p>Cada iteraci&#243;n del modelo es parte de la narrativa del producto. &#8220;Ahora entiende mejor el contexto&#8221; no es una nota t&#233;cnica, es una historia de progreso.</p></li></ol><div><hr></div><h2><strong>Estrategias de GTM adaptadas a IA</strong></h2><p>Un Go-To-Market efectivo para productos con IA es <strong>una conversaci&#243;n continua</strong>, no una campa&#241;a puntual.</p><p>Algunas estrategias que est&#225;n funcionando:</p><ul><li><p><strong>Lanzamientos iterativos p&#250;blicos</strong></p><p>Fases progresivas, betas por invitaci&#243;n, comunidades piloto.</p><p>Ejemplo: Midjourney creci&#243; dentro de Discord antes de abrirse al p&#250;blico.</p></li><li><p><strong>Comunidad como canal de mejora</strong></p><p>Los usuarios no son audiencia, son <em>co-entrenadores</em>. Feedback, ejemplos, y sugerencias nutren el modelo.</p></li><li><p><strong>M&#233;tricas narradas</strong></p><p>No basta con decir &#8220;el modelo mejora&#8221;: hay que mostrarlo. Comparativas, ejemplos, cambios visuales. Cada mejora debe sentirse tangible.</p></li><li><p><strong>Feedback como feature</strong></p><p>El bot&#243;n &#8220;Esto fue &#250;til / no fue &#250;til&#8221; es parte del producto, no un elemento decorativo.</p></li></ul><div><hr></div><h2><strong>GTM de productos internos: el cliente es tu propio equipo</strong></h2><p>No todos los productos con IA se lanzan al mercado. Algunos se lanzan <strong>dentro de las propias organizaciones</strong>, para optimizar flujos, automatizar procesos o asistir a equipos internos. Y aqu&#237; el Go-To-Market cambia completamente.</p><p>El reto ya no es captar atenci&#243;n, sino <strong>ganar confianza y adopci&#243;n</strong>. Porque dentro de una empresa, la resistencia al cambio puede ser mayor que fuera.</p><h3><strong>1. Vender la utilidad, no la tecnolog&#237;a</strong></h3><p>Los usuarios internos no quieren saber qu&#233; modelo usas, sino c&#243;mo les ahorra tiempo o errores. La narrativa del GTM debe centrarse en <strong>valor tangible</strong>: tiempo, claridad, reducci&#243;n de carga manual.</p><h3><strong>2. Integrar con lo que ya existe</strong></h3><p>Nadie quiere abrir otra herramienta. El &#233;xito de un GTM interno depende de integrarse en los flujos actuales: Slack, Jira, Notion, correos, dashboards.</p><p>Cuanto m&#225;s invisible, m&#225;s adoptado.</p><h3><strong>3. Apoyarse en embajadores internos</strong></h3><p>Antes que una campa&#241;a, crea una red de <strong>early adopters</strong> dentro del equipo.</p><p>Son los que validan el valor real y ayudan a evangelizar el producto desde dentro.</p><h3><strong>4. Medir adopci&#243;n como aprendizaje, no como &#233;xito</strong></h3><p>Si una feature no se usa, no significa que haya fracasado. Significa que a&#250;n no resolvi&#243; un problema real o que el equipo no la entiende. En IA, el <em>usage gap</em> es feedback, no derrota.</p><h3><strong>5. Comunicar la evoluci&#243;n con transparencia</strong></h3><p>En entornos internos, la comunicaci&#243;n es a&#250;n m&#225;s cr&#237;tica. La confianza se gana mostrando avances concretos: ejemplos de mejora, comparativas, correcciones de errores.</p><p>El mensaje clave: <em>&#8220;esto no es magia, es mejora continua&#8221;</em>.</p><div><hr></div><h2><strong>Gestionar la incertidumbre: el arte de la confianza imperfecta</strong></h2><p>El mayor obst&#225;culo de los productos con IA no es t&#233;cnico: es <strong>psicol&#243;gico</strong>.</p><p>El usuario &#8212;interno o externo&#8212; debe aceptar que el producto est&#225; aprendiendo.</p><p>Y eso solo ocurre si hay <strong>transparencia y coherencia</strong>.</p><p>El caso de ChatGPT lo ilustra bien:</p><blockquote><p>&#8220;El modelo no siempre tiene raz&#243;n, pero siempre est&#225; aprendiendo.&#8221;</p></blockquote><p>Esa frase define una relaci&#243;n basada en confianza imperfecta. Y esa confianza es lo que mantiene al usuario en el ciclo de mejora.</p><div><hr></div><h2><strong>El rol del PM en el Go-To-Market de IA</strong></h2><p>El product manager ya no gestiona un &#8220;d&#237;a de lanzamiento&#8221;. Gestiona un <strong>viaje de aprendizaje compartido</strong>. Su trabajo no termina cuando el producto sale, empieza ah&#237;.</p><p>Debe dise&#241;ar el GTM como una narrativa que evoluciona: c&#243;mo cambia el producto, qu&#233; aprende de los usuarios, y c&#243;mo comunicar cada paso con claridad y coherencia.</p><div><hr></div><h2><strong>El takeaway</strong></h2><p>Los productos impulsados por IA no se lanzan para ser perfectos. Se lanzan para <strong>aprender en p&#250;blico</strong>. El &#233;xito del Go-To-Market no est&#225; en la campa&#241;a ni en el hype, sino en la capacidad de construir <strong>confianza, comunidad y continuidad</strong>.</p><p>En la era de la IA, el lanzamiento no es un evento. Es el comienzo de una conversaci&#243;n entre el producto, el modelo y las personas que lo hacen crecer.</p>]]></content:encoded></item><item><title><![CDATA[El desafío del “control humano”en productos con IA ]]></title><description><![CDATA[dise&#241;ar con la IA, no contra ella]]></description><link>https://newsletter.gemba.es/p/el-desafio-del-control-humanoen-productos</link><guid isPermaLink="false">https://newsletter.gemba.es/p/el-desafio-del-control-humanoen-productos</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 24 Nov 2025 07:30:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/179549840/967eb34f5090ea6959c03929dec29518.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Cada vez que interactuamos con un producto impulsado por inteligencia artificial, hay una pregunta que flota en el aire, aunque no la formulemos:</p><p><strong>&#191;qui&#233;n est&#225; realmente al mando?</strong></p><p>Cuando un algoritmo sugiere una canci&#243;n, completa una frase o elige qu&#233; noticia aparece primero en nuestro feed, parece que seguimos decidiendo nosotros.</p><p>Pero la realidad es m&#225;s ambigua: la IA ya est&#225; influyendo &#8212;sutilmente&#8212; en nuestras decisiones, preferencias y h&#225;bitos.</p><p>Y a medida que los modelos se vuelven m&#225;s sofisticados, el equilibrio entre <strong>asistencia y autonom&#237;a</strong> se vuelve m&#225;s fr&#225;gil.</p><p>El gran reto del dise&#241;o de producto en esta era no es crear sistemas que piensen por nosotros, sino dise&#241;ar <strong>formas de colaboraci&#243;n</strong> donde humanos e inteligencia artificial trabajen juntos sin que uno borre al otro.</p><div><hr></div><h2><strong>De la automatizaci&#243;n al acompa&#241;amiento</strong></h2><p>Durante mucho tiempo, la tecnolog&#237;a se dise&#241;&#243; con un objetivo claro: <strong>automatizar tareas repetitivas</strong>.</p><p>Hacer las cosas m&#225;s r&#225;pido, con menos intervenci&#243;n humana. Pero la IA moderna no se limita a ejecutar; <strong>interpreta</strong>. Analiza contexto, anticipa intenciones, sugiere caminos. Y eso cambia por completo la naturaleza del producto.</p><p>Un ejemplo claro es el salto entre los <strong>pilotos autom&#225;ticos</strong> de los aviones y los <strong>sistemas de conducci&#243;n asistida</strong> de Tesla. El piloto autom&#225;tico sigue reglas claras; el sistema de Tesla &#8220;aprende&#8221; de la experiencia colectiva.</p><p>Ya no obedece, <strong>colabora</strong>.</p><p>Y ese peque&#241;o matiz &#8212;colaborar&#8212; es el que marca el inicio de una nueva era de dise&#241;o de producto: la era del <em>human-in-the-loop</em>.</p><div><hr></div><h2><strong>Qu&#233; significa realmente</strong></h2><h2><strong>human-in-the-loop</strong></h2><p>El t&#233;rmino naci&#243; en entornos industriales y militares, pero hoy es fundamental para dise&#241;ar experiencias con IA.</p><p>Un sistema <em>human-in-the-loop</em> es aquel donde <strong>el humano sigue en el circuito de decisi&#243;n</strong>.</p><p>Supervisa, corrige, ense&#241;a. Y, sobre todo, <strong>puede intervenir antes de que algo salga mal</strong>.</p><p>En otras palabras: no se trata de evitar la automatizaci&#243;n, sino de asegurarse de que <strong>la responsabilidad &#250;ltima</strong> sigue siendo humana.</p><div><hr></div><h2><strong>Tres niveles de intervenci&#243;n humana</strong></h2><p>Podemos pensar en tres niveles donde el usuario participa en un sistema con IA:</p><h3><strong>1. Antes de la decisi&#243;n (human-in-command)</strong></h3><p>El usuario establece los l&#237;mites, los objetivos o las reglas del sistema.</p><p>Por ejemplo, al configurar ChatGPT para responder con un tono profesional o educativo.</p><h3><strong>2. Durante la decisi&#243;n (human-in-the-loop)</strong></h3><p>El usuario colabora en tiempo real con la IA.</p><p>Un dise&#241;ador revisando las propuestas que genera Figma, o un m&#233;dico validando un diagn&#243;stico sugerido por un modelo.</p><h3><strong>3. Despu&#233;s de la decisi&#243;n (human-on-the-loop)</strong></h3><p>El humano no participa directamente, pero supervisa el rendimiento y los resultados del sistema, interviniendo cuando detecta errores o sesgos.</p><p>El desaf&#237;o est&#225; en <strong>elegir el nivel adecuado</strong> para cada contexto: m&#225;s automatizaci&#243;n no siempre significa m&#225;s valor.</p><div><hr></div><h2><strong>Ejemplo: el caso de Duolingo Max</strong></h2><p>Cuando Duolingo introdujo su versi&#243;n con IA generativa &#8212;Duolingo Max&#8212;, la empresa tuvo claro que el sistema deb&#237;a ayudar al usuario a <strong>aprender</strong>, no solo a <strong>acertar</strong>.</p><p>Por eso, en lugar de mostrar simplemente si una respuesta era correcta o no, la IA explica <em>por qu&#233;</em> est&#225; bien o mal.</p><p>El usuario puede pedir una aclaraci&#243;n, repetir la frase, o incluso &#8220;hablar&#8221; con el personaje que la corrigi&#243;.</p><p>Esa interacci&#243;n &#8212;guiada pero abierta&#8212; es <em>human-in-the-loop</em> en estado puro:</p><p>el sistema automatiza la pr&#225;ctica, pero <strong>mantiene al humano en el centro del aprendizaje</strong>.  La magia est&#225; en que la IA <strong>no sustituye al profesor</strong>, sino que amplifica su presencia.</p><div><hr></div><h2><strong>Patrones de dise&#241;o para mantener el control humano</strong></h2><p>Dise&#241;ar productos que equilibren autonom&#237;a y supervisi&#243;n no es f&#225;cil, pero hay patrones que est&#225;n demostrando funcionar:</p><h3><strong>1. El modelo propone, el usuario decide</strong></h3><p>La IA nunca ejecuta sin aprobaci&#243;n.</p><p>Ejemplo: Gmail sugiere respuestas r&#225;pidas, pero t&#250; eliges si las env&#237;as o no.</p><h3><strong>2. Transparencia contextual</strong></h3><p>El usuario debe saber <strong>cu&#225;ndo est&#225; interactuando con una IA </strong>y c&#243;mo esa intervenci&#243;n afecta el resultado.</p><p>Ejemplo: Photoshop ahora etiqueta autom&#225;ticamente las im&#225;genes generadas con IA generativa.</p><h3><strong>3. Correcci&#243;n reversible</strong></h3><p>Todo sistema inteligente debe permitir <strong>deshacer y ense&#241;ar</strong>.</p><p>Cuando corriges una recomendaci&#243;n de Spotify o rechazas una sugerencia de Copilot, no solo ajustas tu experiencia; ayudas al modelo a mejorar.</p><h3><strong>4. Confianza ganada, no asumida</strong></h3><p>La autonom&#237;a no se concede por defecto, se gana con el tiempo.</p><p>Tesla, por ejemplo, exige al conductor mantener las manos en el volante: la automatizaci&#243;n se ampl&#237;a solo si el sistema demuestra fiabilidad.</p><h3><strong>5. Explicabilidad sin fricci&#243;n</strong></h3><p>Los mejores sistemas comunican sus l&#237;mites sin romper la experiencia.</p><p>Un mensaje como &#8220;esta respuesta puede contener errores&#8221; puede parecer trivial, pero genera un efecto psicol&#243;gico de <strong>control y honestidad</strong>.</p><div><hr></div><h2><strong>Cuando la IA se pasa de lista</strong></h2><p>Hay un momento peligroso en todo producto con IA: cuando intenta anticipar demasiado. Pi&#233;nsalo: cuando tu tel&#233;fono corrige una palabra que no quer&#237;as cambiar, cuando un recomendador insiste en ofrecerte algo que ya has rechazado, cuando un sistema &#8220;decide&#8221; por ti con exceso de confianza.</p><p>Ese tipo de automatismo rompe la sensaci&#243;n de control, y lo que era m&#225;gico se convierte en <strong>frustrante</strong>.</p><p>Uno de los mejores ejemplos fue <strong>Microsoft Tay</strong>, el chatbot lanzado en Twitter en 2016.</p><p>Aprend&#237;a de las conversaciones con los usuarios, pero sin filtros ni supervisi&#243;n humana.</p><p>En menos de 24 horas, el sistema empez&#243; a emitir mensajes ofensivos y racistas.</p><p>El experimento fue un fracaso t&#233;cnico, pero una lecci&#243;n de dise&#241;o: <strong>sin control humano, los sistemas aprenden lo peor de nosotros</strong>.</p><div><hr></div><h2><strong>&#201;tica, responsabilidad y producto</strong></h2><p>El <em>human-in-the-loop</em> no es solo una decisi&#243;n de dise&#241;o; es una <strong>posici&#243;n &#233;tica</strong>.</p><p>Porque toda automatizaci&#243;n lleva impl&#237;cita una transferencia de poder.</p><p>Y cada vez que un producto decide por nosotros, le estamos delegando una parte de nuestro juicio.</p><p>El trabajo del PM es asegurarse de que esa delegaci&#243;n sea consciente, reversible y explicable.</p><p>No se trata de desconfiar de la IA, sino de <strong>dise&#241;ar los l&#237;mites de su autonom&#237;a</strong> con criterio y prop&#243;sito.</p><div><hr></div><h2><strong>El takeaway</strong></h2><p>El futuro del dise&#241;o de producto no ser&#225; 100% automatizado, ni 100% humano.</p><p>Ser&#225; <strong>colaborativo</strong>.</p><p>El desaf&#237;o del control humano consiste en construir tecnolog&#237;a que amplifique nuestras capacidades sin apropiarse de ellas.</p><p>&#128073; Dise&#241;ar <em>human-in-the-loop</em> no es frenar la innovaci&#243;n; es darle direcci&#243;n.</p><p>Porque si los humanos salimos del circuito, la inteligencia deja de ser realmente inteligente.</p>]]></content:encoded></item><item><title><![CDATA[La velocidad en el desarrollo de producto en la era de la IA]]></title><description><![CDATA[Qu&#233; cambia en discovery, prototipado y validaci&#243;n cuando puedes generar mockups, tests y hasta PRDs con LLMs]]></description><link>https://newsletter.gemba.es/p/la-velocidad-en-el-desarrollo-de</link><guid isPermaLink="false">https://newsletter.gemba.es/p/la-velocidad-en-el-desarrollo-de</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 17 Nov 2025 07:30:43 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/179068670/0a834e62dc17fde3d304701b036f117f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><strong>&#191;M&#225;s r&#225;pido siempre significa mejor?</strong></p><p>Durante a&#241;os, en los equipos de producto hemos perseguido la velocidad como una virtud en s&#237; misma. La velocidad como s&#237;mbolo de agilidad, de foco, de ejecuci&#243;n. &#8220;Entrega r&#225;pido, aprende r&#225;pido&#8221;.</p><p>Pero de repente, la IA generativa ha cambiado el significado de esa palabra.</p><p>Ahora, &#8220;entregar r&#225;pido&#8221; puede significar algo radicalmente distinto: escribir un prompt, y en segundos tener un PRD, un wireframe o un test de usuario.</p><p>El cuello de botella ya no est&#225; en producir, sino en pensar. Y eso lo cambia todo.</p><div><hr></div><h2><strong>1. Discovery: cuando entender lleva m&#225;s tiempo que preguntar</strong></h2><p>Antes, el discovery era una carrera de resistencia. Recolectar datos, hacer entrevistas, sintetizar aprendizajes. El reto era procesar.</p><p>Hoy, un modelo puede leer cien entrevistas en diez segundos y devolverte un mapa de insights perfectamente redactado.</p><p>Y sin embargo, lo que no puede hacer es <strong>distinguir lo que es importante de lo que solo suena bien</strong>.</p><p>Ah&#237; nace la paradoja: la IA te ahorra tiempo analizando, pero te obliga a invertir m&#225;s tiempo en <strong>formular las preguntas correctas</strong>.</p><p>Cuando todo puede responderse en segundos, el verdadero trabajo es decidir qu&#233; merece la pena preguntar.</p><p>Un ejemplo sencillo: imagina que analizas feedback de clientes que abandonan el carrito.</p><p>El LLM te dir&#225; que &#8220;la mayor&#237;a abandonan por los gastos de env&#237;o o la fricci&#243;n en el pago&#8221;.</p><p>Perfecto, pero eso no es nuevo. El descubrimiento empieza cuando preguntas <em>por qu&#233; ese problema sigue existiendo</em> pese a que todos lo conocen.</p><p>Esa pregunta &#8212;m&#225;s que la s&#237;ntesis autom&#225;tica&#8212; es la que lleva al aprendizaje real.</p><p>La IA convierte el discovery en un proceso m&#225;s r&#225;pido, s&#237;, pero tambi&#233;n m&#225;s fr&#225;gil: puedes moverte a toda velocidad&#8230; en la direcci&#243;n equivocada.</p><p>Por eso, el valor est&#225; en la <strong>curiosidad bien dirigida</strong>, no en la rapidez de los an&#225;lisis.</p><div><hr></div><h2><strong>2. Prototipado: del arte de dise&#241;ar al arte de editar</strong></h2><p>Dise&#241;ar ya no es dibujar, es conversar.</p><p>Hoy puedes pedirle a un modelo: &#8220;hazme una app para comparar planes de energ&#237;a con un tono confiable y claro&#8221; y tendr&#225;s un mockup convincente en segundos.</p><p>Pero esa facilidad tiene un efecto sutil: cuando el coste de producir baja a cero, <strong>sube el riesgo de conformarse con lo primero que parece &#8220;suficiente&#8221;</strong>.</p><p>El prototipado ya no sirve para construir algo que no existe, sino para <strong>pensar con las manos</strong>.</p><p>La diferencia es que antes necesitabas un dise&#241;ador para hacerlo tangible, y ahora puedes hacerlo t&#250; mismo, pero la calidad del resultado depende de tu criterio.</p><p>La IA te da velocidad, pero <strong>no te da gusto</strong>, ni conocimiento del contexto, ni sensibilidad por los matices.</p><p>El dise&#241;ador del futuro &#8212;y el product manager tambi&#233;n&#8212; tendr&#225; que dominar algo que hasta ahora no se ense&#241;aba: <strong>saber editar</strong>.</p><p>No generar m&#225;s, sino discernir mejor.</p><p>Porque cuando todo el mundo puede producir, la ventaja pasa a estar en <strong>saber qu&#233; descartar</strong>.</p><div><hr></div><h2><strong>3. Validaci&#243;n: m&#225;s datos, menos comprensi&#243;n</strong></h2><p>La IA tambi&#233;n promete revolucionar la validaci&#243;n: puedes crear tests autom&#225;ticos, sintetizar feedback y hasta simular usuarios reales.</p><p>Y sin embargo, nada de eso sustituye el contacto con la realidad.</p><p>Cuando validas con datos generados, lo que obtienes es <strong>una coherencia estad&#237;stica, no una se&#241;al humana</strong>.</p><p>El peligro es validar una ilusi&#243;n: una hip&#243;tesis que parece s&#243;lida porque los datos la confirman&#8230; pero que no ha pasado por la prueba del comportamiento real.</p><p>Por eso, en esta era, la validaci&#243;n deber&#237;a ser menos sobre cantidad de tests y m&#225;s sobre <strong>calidad del aprendizaje</strong>.</p><p>Un buen test no es el que se ejecuta r&#225;pido, sino el que <strong>te obliga a cambiar de opini&#243;n</strong>.</p><p>Un ejemplo: lanzar una nueva experiencia de checkout y ver un +2% en conversi&#243;n puede parecer &#233;xito.</p><p>Pero si al mes bajan los pedidos recurrentes, o suben las incidencias, el experimento r&#225;pido solo te ha ense&#241;ado a optimizar un s&#237;ntoma.</p><p>La IA te acelera el corto plazo; el criterio es el que protege el largo.</p><div><hr></div><h2><strong>4. El dilema del ritmo</strong></h2><p>La velocidad ha sido siempre una ventaja competitiva, pero en la era de la IA deja de ser un diferencial: <strong>es una commodity</strong>.</p><p>Todos pueden moverse r&#225;pido. Lo dif&#237;cil es <strong>saber cu&#225;ndo no hacerlo</strong>.</p><p>La pregunta clave ya no es &#8220;&#191;c&#243;mo vamos m&#225;s r&#225;pido?&#8221;, sino &#8220;&#191;cu&#225;l es el ritmo adecuado para aprender sin romper lo importante?&#8221;.</p><p>El discovery, el prototipado y la validaci&#243;n son ahora m&#225;s cortos, m&#225;s iterativos, m&#225;s baratos.</p><p>Pero si los haces sin pausa para pensar, solo habr&#225;s cambiado <em>tiempo</em> por <em>superficialidad</em>.</p><p>La IA nos enfrenta a un tipo distinto de presi&#243;n: no la de hacer m&#225;s, sino la de <strong>decidir mejor qu&#233; merece la pena hacer</strong>.</p><p>Y eso requiere algo que ning&#250;n modelo puede generar: <strong>criterio colectivo</strong>.</p><div><hr></div><h2><strong>5. De la eficiencia al sentido</strong></h2><p>La eficiencia siempre ha sido el lenguaje del producto. Menos fricci&#243;n, menos coste, menos ciclos.</p><p>Pero la IA lleva la eficiencia a un nivel tan alto que amenaza con vaciarla de prop&#243;sito.</p><p>&#191;De qu&#233; sirve ser ultrarr&#225;pido, si no tienes claro hacia d&#243;nde te diriges?</p><p>Los equipos que mejor usen la IA no ser&#225;n los que generen m&#225;s entregables, sino los que logren <strong>aprender con intenci&#243;n</strong>.</p><p>Acelerar para explorar, no para cerrar. Prototipar para pensar, no para justificar. Validar para entender, no para confirmar.</p><p>La IA no hace que el oficio de producto desaparezca. Lo vuelve m&#225;s filos&#243;fico.</p><p>Nos obliga a preguntarnos qu&#233; significa realmente &#8220;hacer progreso&#8221; cuando cualquier cosa puede producirse en segundos.</p><div><hr></div><h2><strong>6. En resumen</strong></h2><ul><li><p><strong>La IA acelera el ciclo de entrega</strong>, pero el l&#237;mite real est&#225; en nuestra capacidad de aprender.</p></li><li><p><strong>Discovery</strong> se convierte en el arte de preguntar bien.</p></li><li><p><strong>Prototipado</strong> se transforma en el arte de editar y tener criterio.</p></li><li><p><strong>Validaci&#243;n</strong> exige m&#225;s humildad que nunca: no todo lo que parece funcionar, funciona de verdad.</p></li><li><p>Y la <strong>velocidad</strong> deja de ser el fin: pasa a ser una herramienta al servicio del sentido.</p></li></ul><p>Porque en el fondo, construir producto siempre fue una conversaci&#243;n entre lo que el negocio puede, lo que el usuario necesita y lo que el equipo entiende.</p><p>La IA solo hace que esa conversaci&#243;n ocurra m&#225;s r&#225;pido.</p><p>Pero el valor sigue estando, como siempre, en <strong>lo que decidimos escuchar</strong>.</p>]]></content:encoded></item><item><title><![CDATA[Métricas para productos con IA ]]></title><description><![CDATA[lo que medimos&#8230; y lo que a&#250;n no sabemos medir]]></description><link>https://newsletter.gemba.es/p/metricas-para-productos-con-ia</link><guid isPermaLink="false">https://newsletter.gemba.es/p/metricas-para-productos-con-ia</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 10 Nov 2025 07:31:07 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/178170788/71acef7de62f4accac87ed4d04f4e930.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>En los productos tradicionales, medir el &#233;xito siempre fue relativamente sencillo. Mir&#225;bas cu&#225;ntos usuarios activos ten&#237;as, cu&#225;ntos completaban una acci&#243;n, cu&#225;ntos volv&#237;an al d&#237;a siguiente.</p><p>El product manager viv&#237;a c&#243;modo entre tasas de conversi&#243;n, embudos y cohortes. Pero con la llegada de la inteligencia artificial, esa claridad empez&#243; a desvanecerse. Porque, &#191;c&#243;mo mides el &#233;xito de algo que <strong>aprende, cambia y genera resultados diferentes cada vez</strong>? &#191;C&#243;mo sabes si el producto &#8220;funciona&#8221; cuando ni siquiera hay una &#250;nica respuesta correcta?</p><p>Bienvenido a la nueva frontera del product management: las <strong>m&#233;tricas vivas</strong> de los productos con IA.</p><div><hr></div><h2><strong>Cuando las m&#233;tricas cl&#225;sicas ya no bastan</strong></h2><p>Las m&#233;tricas de toda la vida &#8212;DAU, retenci&#243;n, conversi&#243;n&#8212; siguen siendo &#250;tiles, pero cuentan solo <strong>una parte de la historia</strong>. Un chatbot puede tener miles de usuarios diarios, pero si la mayor&#237;a lo abandona frustrado despu&#233;s de tres respuestas, esa m&#233;trica deja de significar &#233;xito. La IA introduce una capa de complejidad: no solo hay que medir <strong>lo que el usuario hace</strong>, sino <strong>c&#243;mo se siente y qu&#233; aprende el sistema</strong>.</p><p>Un producto inteligente no se mide solo por lo que entrega hoy, sino por <strong>qu&#233; tan bien mejora con el tiempo</strong>.</p><div><hr></div><h2><strong>Dos tipos de aprendizaje: el humano y el del sistema</strong></h2><p>Un buen producto de IA evoluciona en dos direcciones:</p><ol><li><p><strong>El usuario aprende a usar el sistema.</strong></p><p>Por ejemplo, en ChatGPT o Midjourney, el usuario mejora sus prompts y obtiene resultados m&#225;s precisos. La experiencia se vuelve m&#225;s valiosa con la pr&#225;ctica.</p></li><li><p><strong>El sistema aprende del usuario.</strong></p><p>Sus respuestas, recomendaciones o predicciones mejoran con cada interacci&#243;n.</p></li></ol><p>Medir estos dos aprendizajes &#8212;el del usuario y el del sistema&#8212; es el nuevo reto del PM. Porque el valor real no est&#225; en una acci&#243;n puntual, sino en la <strong>relaci&#243;n din&#225;mica</strong> entre ambos.</p><div><hr></div><h2><strong>Nuevas m&#233;tricas para una nueva era</strong></h2><p>Aqu&#237; tienes algunas m&#233;tricas emergentes que los equipos m&#225;s avanzados est&#225;n usando para medir productos con IA:</p><h3><strong>1. Tasa de &#233;xito percibido (Perceived Success Rate)</strong></h3><p>No mide si la IA &#8220;acert&#243;&#8221; t&#233;cnicamente, sino si el usuario <strong>sinti&#243;</strong> que la respuesta fue &#250;til. En IA generativa, esa percepci&#243;n es m&#225;s importante que la precisi&#243;n.</p><h3><strong>2. Confianza del usuario (User Trust Index)</strong></h3><p>Una m&#233;trica subjetiva, pero medible con feedback continuo: &#191;qu&#233; tan dispuesto est&#225; el usuario a delegar tareas al sistema? &#191;cu&#225;ndo deja de revisar o corregir lo que la IA sugiere?</p><h3><strong>3. Reducci&#243;n de esfuerzo (Effort Reduction Rate)</strong></h3><p>Mide cu&#225;nto trabajo ahorra el producto al usuario. Si antes necesitaba cinco pasos y ahora solo uno, el valor de la IA est&#225; ah&#237;, aunque el flujo total sea m&#225;s corto.</p><h3><strong>4. Tasa de aprendizaje del modelo (Model Learning Rate)</strong></h3><p>Indica cu&#225;nto mejora el modelo con cada nueva interacci&#243;n. Por ejemplo, si el porcentaje de respuestas &#8220;satisfactorias&#8221; aumenta sin intervenci&#243;n humana, el sistema est&#225; aprendiendo bien.</p><h3><strong>5. Tasa de correcci&#243;n humana (Human Correction Rate)</strong></h3><p>Cu&#225;ntas veces el usuario necesita corregir o reintroducir una respuesta. Una IA con baja tasa de correcci&#243;n inspira confianza; una con alta tasa genera frustraci&#243;n o desconfianza.</p><h3><strong>6. Calidad emergente</strong></h3><p>Mide c&#243;mo evoluciona la experiencia cuando el producto se usa en contextos distintos. Por ejemplo, &#191;responde igual de bien un asistente de IA en ingl&#233;s que en espa&#241;ol? &#191;mantiene consistencia entre usuarios expertos y novatos?</p><div><hr></div><h2><strong>El cambio de mentalidad: de m&#233;tricas absolutas a m&#233;tricas evolutivas</strong></h2><p>El PM cl&#225;sico med&#237;a estados: cu&#225;ntos usuarios tengo, cu&#225;ntos compran, cu&#225;ntos se quedan. El PM de productos con IA mide <strong>trayectorias</strong>: cu&#225;nto aprende el sistema, cu&#225;nto conf&#237;a el usuario, cu&#225;nto se reduce la fricci&#243;n con el tiempo. El foco pasa de la <strong>foto</strong> al <strong>v&#237;deo</strong>. No importa solo el resultado puntual, sino la curva de aprendizaje entre el usuario y la IA.</p><div><hr></div><h2><strong>M&#233;tricas que tambi&#233;n pueden enga&#241;ar</strong></h2><p>No todo lo que se puede medir tiene sentido.</p><p>Algunos errores comunes:</p><ul><li><p><strong>Confundir engagement con valor. </strong>Que el usuario interact&#250;e mucho no significa que est&#233; satisfecho. A veces, la alta interacci&#243;n es s&#237;ntoma de que la IA falla y el usuario insiste.</p></li><li><p><strong>Celebrar mejoras locales sin ver el sistema completo. </strong>Un modelo que reduce errores en un &#225;rea puede generar nuevos sesgos en otra.</p></li><li><p><strong>Optimizar para la precisi&#243;n, ignorando la percepci&#243;n. </strong>Un asistente ultra preciso pero fr&#237;o y rob&#243;tico puede ser peor que uno algo menos exacto, pero m&#225;s emp&#225;tico.</p></li></ul><p>En IA, medir bien significa entender el <strong>contexto del error</strong> tanto como el acierto.</p><div><hr></div><h2><strong>El rol del PM: dise&#241;ar la conversaci&#243;n con los datos</strong></h2><p>El PM ya no solo define qu&#233; construir, sino <strong>qu&#233; medir y por qu&#233;</strong>. Y, sobre todo, c&#243;mo conectar esas m&#233;tricas con la experiencia real del usuario. Debe convertirse en <strong>traductor entre datos y significado</strong>. No basta con tener dashboards: hay que saber qu&#233; historia cuentan y qu&#233; historia ocultan. En productos con IA, las m&#233;tricas no son solo indicadores de rendimiento; son <strong>parte del dise&#241;o del sistema</strong>. Lo que decides medir, termina moldeando lo que la IA aprende.</p><div><hr></div><h2><strong>El takeaway</strong></h2><p>Los productos con IA no se eval&#250;an solo por cu&#225;ntos los usan, sino por <strong>qu&#233; tan bien aprenden, ayudan y generan confianza</strong>.</p><p>El &#233;xito ya no est&#225; en las conversiones o los clics, sino en el <strong>grado de entendimiento mutuo</strong> entre el usuario y el sistema.</p><p>&#128073; En esta nueva era, el product manager no persigue m&#233;tricas est&#225;ticas, sino se&#241;ales vivas de aprendizaje, mejora y confianza. </p><p>El reto no es medir m&#225;s, sino <strong>medir mejor</strong>.</p>]]></content:encoded></item><item><title><![CDATA[Diseñar experiencias con IA ]]></title><description><![CDATA[magia&#8230; pero explicable]]></description><link>https://newsletter.gemba.es/p/disenar-experiencias-con-ia</link><guid isPermaLink="false">https://newsletter.gemba.es/p/disenar-experiencias-con-ia</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 13 Oct 2025 06:30:30 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/175808774/25d97c3c8d2e2e340b112977f23d28a8.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Una de las sensaciones m&#225;s poderosas que puede provocar un producto es el <strong>&#8220;wow&#8221;</strong>: ese instante en el que el usuario piensa <em>&#8220;esto me ha entendido&#8221;</em>.</p><p>La primera vez que usaste ChatGPT y te devolvi&#243; una respuesta perfectamente redactada, o cuando Spotify te descubri&#243; una canci&#243;n que parec&#237;a escrita para ti, sentiste esa mezcla de asombro y gratitud que solo generan los productos &#8220;m&#225;gicos&#8221;.</p><p>Pero esa misma magia tiene un lado oscuro: en cuanto el usuario no entiende <strong>por qu&#233;</strong> el sistema hace lo que hace, la confianza se resquebraja.</p><p>La l&#237;nea entre el <em>&#8220;esto es incre&#237;ble&#8221;</em> y el <em>&#8220;esto da miedo&#8221;</em> es m&#225;s fina de lo que parece.</p><div><hr></div><h2><strong>La paradoja de la IA: cuanto m&#225;s acierta, menos entendemos c&#243;mo</strong></h2><p>La IA tiene una cualidad curiosa: cuanto m&#225;s sofisticada es, m&#225;s opaca se vuelve.</p><p>Los sistemas basados en reglas cl&#225;sicas eran f&#225;ciles de explicar &#8212;si pasa X, haz Y&#8212;.</p><p>Pero los modelos modernos aprenden de millones de ejemplos, ajustan pesos invisibles y generan resultados imposibles de rastrear por completo.</p><p>Para un product manager, esto plantea un dilema nuevo:</p><ul><li><p>Si simplificas demasiado la experiencia, pierdes <strong>credibilidad</strong>.</p></li><li><p>Si la haces demasiado transparente, pierdes <strong>fluidez y magia</strong>.</p></li></ul><p>Dise&#241;ar con IA ya no es solo una cuesti&#243;n de UX, sino de <strong>psicolog&#237;a de la confianza</strong>.</p><div><hr></div><h2><strong>La magia bien dosificada</strong></h2><p>El usuario quiere sentirse entendido, pero no enga&#241;ado.</p><p>Cuando un producto acierta de forma tan precisa que parece leer la mente, la reacci&#243;n inicial es de asombro&#8230; y la siguiente, de sospecha.</p><p><strong>Netflix</strong> lo aprendi&#243; pronto.</p><p>En los primeros a&#241;os de su sistema de recomendaciones, cuando la interfaz explicaba en exceso (&#8220;te recomendamos esto porque viste aquello&#8221;), la gente desconfiaba del algoritmo.</p><p>Hoy, el enfoque es m&#225;s sutil: te muestran afinidades (&#8220;basado en tu historial&#8221;) pero sin entrar en detalles que rompan la ilusi&#243;n.</p><p>Por el contrario, <strong>Google Photos</strong> ofrece una transparencia funcional: &#8220;te hemos agrupado estas fotos porque reconocimos caras similares&#8221;.</p><p>No quita magia, pero a&#241;ade <strong>contexto y control</strong>.</p><p>El secreto est&#225; ah&#237;: <strong>mostrar la l&#243;gica sin desvelar el truco</strong>.</p><div><hr></div><h2><strong>Explicabilidad como experiencia, no como disclaimer</strong></h2><p>Muchos equipos tratan la explicabilidad como una obligaci&#243;n legal o &#233;tica, cuando en realidad es una <strong>oportunidad de dise&#241;o</strong>.</p><p>No se trata de a&#241;adir un texto que diga &#8220;esta respuesta fue generada por IA&#8221;, sino de <strong>integrar se&#241;ales que transmitan control</strong>.</p><p>Ejemplos:</p><ul><li><p><strong>ChatGPT</strong> a&#241;ade la frase &#8220;puede contener errores&#8221; como recordatorio sutil de incertidumbre.</p></li><li><p><strong>Midjourney</strong> permite ajustar el nivel de aleatoriedad de las im&#225;genes generadas, d&#225;ndole al usuario sensaci&#243;n de agencia.</p></li><li><p><strong>YouTube Music</strong> o <strong>TikTok</strong> dejan claro cu&#225;ndo una recomendaci&#243;n es autom&#225;tica, sin romper el flujo.</p></li></ul><p>La explicabilidad no tiene que restar fluidez; puede <strong>convertirse en parte de la confianza emocional del producto</strong>.</p><div><hr></div><h2><strong>Dise&#241;ar con grados de opacidad</strong></h2><p>No todos los usuarios necesitan el mismo nivel de explicaci&#243;n.</p><p>El reto est&#225; en <strong>adaptar la transparencia al contexto y al perfil</strong>:</p><ul><li><p>En tareas de entretenimiento, la magia pesa m&#225;s.</p><p>Nadie quiere un an&#225;lisis t&#233;cnico de por qu&#233; Netflix cree que te gustar&#225; <em>Succession</em>.</p></li><li><p>En tareas cr&#237;ticas &#8212;salud, finanzas, educaci&#243;n&#8212; la transparencia debe ser total.</p><p>El usuario no quiere magia; quiere garant&#237;as.</p></li></ul><p>Por eso, los mejores productos de IA no son completamente transparentes ni totalmente opacos. Son <strong>gradualmente explicables</strong>: ofrecen m&#225;s contexto cuando el usuario lo necesita, no antes.</p><div><hr></div><h2><strong>De la interfaz a la &#8220;interconfianza&#8221;</strong></h2><p>Durante a&#241;os dise&#241;amos interfaces: pantallas, botones, interacciones.</p><p>La IA nos obliga a dise&#241;ar algo nuevo: <strong>la interconfianza</strong>.</p><p>Ya no basta con que el usuario sepa qu&#233; hacer; debe <strong>creer que el sistema har&#225; lo correcto</strong>.</p><p>Esa confianza se construye con se&#241;ales sutiles:</p><ul><li><p>Feedback inmediato y coherente.</p></li><li><p>Coherencia entre lo que el sistema dice y lo que hace.</p></li><li><p>Capacidad de correcci&#243;n cuando el modelo falla.</p></li></ul><p>Un sistema de IA sin posibilidad de correcci&#243;n es una caja negra; con correcci&#243;n, se convierte en un compa&#241;ero.</p><div><hr></div><h2><strong>El rol del PM: guardianes de la confianza</strong></h2><p>En productos impulsados por IA, el PM no solo define qu&#233; hace el sistema, sino tambi&#233;n <strong>c&#243;mo explica sus decisiones</strong>.</p><p>Debe asegurar que cada predicci&#243;n, recomendaci&#243;n o acci&#243;n tiene un nivel adecuado de claridad para su impacto.</p><p>No se trata de elegir entre magia o transparencia, sino de encontrar el punto exacto donde el usuario puede decir:</p><blockquote><p>&#8220;No s&#233; exactamente c&#243;mo lo hace, pero s&#233; que puedo confiar en &#233;l.&#8221;</p></blockquote><p>Esa es la frontera donde ocurre el verdadero valor de la IA.</p><div><hr></div><h2><strong>El takeaway</strong></h2><p>Dise&#241;ar experiencias con IA no es un ejercicio de mostrar poder t&#233;cnico, sino de <strong>construir confianza emocional</strong>.</p><p>El usuario debe sentir que el sistema le entiende,</p><p>pero tambi&#233;n que <strong>&#233;l sigue al mando</strong>.</p><p>&#128073; La magia sin explicabilidad se vuelve sospechosa.</p><p>La explicabilidad sin magia se vuelve aburrida.</p><p>El equilibrio entre ambas es, probablemente,</p><p>la nueva frontera del dise&#241;o de producto.</p>]]></content:encoded></item><item><title><![CDATA[Del feature al ecosistema]]></title><description><![CDATA[El nuevo rol del PM en IA]]></description><link>https://newsletter.gemba.es/p/del-feature-al-ecosistema</link><guid isPermaLink="false">https://newsletter.gemba.es/p/del-feature-al-ecosistema</guid><dc:creator><![CDATA[José Ramón Pérez Agüera]]></dc:creator><pubDate>Mon, 06 Oct 2025 06:30:52 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/174319077/d979ab30d72b52475d1f4ae32bebb73f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Hace una d&#233;cada, el trabajo de un product manager era, en apariencia, sencillo de definir: identificar una necesidad de usuario, dise&#241;ar la mejor soluci&#243;n, traducirla en funcionalidades claras y asegurarse de que el equipo las constru&#237;a con calidad y a tiempo. El producto era una suma de <strong>features</strong> bien priorizadas.</p><p>Hoy esa visi&#243;n se queda corta. Con la llegada de la inteligencia artificial, los productos han dejado de ser un cat&#225;logo cerrado de funciones para convertirse en <strong>ecosistemas vivos</strong>, donde la experiencia de usuario depende tanto de lo que el equipo dise&#241;a como de lo que el modelo aprende en cada interacci&#243;n.</p><p>El PM ya no gestiona solo funcionalidades; gestiona <strong>comportamientos emergentes</strong>.</p><h2><strong>Del bot&#243;n al comportamiento emergente</strong></h2><p>En un producto tradicional, el PM pod&#237;a prever con exactitud lo que ocurrir&#237;a tras cada acci&#243;n del usuario.</p><ul><li><p>Si el usuario hac&#237;a clic en &#8220;a&#241;adir al carrito&#8221;, el sistema a&#241;ad&#237;a un &#237;tem.</p></li><li><p>Si pulsaba &#8220;guardar&#8221;, el sistema guardaba.</p></li></ul><p>Era una l&#243;gica determinista: input definido &#8594; output esperado.</p><p>Con IA, esto cambia radicalmente.</p><ul><li><p>Una misma acci&#243;n puede generar resultados distintos seg&#250;n contexto y datos.</p></li><li><p>La calidad ya no depende solo del c&#243;digo, sino tambi&#233;n del dataset de entrenamiento, el modelo, y la situaci&#243;n particular del usuario.</p></li><li><p>El producto evoluciona con el uso: cada interacci&#243;n entrena al sistema, ajusta respuestas, mejora (o empeora).</p></li></ul><p>Ejemplo claro: <strong>GitHub Copilot</strong>.</p><p>No es un simple &#8220;autocomplete&#8221; avanzado; es un copiloto que propone soluciones basadas en millones de repositorios y en el estilo concreto de cada desarrollador. El valor no est&#225; en un bot&#243;n, sino en un <strong>ecosistema de datos y aprendizaje continuo</strong>.</p><h2><strong>Nuevos retos para el PM</strong></h2><p>Este cambio obliga a los product managers a repensar su rol en profundidad:</p><h3><strong>1. Dise&#241;ar experiencias, no outputs</strong></h3><p>Ya no puedes prometer un resultado fijo. Lo que dise&#241;as son <strong>m&#225;rgenes de confianza</strong>: qu&#233; es aceptable, c&#243;mo corregir errores y c&#243;mo comunicar incertidumbre al usuario. Un ejemplo es <strong>Google Translate</strong>, que hoy muestra alternativas a una traducci&#243;n, reconociendo que puede haber m&#225;s de una respuesta v&#225;lida.</p><h3><strong>2. Gestionar datos como producto</strong></h3><p>Los datos dejan de ser un &#8220;input t&#233;cnico&#8221; para convertirse en <strong>materia prima estrat&#233;gica</strong>. El PM debe hacerse preguntas:</p><ul><li><p>&#191;De d&#243;nde vienen nuestros datos?</p></li><li><p>&#191;Qu&#233; sesgos contienen?</p></li><li><p>&#191;Con qu&#233; frecuencia deben actualizarse?</p><p>Sin buenos datos, no hay buen producto de IA, y ese es un terreno donde el PM ya no puede ser un invitado pasivo.</p></li></ul><h3><strong>3. Equilibrar magia y control</strong></h3><p>El gran atractivo de la IA es su efecto &#8220;wow&#8221;: un sistema que parece entenderte. Pero demasiada magia puede romper la confianza si el usuario no entiende qu&#233; ocurre. Los mejores productos buscan equilibrio: sorprenden, pero tambi&#233;n ofrecen <strong>explicabilidad</strong> y opciones de correcci&#243;n.</p><h3><strong>4. Pensar en ecosistemas, no features</strong></h3><p>La IA rara vez es autosuficiente. Requiere integraciones, partners, APIs, comunidades. El rol del PM pasa de priorizar funcionalidades a <strong>orquestar un ecosistema</strong>.</p><h2><strong>Casos reales que lo ilustran</strong></h2><ul><li><p><strong>ChatGPT Plugins</strong>: OpenAI no a&#241;adi&#243; &#8220;una feature&#8221; m&#225;s; abri&#243; un ecosistema de extensiones donde terceros aportan valor. El PM aqu&#237; dise&#241;a un marco, no un cat&#225;logo.</p></li><li><p><strong>Spotify + IA</strong>: su funci&#243;n de &#8220;DJ con inteligencia artificial&#8221; combina datos de escucha, modelos generativos y curaci&#243;n editorial. No es un bot&#243;n nuevo; es una capa de inteligencia sobre todo su ecosistema de contenido.</p></li><li><p><strong>Tesla Autopilot</strong>: la conducci&#243;n asistida no depende de una funcionalidad fija, sino de un sistema que aprende de millones de kil&#243;metros recorridos. Cada coche alimenta al ecosistema.</p></li></ul><p>En todos los casos, el PM deja de ser gestor de tareas para convertirse en <strong>arquitecto de sistemas complejos</strong>.</p><h2><strong>Qu&#233; cambia en la pr&#225;ctica del d&#237;a a d&#237;a</strong></h2><ol><li><p><strong>Discovery</strong></p><p>Ya no basta con entrevistas y encuestas. El PM debe considerar la <strong>disponibilidad y calidad de datos</strong> como parte del discovery.</p></li><li><p><strong>Roadmap</strong></p><p>No se planifica solo en t&#233;rminos de funcionalidades, sino tambi&#233;n de <strong>mejora de modelos, pipelines de datos e integraciones</strong>.</p></li><li><p><strong>Validaci&#243;n</strong></p><p>El &#233;xito no es binario (funciona / no funciona). Hay grados de precisi&#243;n, confianza y satisfacci&#243;n del usuario.</p></li><li><p><strong>Iteraci&#243;n</strong></p><p>El aprendizaje continuo del modelo requiere pensar en ciclos de mejora diferentes a los de un producto de software cl&#225;sico.</p></li></ol><h2><strong>El nuevo toolkit del PM</strong></h2><p>El PM en la era de la IA no necesita ser ingeniero de machine learning, pero s&#237; incorporar nuevas competencias:</p><ul><li><p><strong>Entender lo b&#225;sico de c&#243;mo funciona un modelo</strong> (inputs, outputs, limitaciones).</p></li><li><p><strong>Saber evaluar datasets</strong>: tama&#241;o, representatividad, sesgos.</p></li><li><p><strong>Manejar m&#233;tricas nuevas</strong>: confianza del usuario, tasa de error aceptable, impacto del feedback en la mejora del modelo.</p></li><li><p><strong>Dise&#241;ar flujos con &#8220;human-in-the-loop&#8221;</strong>: cu&#225;ndo interviene la IA y cu&#225;ndo debe decidir la persona.</p></li></ul><h2><strong>El takeaway</strong></h2><p>La inteligencia artificial ha transformado la gesti&#243;n de producto. Ya no se trata de a&#241;adir features, sino de <strong>orquestar ecosistemas</strong> donde datos, modelos, usuarios y partners conviven.</p><p>El PM deja de ser un gestor de funcionalidades para convertirse en un <strong>arquitecto de experiencias emergentes</strong>.</p><p>Su reto ya no es solo priorizar qu&#233; construir, sino tambi&#233;n decidir <strong>c&#243;mo habilitar un sistema vivo que evolucione con cada interacci&#243;n</strong>.</p><p>&#128073; En la era de la IA, el producto ya no es un cat&#225;logo de funcionalidades.</p><p>Es un <strong>organismo en constante aprendizaje</strong>.</p><p>Y el PM, m&#225;s que nunca, es el responsable de que ese organismo crezca sano, &#250;til y confiable.</p>]]></content:encoded></item></channel></rss>