<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: David</title>
    <description>The latest articles on DEV Community by David (@davmar78).</description>
    <link>https://dev.to/davmar78</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3904706%2Fbcefd625-a8b7-424f-a4d0-57fe45946b90.png</url>
      <title>DEV Community: David</title>
      <link>https://dev.to/davmar78</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/davmar78"/>
    <language>en</language>
    <item>
      <title>Cómo construí Worvi: Un chatbot WhatsApp inteligente con Claude API</title>
      <dc:creator>David</dc:creator>
      <pubDate>Wed, 29 Apr 2026 16:44:38 +0000</pubDate>
      <link>https://dev.to/davmar78/como-construi-worvi-un-chatbot-whatsapp-inteligente-con-claude-api-83b</link>
      <guid>https://dev.to/davmar78/como-construi-worvi-un-chatbot-whatsapp-inteligente-con-claude-api-83b</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8ojpiidxj4dx3philel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8ojpiidxj4dx3philel.png" alt="Worvi WhatsApp Chatbot" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hace 6 meses comencé a resolver un problema real: pequeños negocios pierden leads porque no pueden responder en WhatsApp al instante.&lt;/p&gt;

&lt;p&gt;Hoy comparto cómo construí &lt;strong&gt;Worvi&lt;/strong&gt;, un chatbot WhatsApp con IA que captura leads automáticamente y aprende patrones de conversación.&lt;/p&gt;

&lt;h2&gt;
  
  
  El problema
&lt;/h2&gt;

&lt;p&gt;Un cliente mío (academia online) perdía ~50% de leads porque:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clientes escriben en WhatsApp cuando el equipo no está disponible&lt;/li&gt;
&lt;li&gt;Sin respuesta automática = cliente se va con la competencia&lt;/li&gt;
&lt;li&gt;Manual es inviable (responder 100+ mensajes/día)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  La solución: Worvi
&lt;/h2&gt;

&lt;p&gt;Worvi es un template Python + FastAPI que:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Responde automáticamente&lt;/strong&gt; en WhatsApp usando Claude API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detecta intención del usuario&lt;/strong&gt; (pregunta, queja, venta, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cambia el contexto&lt;/strong&gt; cuando el cliente cambia de intención&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Captura leads&lt;/strong&gt; en una base de datos JSON&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Se configura en 5 minutos&lt;/strong&gt; sin código&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Stack técnico
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt;: Servidor webhook ultra rápido&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude API&lt;/strong&gt;: IA para respuestas inteligentes y contextales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp Business API&lt;/strong&gt;: Integración oficial&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON + Git&lt;/strong&gt;: Base de datos simple y versionada&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Pages&lt;/strong&gt;: Dashboard en vivo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;¿Por qué estas tecnologías?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI es ultra rápido y async nativo&lt;/li&gt;
&lt;li&gt;Claude API entiende contexto mejor que otros modelos&lt;/li&gt;
&lt;li&gt;JSON sin BD relacional = sin complicaciones&lt;/li&gt;
&lt;li&gt;GitHub Pages = dashboard gratis que se actualiza en tiempo real&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cómo funciona (arquitectura)
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Detección de intención (el corazón de Worvi)
&lt;/h2&gt;

&lt;p&gt;La clave está en analizar el historial de conversación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;detect_intention&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;conversation_history&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Analiza el historial y detecta:
    - question: Pregunta sobre producto
    - objection: Cliente tiene dudas
    - booking: Cliente quiere comprar/agendar
    - complaint: Cliente insatisfecho
    - other: No clasificable
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-3-5-sonnet-20241022&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;INTENTION_SYSTEM_PROMPT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation_history&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cuando la intención &lt;strong&gt;cambia&lt;/strong&gt;, Worvi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resetea el contexto&lt;/li&gt;
&lt;li&gt;Carga nuevos ejemplos&lt;/li&gt;
&lt;li&gt;Responde con nueva estrategia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ejemplo real:&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Casos de uso reales
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Academia Online
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Antes&lt;/strong&gt;: Manager respondía, 2-3 horas de delay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Después&lt;/strong&gt;: Worvi responde en &amp;lt;5 segundos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resultado&lt;/strong&gt;: 3 leads capturados en primera hora&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Agencia Inmobiliaria
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Antes&lt;/strong&gt;: Perdía clientes por no responder rápido&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Después&lt;/strong&gt;: Worvi pre-califica clientes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resultado&lt;/strong&gt;: Agente solo ve leads "calientes"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  E-commerce
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Antes&lt;/strong&gt;: FAQ manual, 50+ mensajes/día&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Después&lt;/strong&gt;: Worvi maneja FAQs + sugiere productos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resultado&lt;/strong&gt;: 15% aumento en conversión&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Métricas que rastrea Worvi
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"total_messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;247&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"leads_captured"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"average_response_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.3s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"intention_changes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"conversation_satisfaction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;4.2&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deployment
&lt;/h2&gt;

&lt;p&gt;Originalmente en Mac mini. Ahora en &lt;strong&gt;Oracle Cloud free tier&lt;/strong&gt; para 24/7:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Actions automatizan deployment&lt;/li&gt;
&lt;li&gt;1 commit a main = automática en producción&lt;/li&gt;
&lt;li&gt;Cero downtime&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lo que aprendí
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Detección de intención &amp;gt; respuestas genéricas&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entender que el cliente cambió de opinión es crucial&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Simple &amp;gt; perfecto&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON es suficiente para 99% de casos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Context matters&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude entiende cambios de tono mejor que otros modelos&lt;/li&gt;
&lt;li&gt;Vale la pena pagar por mejor IA&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Webhook delays matan conversiones&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI + async es fundamental&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cómo usar Worvi
&lt;/h2&gt;

&lt;p&gt;Es un &lt;strong&gt;template listo para usar&lt;/strong&gt; (~55 KB):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Descarga de &lt;a href="https://kitbot.gumroad.com/l/worvi-whatsapp" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;python setup.py&lt;/code&gt; → responde preguntas&lt;/li&gt;
&lt;li&gt;Conecta tu número de WhatsApp&lt;/li&gt;
&lt;li&gt;Listo. Responde automáticamente.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;O úsalo como &lt;strong&gt;base&lt;/strong&gt; para tu propio bot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Próximos pasos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;v1.1: Templates adicionales (medicina, ecommerce, support)&lt;/li&gt;
&lt;li&gt;Dashboard web avanzado&lt;/li&gt;
&lt;li&gt;Integraciones CRM (Pipedrive, HubSpot)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Construí un chatbot WhatsApp que &lt;strong&gt;entiende cambios de intención&lt;/strong&gt; usando Claude API. Detecta si un cliente está preguntando, objetando u listo para comprar, y responde en consecuencia.&lt;/p&gt;

&lt;p&gt;Es un template, no un servicio. Deploy en 5 minutos. €89 en Gumroad.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://kitbot.gumroad.com/l/worvi-whatsapp" rel="noopener noreferrer"&gt;Pruébalo aquí →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>chatbot</category>
      <category>whatsapp</category>
    </item>
  </channel>
</rss>
