<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nicolás Biondi | Blog</title>
    <link>https://nicolasbiondi.com/blog/</link>
    <description>Notas sobre agentes de IA, ecommerce y la infraestructura que los sostiene. Por Nicolás Biondi.</description>
    <language>es</language>
    <lastBuildDate>Sat, 03 Oct 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://nicolasbiondi.com/blog/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Jefe y practicantes: Cómo uso varios modelos de IA para programar sin que la cuenta se dispare</title>
      <link>https://nicolasbiondi.com/blog/kitchen-brigade-ai-agents/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/kitchen-brigade-ai-agents/</guid>
      <pubDate>Sat, 03 Oct 2026 12:00:00 GMT</pubDate>
      <description>28 mil millones de tokens en seis meses, 94% leído del caché. Así reparto el trabajo entre un modelo caro y varios baratos en LENZ.</description>
      <category>Agentes de IA</category>
      <category>delegation</category>
      <category>caching</category>
      <category>tokens</category>
      <category>workflow</category>
    </item>
    <item>
      <title>La llave equivocada: Reconocíamos cada venta por su fila en la hoja y no por la cámara vendida, y así se colaban los duplicados</title>
      <link>https://nicolasbiondi.com/blog/la-llave-equivocada/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/la-llave-equivocada/</guid>
      <pubDate>Thu, 03 Sep 2026 12:00:00 GMT</pubDate>
      <description>Reconocíamos cada venta por la fila de la hoja y no por la cámara vendida, así que cada bloque repegado volvía a entrar como venta nueva.</description>
      <category>Lecciones</category>
      <category>data-quality</category>
      <category>deduplication</category>
      <category>reconciliation</category>
      <category>sqlite</category>
      <category>postmortem</category>
    </item>
    <item>
      <title>El modo prueba no probaba: Mandábamos «modo prueba» en cada pedido y la API de facturación ni lo miraba: eso se configura en la cuenta</title>
      <link>https://nicolasbiondi.com/blog/el-ensayo-facturo/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/el-ensayo-facturo/</guid>
      <pubDate>Mon, 31 Aug 2026 12:00:00 GMT</pubDate>
      <description>Integramos la API de facturación confiando en el modo prueba de cada pedido. La API lo ignoraba: el entorno se define en la cuenta del proveedor.</description>
      <category>Lecciones</category>
      <category>invoicing</category>
      <category>postmortem</category>
      <category>idempotency</category>
      <category>erp-integration</category>
    </item>
    <item>
      <title>Medianoche no cuenta: Nuestro contador permitía 96 publicaciones en 24 horas corridas y X bloqueó al bot en la número 64</title>
      <link>https://nicolasbiondi.com/blog/medianoche-no-cuenta/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/medianoche-no-cuenta/</guid>
      <pubDate>Thu, 13 Aug 2026 12:00:00 GMT</pubDate>
      <description>Un bot quedó bloqueado en X: contábamos el límite por día calendario y X cuenta las últimas 24 horas corridas.</description>
      <category>Lecciones</category>
      <category>postmortem</category>
      <category>rate-limits</category>
      <category>rolling-window</category>
      <category>bots</category>
      <category>geocoding</category>
    </item>
    <item>
      <title>El timbre no timbra: Cambiamos una clave y el chat de avisos se calló sin dar error. Ahora contamos los avisos que sí llegan</title>
      <link>https://nicolasbiondi.com/blog/diez-dias-sin-timbre/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/diez-dias-sin-timbre/</guid>
      <pubDate>Sat, 08 Aug 2026 12:00:00 GMT</pubDate>
      <description>Cambiamos una clave y el chat de avisos se calló sin dar error. Cómo probar una clave nueva sin publicar nada y reenviar lo que faltó.</description>
      <category>Infraestructura</category>
      <category>postmortem</category>
      <category>tokens</category>
      <category>monitoring</category>
      <category>reconciliation</category>
    </item>
    <item>
      <title>Gratis con medidor: Un caché gastaba 2,400 escrituras diarias en un plan que solo permitía 1,000</title>
      <link>https://nicolasbiondi.com/blog/gratis-con-medidor/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/gratis-con-medidor/</guid>
      <pubDate>Thu, 06 Aug 2026 12:00:00 GMT</pubDate>
      <description>Un caché escribía en KV en cada visita: 2,400 escrituras al día contra una cuota de 1,000, y el medidor diario que armamos después para no repetirlo.</description>
      <category>Tokens y costos</category>
      <category>cloudflare</category>
      <category>quotas</category>
      <category>caching</category>
      <category>metrics</category>
      <category>postmortem</category>
    </item>
    <item>
      <title>Un cartel por agente: Dos agentes compartían un solo «no molestar» y se pisaban; ahora cada uno cuelga su cartel con vencimiento</title>
      <link>https://nicolasbiondi.com/blog/un-cartel-por-agente/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/un-cartel-por-agente/</guid>
      <pubDate>Wed, 05 Aug 2026 12:00:00 GMT</pubDate>
      <description>Avisos de prueba anunciaron reparaciones viejas. Dos agentes compartían un «no molestar» y se pisaban; ahora cada uno tiene su permiso con dueño y vencimiento.</description>
      <category>Agentes de IA</category>
      <category>postmortem</category>
      <category>notifications</category>
      <category>concurrency</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Nada estaba roto: Un agente tocó cuatro archivos en producción por una falla que era del índice de Shopify</title>
      <link>https://nicolasbiondi.com/blog/nada-estaba-roto/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/nada-estaba-roto/</guid>
      <pubDate>Mon, 03 Aug 2026 12:00:00 GMT</pubDate>
      <description>Una búsqueda válida devolvía cero resultados. Un agente tocó cuatro archivos en producción y los devolvió en 18 minutos: el índice de Shopify se acomodó solo.</description>
      <category>Agentes de IA</category>
      <category>postmortem</category>
      <category>search</category>
      <category>data-quality</category>
      <category>metrics</category>
      <category>rollback</category>
    </item>
    <item>
      <title>La API se hacía la loca: Faltaban tres datos y la API igual respondía «todo bien»: los rellenaba con lo primero que se le ocurría</title>
      <link>https://nicolasbiondi.com/blog/la-api-rellenaba-los-vacios/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/la-api-rellenaba-los-vacios/</guid>
      <pubDate>Sat, 25 Jul 2026 12:00:00 GMT</pubDate>
      <description>Mandé un pedido sin tres datos y el proveedor siempre decía que todo estaba bien: los completaba por su cuenta. Comparar con el ejemplo oficial lo destapó.</description>
      <category>Ecommerce</category>
      <category>api-contract</category>
      <category>data-quality</category>
      <category>postmortem</category>
      <category>validation</category>
    </item>
    <item>
      <title>Cada clic tumbaba todo: Pasamos un archivo de 130 MB a una base de datos de verdad y cada clic bajó de 5 segundos a 0.6 ms</title>
      <link>https://nicolasbiondi.com/blog/cada-clic-tumbaba-todo/</link>
      <guid isPermaLink="true">https://nicolasbiondi.com/blog/cada-clic-tumbaba-todo/</guid>
      <pubDate>Mon, 25 May 2026 12:00:00 GMT</pubDate>
      <description>Un tablero interno guardaba decenas de miles de avisos en un archivo de 130 MB. Pasamos a una base de datos real y cada cambio de estado ahora toma 0.6 ms.</description>
      <category>Infraestructura</category>
      <category>sqlite</category>
      <category>json</category>
      <category>performance</category>
      <category>postmortem</category>
    </item>
  </channel>
</rss>
