René's URL Explorer Experiment


Title: The Self-Healing Chatbot: From Widget to Production LLMOps

Open Graph Title: The Self-Healing Chatbot: From Widget to Production LLMOps

X Title: The Self-Healing Chatbot: From Widget to Production LLMOps

Description: Case study: production LLMOps with agentic observability, 6-layer defense, 71 evals, voice mode, and a closed-loop that generates tests from real failures.

Open Graph Description: Case study: production LLMOps with agentic observability, 6-layer defense, 71 evals, voice mode, and a closed-loop that generates tests from real failures.

X Description: Case study: production LLMOps with agentic observability, 6-layer defense, 71 evals, voice mode, and a closed-loop that generates tests from real failures.

Mail addresses
hi@santifer.io

Opengraph URL: https://santifer.io/self-healing-chatbot

direct link

Domain: santifer.io


Hey, it has json ld scripts:
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://santifer.io/self-healing-chatbot/#article",
      "headline": "The Self-Healing Chatbot: From Widget to Production LLMOps",
      "alternativeHeadline": "The Self-Healing Chatbot: From Widget to Production LLMOps",
      "description": "Case study: production LLMOps with agentic observability, 6-layer defense, 71 evals, voice mode, and a closed-loop that generates tests from real failures.",
      "author": {
        "@id": "https://santifer.io/#person"
      },
      "publisher": {
        "@id": "https://santifer.io/#person"
      },
      "datePublished": "2026-03-11",
      "dateModified": "2026-07-21",
      "keywords": [
        "LLMOps",
        "self-healing chatbot",
        "agentic RAG",
        "jailbreak defense",
        "prompt injection",
        "LLM evaluation",
        "closed loop LLM",
        "Langfuse",
        "prompt versioning",
        "adversarial testing",
        "trace-to-eval",
        "hybrid search pgvector",
        "AI portfolio",
        "chatbot evals",
        "CI gate LLM",
        "voice mode chatbot",
        "OpenAI Realtime API",
        "speech-to-speech AI",
        "agentic observability",
        "developer feedback loop",
        "AI maintaining AI"
      ],
      "url": "https://santifer.io/self-healing-chatbot",
      "mainEntityOfPage": "https://santifer.io/self-healing-chatbot",
      "image": [
        "https://santifer.io/chatbot/hero-self-healing-chatbot.webp"
      ],
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://santifer.io/#website"
      },
      "about": [
        {
          "@type": "SoftwareApplication",
          "name": "Langfuse",
          "url": "https://langfuse.com",
          "applicationCategory": "LLM Observability"
        },
        {
          "@type": "SoftwareApplication",
          "name": "Supabase",
          "url": "https://supabase.com",
          "applicationCategory": "Database"
        },
        {
          "@type": "Thing",
          "name": "LLMOps"
        },
        {
          "@type": "Thing",
          "name": "Retrieval-Augmented Generation"
        }
      ],
      "proficiencyLevel": "Expert",
      "dependencies": "Claude, Langfuse, Supabase, Vercel, OpenAI, Resend, GitHub Actions",
      "citation": [
        {
          "@type": "SocialMediaPosting",
          "name": "Han hackeado a mi chatbot — LinkedIn post (300+ reactions)",
          "url": "https://www.linkedin.com/feed/update/urn:li:activity:7421984735024816128/"
        },
        {
          "@type": "WebPage",
          "name": "OWASP Top 10 for LLM Applications",
          "url": "https://owasp.org/www-project-top-10-for-large-language-model-applications/"
        },
        {
          "@type": "TechArticle",
          "name": "Anthropic Tool Use Documentation",
          "url": "https://docs.anthropic.com/en/docs/build-with-claude/tool-use"
        },
        {
          "@type": "TechArticle",
          "name": "Langfuse — Open Source LLM Engineering Platform",
          "url": "https://langfuse.com/docs"
        },
        {
          "@type": "TechArticle",
          "name": "Supabase pgvector — Vector Embeddings Documentation",
          "url": "https://supabase.com/docs/guides/ai/vector-embeddings"
        },
        {
          "@type": "TechArticle",
          "name": "Anthropic — Defending Against Prompt Injection",
          "url": "https://www.anthropic.com/news/prompt-injections"
        },
        {
          "@type": "WebPage",
          "name": "Prompt Injection (Wikipedia)",
          "url": "https://en.wikipedia.org/wiki/Prompt_injection"
        }
      ],
      "mentions": [
        {
          "@type": "SoftwareApplication",
          "name": "Langfuse",
          "url": "https://langfuse.com"
        },
        {
          "@type": "SoftwareApplication",
          "name": "Supabase",
          "url": "https://supabase.com"
        },
        {
          "@type": "SoftwareApplication",
          "name": "OpenAI Realtime API",
          "url": "https://platform.openai.com"
        },
        {
          "@type": "SoftwareApplication",
          "name": "Claude Code",
          "url": "https://claude.ai"
        },
        {
          "@type": "SoftwareApplication",
          "name": "Vercel",
          "url": "https://vercel.com"
        }
      ],
      "workTranslation": {
        "@id": "https://santifer.io/chatbot-que-se-cura-solo/#article"
      }
    },
    {
      "@type": "Person",
      "@id": "https://santifer.io/#person",
      "name": "Santiago Fernández de Valderrama Aparicio",
      "alternateName": [
        "Santiago Fernández de Valderrama",
        "santifer",
        "Santi"
      ],
      "url": "https://santifer.io",
      "description": "Santiago Fernández de Valderrama is a software engineer specializing in multi-agent AI systems and agentic adoption. He created career-ops, an open-source project maintained by an orchestrated fleet of AI agents, and coined 'agentic maintenance': gated, evidence-based upkeep of a living codebase, sustained by a fleet of AI agents under human direction.",
      "jobTitle": [
        "AI Forward Deployed Engineer",
        "Applied AI Engineer",
        "Multi-Agent Systems Engineer",
        "Agentic AI Engineer",
        "Head of Applied AI",
        "Solutions Architect (No/Low-Code & AI)",
        "AI Product Manager"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/santifer",
        "https://github.com/santifer",
        "https://x.com/santifer",
        "https://dev.to/santifer",
        "https://santifer.substack.com",
        "https://contentdigest.santifer.io",
        "https://www.youtube.com/@santifer_io",
        "https://stackoverflow.com/users/32541743",
        "https://orcid.org/0009-0006-2192-7210",
        "https://www.crunchbase.com/person/santiago-fernandez-de-valderrama",
        "https://huggingface.co/santifer",
        "https://www.wikidata.org/wiki/Q138710224",
        "https://santiferirepair.es",
        "https://career-ops.org/about",
        "https://www.facebook.com/santifer.io/",
        "https://www.producthunt.com/@santifer",
        "https://app.daily.dev/santifer"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://santifer.io/#website",
      "name": "santifer.io",
      "url": "https://santifer.io"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://santifer.io/self-healing-chatbot/#breadcrumbs",
      "itemListElement": [
        {
          "@type": "ListItem",
          "@id": "https://santifer.io/self-healing-chatbot/#breadcrumb-1",
          "position": 1,
          "name": "Home",
          "item": "https://santifer.io"
        },
        {
          "@type": "ListItem",
          "@id": "https://santifer.io/self-healing-chatbot/#breadcrumb-2",
          "position": 2,
          "name": "The Self-Healing Chatbot",
          "item": "https://santifer.io/self-healing-chatbot"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://santifer.io/self-healing-chatbot/#faq",
      "inLanguage": "en",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Is this production-grade or just a demo?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Real production. Live on santifer.io since January 2026 with daily organic traffic, full observability via Langfuse, 71 automated evals run on every PR, 6-layer anti-jailbreak defense, agentic RAG on Supabase pgvector, and a CI gate that blocks deploys if any test fails. Not a playground: every conversation is traced, batch-scored with Sonnet overnight, and failures feed the next eval set."
          }
        },
        {
          "@type": "Question",
          "name": "How much did it cost to build?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "$0 in infrastructure: free tiers from Vercel (edge functions), Supabase (pgvector RAG), and Langfuse Cloud (observability). The only variable cost is LLM APIs: under $0.005 per text conversation and ~$0.25 per voice session (OpenAI Realtime). Built solo using Claude Code, no team and no project budget."
          }
        },
        {
          "@type": "Question",
          "name": "Why Claude and not GPT-4 or Gemini?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Claude has clean native tool_use, SSE streaming without wrappers, and Sonnet's quality/cost ratio is the best for conversation. Haiku for scoring is unbeatable on price. But the architecture is model-agnostic: switching models is a one-line change."
          }
        },
        {
          "@type": "Question",
          "name": "Can I replicate this for my portfolio?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes. The code is public on GitHub (github.com/santifer/cv-santiago). The pattern (chat + Langfuse + evals + CI) is replicable in a weekend. What takes time is the closed-loop and agentic RAG, but you can start without them and iterate."
          }
        },
        {
          "@type": "Question",
          "name": "What exactly is trace-to-eval?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "When a trace in Langfuse receives a quality score < 0.7, a new test case is automatically generated from the real input/output. That test is added to the suite and runs on every push. Today's production failure is tomorrow's CI test."
          }
        },
        {
          "@type": "Question",
          "name": "What if a jailbreak gets past all 6 layers?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Langfuse catches it in the batch eval (safety scoring). An email alert fires and a new adversarial test is generated. The next deploy already includes defense against that vector. That's the closed loop in action."
          }
        },
        {
          "@type": "Question",
          "name": "How does voice mode work?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "OpenAI Realtime API handles the audio. Before responding, Claude searches the RAG and adapts content for speech: short sentences, no markdown, first person. Same brain, different mouth."
          }
        }
      ]
    }
  ]
}

titleThe Self-Healing Chatbot: From Widget to Production LLMOps
authorSantiago Fernández de Valderrama Aparicio
msvalidate.0122F0E5AD398442DDC95900300A3B4537
og:typearticle
og:imagehttps://santifer.io/chatbot/og-self-healing-chatbot.webp
og:image:width1200
og:image:height630
og:image:altThe Self-Healing Chatbot: From Widget to Production LLMOps
og:site_namesantifer.io
og:localeen_US
og:locale:alternatees_ES
twitter:cardsummary_large_image
twitter:urlhttps://santifer.io/self-healing-chatbot
twitter:imagehttps://santifer.io/chatbot/og-self-healing-chatbot.webp
twitter:image:altsantifer - Applied AI Operator · Builder of career-ops
theme-color#0a0a0a
color-schemedark
msapplication-TileColor#0a0a0a
article:published_time2026-03-11
article:modified_time2026-07-21
article:authorhttps://www.linkedin.com/in/santifer
article:tagLLMOps,self-healing chatbot,agentic RAG,jailbreak defense,Langfuse,evals,closed-loop,prompt injection

Links:

santifer.iohttps://santifer.io/en
ENhttps://santifer.io/chatbot-que-se-cura-solo
Santiago Fernández de Valderramahttps://santifer.io/about
See interactive architecture demo →https://santifer.io/self-healing-chatbot#architecture
The Genesis#https://santifer.io/self-healing-chatbot#genesis
The Evolution#https://santifer.io/self-healing-chatbot#evolution
Architecture#https://santifer.io/self-healing-chatbot#architecture
Agentic Observability#https://santifer.io/self-healing-chatbot#agentic-observability
Jacobohttps://santifer.io/ai-agent-jacobo
How It Was Built: The MMA Loop#https://santifer.io/self-healing-chatbot#how-it-was-built
Agentic RAG#https://santifer.io/self-healing-chatbot#rag
programmatic SEOhttps://santifer.io/programmatic-seo
Jacobohttps://santifer.io/ai-agent-jacobo
Business OShttps://santifer.io/business-os-for-airtable
Programmatic SEOhttps://santifer.io/programmatic-seo
n8n for PMshttps://santifer.io/n8n-for-pms
6-Layer Defense#https://santifer.io/self-healing-chatbot#defense
This isn't theoretical. Langfuse caught a real prompt injection attempt in 3 seconds. I documented it on LinkedIn — 300+ reactions and 50+ comments.https://linkedin.com/in/santifer/recent-activity/all/
The 71 Tests#https://santifer.io/self-healing-chatbot#evals
The Closed Loop#https://santifer.io/self-healing-chatbot#closed-loop
Real Cost#https://santifer.io/self-healing-chatbot#cost
From Text to Voice#https://santifer.io/self-healing-chatbot#voice
Lessons#https://santifer.io/self-healing-chatbot#lessons
Frequently Asked Questions#https://santifer.io/self-healing-chatbot#faq
LinkedInhttps://linkedin.com/in/santifer
AI Product Academyhttps://maven.com/marily-nika/ai-pm-bootcamp?utm_source=santifer&utm_medium=casestudy&utm_campaign=self-healing-chatbot
More about the author →https://santifer.io/about
LinkedInhttps://linkedin.com/in/santifer
GitHubhttps://github.com/santifer
Privacyhttps://santifer.io/privacy

Viewport: width=device-width, initial-scale=1.0

Robots: index, follow


URLs of crawlers that visited me.