<?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: Datalaria</title>
    <description>The latest articles on DEV Community by Datalaria (datalaria).</description>
    <link>https://dev.to/datalaria</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.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F12018%2Fc60f0d32-39e9-4c8d-aa46-a1a9497fbfcd.png</url>
      <title>DEV Community: Datalaria</title>
      <link>https://dev.to/datalaria</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/datalaria"/>
    <language>en</language>
    <item>
      <title>Fine-Tuning vs Prompt Engineering vs RAG: When to Use Each (And the Fourth Option Nobody Mentions)</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 09 Aug 2026 14:32:58 +0000</pubDate>
      <link>https://dev.to/datalaria/fine-tuning-vs-prompt-engineering-vs-rag-when-to-use-each-and-the-fourth-option-nobody-mentions-m72</link>
      <guid>https://dev.to/datalaria/fine-tuning-vs-prompt-engineering-vs-rag-when-to-use-each-and-the-fourth-option-nobody-mentions-m72</guid>
      <description>&lt;p&gt;You have an AI model that hallucinates with your company's data. You open a support ticket and ask the chatbot about your returns policy. The chatbot, powered by GPT-4 or Gemini 2.5, responds with a fabricated policy that sounds perfectly plausible but has nothing to do with your company's reality. Your boss stares at you. Your customer complains. You open Google and search &lt;strong&gt;"how to connect LLM to my data"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The top 10 results offer three contradictory answers: "use RAG," "do fine-tuning," "improve your prompt." All three are right. All three are wrong. Because the correct answer isn't any of the three in the abstract — it's &lt;strong&gt;the one that fits your specific use case&lt;/strong&gt;. And there's a fourth option that almost nobody mentions, and which, in my experience, is the right call in more cases than the industry admits.&lt;/p&gt;

&lt;p&gt;This article is the decision tree I wish I'd had when I started building the AI systems behind this blog. I've distilled it after implementing all four techniques in real production: Prompt Engineering across the entire &lt;a href="https://dev.to/en/posts/ai_agents_part1/"&gt;Autopilot series&lt;/a&gt;, RAG in the &lt;a href="https://dev.to/en/posts/ai_agents_part8/"&gt;Ops Copilot&lt;/a&gt; with Algolia, pure Tool Calling in the &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;Obsolescence Radar&lt;/a&gt;, and experimental fine-tuning in industrial classification pipelines. It closes the trilogy that began with &lt;a href="https://dev.to/en/posts/rag_antipatterns/"&gt;RAG: 7 Anti-Patterns&lt;/a&gt; and continued with &lt;a href="https://dev.to/en/posts/mcp_protocol/"&gt;MCP Protocol&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Question Nobody Asks
&lt;/h3&gt;

&lt;p&gt;Before choosing a technique, ask yourself this: &lt;strong&gt;Does the knowledge your LLM needs change, or is it static?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the answer is "it changes frequently" (product documentation, inventory, prices, regulations), you need a technique that accesses data &lt;strong&gt;in real time&lt;/strong&gt; without retraining the model. If the answer is "it's static or changes very slowly" (brand tone, formatting rules, domain nomenclature), you can consider techniques that &lt;strong&gt;incorporate that knowledge into the model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This distinction is the first node of the decision tree. It seems obvious written this way. Yet most teams I've seen jump straight to whatever technique is trending (RAG in 2024, fine-tuning in 2023, prompt engineering always) without asking this fundamental question.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzdt54gsm8l25aopu6zud.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzdt54gsm8l25aopu6zud.jpg" alt="Decision tree: how to choose between the 4 techniques" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: Prompt Engineering — 80% of Cases
&lt;/h3&gt;

&lt;p&gt;The uncomfortable truth the AI tooling industry doesn't want you to know: &lt;strong&gt;for 80% of use cases, a well-designed prompt is sufficient&lt;/strong&gt;. You don't need RAG. You don't need fine-tuning. You need a system prompt that clearly defines the role, context, constraints, and expected output format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When it's sufficient&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The required knowledge fits in the model's context window (Gemini 2.5 handles up to 1 million tokens; Claude up to 200K).&lt;/li&gt;
&lt;li&gt;The task is generic but needs structure (drafting emails, summarizing documents, classifying text, generating code).&lt;/li&gt;
&lt;li&gt;You don't need updated proprietary data — the model's general knowledge is enough.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced techniques that make the difference&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Structured system prompts&lt;/strong&gt;: Define the role ("You are a senior supply chain engineer"), constraints ("Always respond in technical English"), and output format ("Return a JSON with fields: analysis, recommendation, confidence").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Few-shot prompting&lt;/strong&gt;: Include 3-5 correct input-output examples in the prompt. In the &lt;a href="https://dev.to/en/posts/ai_agents_part3/"&gt;Autopilot series&lt;/a&gt;, CrewAI agents use few-shot to maintain style consistency across generated articles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chain-of-thought (CoT)&lt;/strong&gt;: Instruct the model to "think step by step" before giving the final answer. Dramatically improves accuracy in reasoning, calculation, and multi-step analysis tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt chaining&lt;/strong&gt;: Break complex tasks into sequential subtasks, each with its own optimized prompt. This is exactly what CrewAI does with its agent architecture: each agent has a specialized prompt for its role.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cost&lt;/strong&gt;: Virtually zero (only API token cost). A well-designed prompt can take hours of iteration, but operational cost is minimal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fatal limitation&lt;/strong&gt;: The context window has a limit. If you need the model to "know" about 10,000 documents from your knowledge base, you can't inject them all into the prompt. This is where RAG enters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: RAG — Updatable Proprietary Knowledge
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;RAG (Retrieval-Augmented Generation)&lt;/strong&gt; is the right answer when you need the LLM to respond about &lt;strong&gt;your proprietary knowledge&lt;/strong&gt; and that knowledge &lt;strong&gt;updates frequently&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When it's necessary&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product documentation, technical manuals, internal knowledge bases that update weekly or monthly.&lt;/li&gt;
&lt;li&gt;The user can ask unpredictable questions about a broad document corpus (you don't know in advance which fragment the LLM will need).&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;citability&lt;/strong&gt;: the answer must include the sources it draws from (critical for compliance, as we documented in the &lt;a href="https://dev.to/en/posts/eu_ai_act/"&gt;EU AI Act&lt;/a&gt;, Article 13 on transparency).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When NOT to use it&lt;/strong&gt;: When data is structured (SQL tables, APIs with defined schemas) or when you need numerical precision. As I extensively documented in &lt;a href="https://dev.to/en/posts/rag_antipatterns/"&gt;Anti-Pattern 7 of the RAG article&lt;/a&gt;, RAG over structured data generates narrative hallucinations where you need exact figures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correct architecture (summarized)&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Semantic chunking&lt;/strong&gt; (not fixed-length — Anti-Pattern 1)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluated embeddings&lt;/strong&gt; with your domain benchmark (Anti-Pattern 2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reranking&lt;/strong&gt; between retriever and LLM (Anti-Pattern 3)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generous context&lt;/strong&gt; (top-10/15, not top-3 — Anti-Pattern 4)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation with RAGAS/DeepEval&lt;/strong&gt; before production (Anti-Pattern 6)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Real cost&lt;/strong&gt;: Moderate. The vector store (Pinecone, Weaviate, Algolia) has a monthly cost (€0-100 depending on volume), plus embedding cost (low) and generation cost (API tokens). In the &lt;a href="https://dev.to/en/posts/ai_agents_part8/"&gt;Ops Copilot&lt;/a&gt;, the total RAG cost with Algolia was under &lt;strong&gt;€3/month&lt;/strong&gt; for the blog's ~70 posts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real case at Datalaria&lt;/strong&gt;: The Ops Engineering Copilot (&lt;a href="https://dev.to/en/posts/ai_agents_part8/"&gt;Autopilot Part 8&lt;/a&gt;) uses RAG with Algolia Agent Studio to answer questions about blog content. Posts are indexed as semantic records (one record per section), and the copilot retrieves relevant fragments before generating the response. Works well for semantic search over free text.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 3: Fine-Tuning — The Scalpel, Not the Hammer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fine-tuning&lt;/strong&gt; is the most powerful technique and the most misused. It involves &lt;strong&gt;partially retraining&lt;/strong&gt; a base model (Gemini, Llama, Mistral) with your own data so the model internalizes specific knowledge, style, or behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When it's essential&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need the model to adopt a &lt;strong&gt;very specific tone or style&lt;/strong&gt; consistently (a brand with strict voice &amp;amp; tone, a domain with very particular technical jargon).&lt;/li&gt;
&lt;li&gt;The task is &lt;strong&gt;highly specialized&lt;/strong&gt; and generalist models don't solve it well even with advanced prompting (industrial defect classification, proprietary nomenclature entity extraction, specialized medical diagnosis).&lt;/li&gt;
&lt;li&gt;You need to &lt;strong&gt;reduce latency and cost&lt;/strong&gt; in production: a fine-tuned smaller model (7B-13B parameters) can match the quality of a large model (70B+) on your specific task, at a fraction of the cost and latency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When NOT to use it&lt;/strong&gt; (the most widespread myth):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't use fine-tuning to "teach the model data."&lt;/strong&gt; Fine-tuning is not a database. If you need the model to know your product catalog, use RAG. Fine-tuning "burns in" behavioral patterns, not updatable facts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't use fine-tuning if your knowledge changes frequently.&lt;/strong&gt; Each update requires retraining, which can cost hours and hundreds of euros. RAG is instant: update the document and the retriever finds it immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modern tools&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LoRA (Low-Rank Adaptation)&lt;/strong&gt;: The standard technique. Instead of retraining the model's billions of parameters, LoRA trains only low-rank matrices "attached" to the model's layers. Reduces training cost by 90%+ and stores the fine-tuned model as a few MB of "adapters."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QLoRA&lt;/strong&gt;: LoRA applied to a 4-bit quantized model. Enables fine-tuning 70B-parameter models on a single consumer GPU (24GB VRAM). Democratized fine-tuning for startups and teams without GPU clusters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vertex AI Tuning / OpenAI Fine-Tuning API&lt;/strong&gt;: Managed services where you upload your training dataset (instruction-response pairs) and the platform runs the fine-tuning without you managing GPU infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real cost&lt;/strong&gt;: Variable. Fine-tuning with LoRA on a 7B-parameter model with 10,000 examples costs &lt;strong&gt;€5-20&lt;/strong&gt; on cloud (Google Cloud, AWS). A 70B model can cost &lt;strong&gt;€50-200&lt;/strong&gt; per training session. Plus the cost of preparing the dataset (hours of human work). As we analyzed in &lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;The Hidden Economics of AI&lt;/a&gt;, fine-tuning's hidden cost isn't compute — it's &lt;strong&gt;training dataset curation&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 4: Tool Calling / MCP — The One Nobody Mentions
&lt;/h3&gt;

&lt;p&gt;This is the option I discovered by elimination after RAG failed spectacularly on the &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;Obsolescence Radar&lt;/a&gt;. &lt;strong&gt;Tool Calling&lt;/strong&gt; means the LLM doesn't try to "know" the answer; instead, it knows &lt;strong&gt;who to ask&lt;/strong&gt; — that is, which tool to execute to get the information with deterministic precision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When it's the right option&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data is &lt;strong&gt;structured&lt;/strong&gt; (SQL databases, REST APIs, spreadsheets with schemas).&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;absolute numerical precision&lt;/strong&gt; (financial calculations, inventory metrics, sensor data).&lt;/li&gt;
&lt;li&gt;The operation requires &lt;strong&gt;actions&lt;/strong&gt;, not just answers (create a ticket, send an email, run a query, call an external API).&lt;/li&gt;
&lt;li&gt;You want to &lt;strong&gt;standardize connections&lt;/strong&gt; between the LLM and tools to avoid vendor lock-in — exactly the problem solved by &lt;a href="https://dev.to/en/posts/mcp_protocol/"&gt;MCP (Model Context Protocol)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: The LLM (Gemini 2.5, Claude) acts as a &lt;strong&gt;semantic orchestrator&lt;/strong&gt;: it understands the user's natural language intent, decides which tool(s) to execute, constructs the parameters, executes the tool(s), and interprets results for the user. Tools are deterministic Python functions (decorated with &lt;code&gt;@tool&lt;/code&gt; in CrewAI) that execute precision operations: SQL queries to Supabase, supplier API calls, linear programming calculations with PuLP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost&lt;/strong&gt;: The lowest of all four options. You only pay for LLM tokens (typically few, since the prompt is short) and tool execution (SQL queries, API calls). In the Obsolescence Radar, the cost per complete execution (analyze a component, traverse the BOM graph, calculate financial impact, generate executive report) was under &lt;strong&gt;€0.02 per query&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real case at Datalaria&lt;/strong&gt;: The &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;Agentic Obsolescence Radar&lt;/a&gt; uses Tool Calling exclusively. The LLM (Gemini 2.5 via CrewAI) understands the obsolescence alert in natural language, but all data operations — SQL query to the component catalog, BOM graph traversal, P&amp;amp;L calculation, PDF generation — are executed by deterministic Python tools. Result: executive reports in 4 seconds with &lt;strong&gt;0% numerical hallucination&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Decision Matrix
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterion&lt;/th&gt;
&lt;th&gt;Prompt Engineering&lt;/th&gt;
&lt;th&gt;RAG&lt;/th&gt;
&lt;th&gt;Fine-Tuning&lt;/th&gt;
&lt;th&gt;Tool Calling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Initial cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Minimal&lt;/td&gt;
&lt;td&gt;⭐⭐ Low-medium&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ High&lt;/td&gt;
&lt;td&gt;⭐⭐ Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operational cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Low&lt;/td&gt;
&lt;td&gt;⭐⭐ Medium&lt;/td&gt;
&lt;td&gt;⭐ Low (small model)&lt;/td&gt;
&lt;td&gt;⭐ Minimal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Precision (free text)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐ Medium&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ High&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Very high&lt;/td&gt;
&lt;td&gt;⭐ N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Precision (structured data)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Low&lt;/td&gt;
&lt;td&gt;⭐ Low&lt;/td&gt;
&lt;td&gt;⭐ Low&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Exact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data freshness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Instant&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Instant&lt;/td&gt;
&lt;td&gt;⭐ Requires retraining&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Real-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Implementation effort&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Hours&lt;/td&gt;
&lt;td&gt;⭐⭐ Days-weeks&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Weeks-months&lt;/td&gt;
&lt;td&gt;⭐⭐ Days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maintenance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Minimal&lt;/td&gt;
&lt;td&gt;⭐⭐ Medium&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ High (data drift)&lt;/td&gt;
&lt;td&gt;⭐⭐ Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Traceability (EU AI Act)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Difficult&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ High (citable sources)&lt;/td&gt;
&lt;td&gt;⭐ Opaque (black box)&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Total (deterministic)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ideal use case&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Generic tasks with clear instructions&lt;/td&gt;
&lt;td&gt;Updatable proprietary text knowledge&lt;/td&gt;
&lt;td&gt;Specific style/tone, ultra-specialized tasks&lt;/td&gt;
&lt;td&gt;Structured data, numerical precision, actions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The 3-Question Framework
&lt;/h3&gt;

&lt;p&gt;If the matrix seems dense, I've distilled a 3-question framework that resolves 90% of decisions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question 1: Does the data the LLM needs fit in the prompt?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes → &lt;strong&gt;Prompt Engineering&lt;/strong&gt;. Inject context directly. Simpler, cheaper, faster.&lt;/li&gt;
&lt;li&gt;No → Next question.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Question 2: Is the data free text or structured?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free text (documentation, manuals, posts) → &lt;strong&gt;RAG&lt;/strong&gt;. Semantic retrieval is superior for searching unstructured text.&lt;/li&gt;
&lt;li&gt;Structured (SQL, APIs, tables, calculations) → &lt;strong&gt;Tool Calling&lt;/strong&gt;. Deterministic tools that execute exact queries.&lt;/li&gt;
&lt;li&gt;Both → &lt;strong&gt;Hybrid architecture&lt;/strong&gt; (RAG for textual context + Tool Calling for structured data, as we proposed in the &lt;a href="https://dev.to/en/posts/rag_antipatterns/"&gt;RAG article&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Question 3: Do you need a behavior or style the base model can't reproduce even with the best prompt?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes (unique brand tone, ultra-specific domain jargon, task that generalist models consistently fail) → &lt;strong&gt;Fine-Tuning&lt;/strong&gt; on a base model.&lt;/li&gt;
&lt;li&gt;No → Go back to Prompt Engineering and refine your prompt before considering more complex techniques.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What I Learned Implementing All Four
&lt;/h3&gt;

&lt;p&gt;The most valuable lesson from operating these four techniques in production fits in a single sentence: &lt;strong&gt;always start with the simplest technique that could work&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The temptation is to jump straight to RAG or fine-tuning because they're more "sophisticated." But sophistication doesn't correlate with effectiveness. In the &lt;a href="https://dev.to/en/posts/ai_agents_part1/"&gt;Autopilot&lt;/a&gt;, the majority of output quality comes from Prompt Engineering — carefully designed system prompts, few-shot examples, and Chain-of-thought. RAG added marginal value in the Ops Copilot for blog search. Fine-tuning wasn't necessary in any case. And Tool Calling was the transformative technique in the Obsolescence Radar, where RAG had failed.&lt;/p&gt;

&lt;p&gt;The evaluation order should always be:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Engineering&lt;/strong&gt; (hours, ~€0)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool Calling&lt;/strong&gt; if data is structured (days, ~€0)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG&lt;/strong&gt; if you need access to proprietary text (days-weeks, ~€3-50/month)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-Tuning&lt;/strong&gt; only if the previous three consistently fail (weeks, €50-500+)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And in the era of the &lt;a href="https://dev.to/en/posts/eu_ai_act/"&gt;EU AI Act&lt;/a&gt;, there's a fifth consideration that isn't technical but legal: &lt;strong&gt;traceability&lt;/strong&gt;. Article 10 of the regulation requires that training data for high-risk systems be "relevant, representative, and to the extent possible, free of errors and complete." This applies directly to fine-tuning: if you fine-tune a model with biased or incorrect data, and that model makes decisions in a regulated domain, you're exposed to sanctions. RAG and Tool Calling, being transparent in their sources, offer traceability that fine-tuning cannot match.&lt;/p&gt;

&lt;p&gt;As we wrote in &lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;The Hidden Economics of AI&lt;/a&gt;, the 10x Rule applies: if a more complex technique doesn't give you a result &lt;strong&gt;10 times better&lt;/strong&gt; than the previous one, it probably doesn't justify its added cost and complexity. Start simple. Measure. Scale only when the data demands it.&lt;/p&gt;




&lt;h4&gt;
  
  
  Sources of Interest:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/generative-ai/models/tune-models" rel="noopener noreferrer"&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt;: Tuning &amp;amp; Fine-tuning with Vertex AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/docs/peft/conceptual_guides/lora" rel="noopener noreferrer"&gt;&lt;strong&gt;Hugging Face&lt;/strong&gt;: LoRA — Low-Rank Adaptation of Large Language Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pinecone.io/learn/rag-vs-fine-tuning/" rel="noopener noreferrer"&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;: RAG vs Fine-Tuning — How to Choose&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering" rel="noopener noreferrer"&gt;&lt;strong&gt;Anthropic&lt;/strong&gt;: Prompt Engineering Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/rag_antipatterns/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: RAG in Production — 7 Anti-Patterns That Destroy Precision&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/mcp_protocol/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: MCP Protocol — The USB of AI (Standardized Tool Calling)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: The Agentic Radar — Tool Calling in Production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: The Hidden Economics of AI — Real Costs of Each Technique&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/eu_ai_act/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: EU AI Act — Article 10 and Training Data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Fine-Tuning vs Prompt Engineering vs RAG: Cuándo Usar Cada Uno (y la Cuarta Opción que Nadie Menciona)</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 09 Aug 2026 14:28:43 +0000</pubDate>
      <link>https://dev.to/datalaria/fine-tuning-vs-prompt-engineering-vs-rag-cuando-usar-cada-uno-y-la-cuarta-opcion-que-nadie-29dn</link>
      <guid>https://dev.to/datalaria/fine-tuning-vs-prompt-engineering-vs-rag-cuando-usar-cada-uno-y-la-cuarta-opcion-que-nadie-29dn</guid>
      <description>&lt;p&gt;Tienes un modelo de IA que alucina con los datos de tu empresa. Abre un ticket de soporte y le pides al chatbot que responda sobre tu política de devoluciones. El chatbot, alimentado por GPT-4 o Gemini 2.5, responde con una política inventada que suena perfectamente plausible pero no tiene nada que ver con la realidad de tu empresa. Tu jefe te mira. Tu cliente se queja. Tú abres Google y buscas &lt;strong&gt;"cómo conectar LLM a mis datos"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Los primeros 10 resultados te ofrecen tres respuestas contradictorias: «usa RAG», «haz fine-tuning», «mejora tu prompt». Los tres tienen razón. Los tres están equivocados. Porque la respuesta correcta no es ninguna de las tres en abstracto — es &lt;strong&gt;la que encaja con tu caso de uso específico&lt;/strong&gt;. Y hay una cuarta opción que casi nadie menciona y que, en mi experiencia, es la correcta en más casos de los que la industria admite.&lt;/p&gt;

&lt;p&gt;Este artículo es el árbol de decisión que ojalá hubiera tenido cuando empecé a construir los sistemas de IA de este blog. Lo he destilado después de implementar las cuatro técnicas en producción real: Prompt Engineering en toda la &lt;a href="https://dev.to/es/posts/ia_agents_part1/"&gt;serie Autopilot&lt;/a&gt;, RAG en el &lt;a href="https://dev.to/es/posts/ia_agents_part8/"&gt;Ops Copilot&lt;/a&gt; con Algolia, Tool Calling puro en el &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;Radar de Obsolescencia&lt;/a&gt;, y fine-tuning experimental en pipelines de clasificación industrial. Cierra la trilogía que empezó con &lt;a href="https://dev.to/es/posts/rag_antipatrones/"&gt;RAG: 7 Antipatrones&lt;/a&gt; y continuó con &lt;a href="https://dev.to/es/posts/mcp_protocol/"&gt;MCP Protocol&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  La Pregunta que Nadie Se Hace
&lt;/h3&gt;

&lt;p&gt;Antes de elegir una técnica, hazte esta pregunta: &lt;strong&gt;¿El conocimiento que necesita tu LLM cambia o es estático?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Si la respuesta es «cambia frecuentemente» (documentación de producto, inventario, precios, regulaciones), necesitas una técnica que acceda a datos &lt;strong&gt;en tiempo real&lt;/strong&gt; sin reentrenar el modelo. Si la respuesta es «es estático o cambia muy lento» (tono de marca, reglas de formato, nomenclatura de dominio), puedes considerar técnicas que &lt;strong&gt;incorporen ese conocimiento al modelo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Esta distinción es el primer nodo del árbol de decisión. Parece obvia escrita así. Sin embargo, la mayoría de los equipos que he visto saltan directamente a la técnica que está de moda (RAG en 2024, fine-tuning en 2023, prompt engineering siempre) sin hacerse esta pregunta fundamental.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvgzrzketzu18g4lk3yt3.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvgzrzketzu18g4lk3yt3.jpg" alt="Árbol de decisión: cómo elegir entre las 4 técnicas" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Opción 1: Prompt Engineering — El 80% de los Casos
&lt;/h3&gt;

&lt;p&gt;La verdad incómoda que la industria del tooling de IA no quiere que sepas: &lt;strong&gt;para el 80% de los casos de uso, un prompt bien diseñado es suficiente&lt;/strong&gt;. No necesitas RAG. No necesitas fine-tuning. Necesitas un system prompt que defina claramente el rol, el contexto, las restricciones y el formato de salida esperado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cuándo es suficiente&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;El conocimiento necesario cabe en la ventana de contexto del modelo (Gemini 2.5 maneja hasta 1 millón de tokens; Claude hasta 200K).&lt;/li&gt;
&lt;li&gt;La tarea es genérica pero necesita estructura (redactar emails, resumir documentos, clasificar textos, generar código).&lt;/li&gt;
&lt;li&gt;No necesitas datos propietarios actualizados — el conocimiento general del modelo basta.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Técnicas avanzadas que marcan la diferencia&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System Prompts estructurados&lt;/strong&gt;: Define el rol («Eres un ingeniero de supply chain senior»), las restricciones («Responde siempre en español técnico»), y el formato de salida («Devuelve un JSON con los campos: análisis, recomendación, confianza»).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Few-shot prompting&lt;/strong&gt;: Incluye 3-5 ejemplos de entrada-salida correctos en el prompt. En la &lt;a href="https://dev.to/es/posts/ia_agents_part3/"&gt;serie Autopilot&lt;/a&gt;, los agentes de CrewAI usan few-shot para mantener la consistencia de estilo entre artículos generados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chain-of-thought (CoT)&lt;/strong&gt;: Instruye al modelo a «pensar paso a paso» antes de dar la respuesta final. Mejora drásticamente la precisión en tareas de razonamiento, cálculo y análisis multi-paso.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt chaining&lt;/strong&gt;: Divide tareas complejas en subtareas secuenciales, cada una con su propio prompt optimizado. Es exactamente lo que hace CrewAI con la arquitectura de agentes: cada agente tiene un prompt especializado para su rol.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Coste&lt;/strong&gt;: Prácticamente cero (solo el coste de tokens de la API). Un prompt bien diseñado puede llevar horas de iteración, pero el coste operativo es mínimo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitación fatal&lt;/strong&gt;: La ventana de contexto tiene un límite. Si necesitas que el modelo «sepa» sobre 10.000 documentos de tu base de conocimiento, no puedes inyectarlos todos en el prompt. Aquí es donde entra RAG.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opción 2: RAG — Conocimiento Propietario Actualizable
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;RAG (Retrieval-Augmented Generation)&lt;/strong&gt; es la respuesta correcta cuando necesitas que el LLM responda sobre &lt;strong&gt;tu conocimiento propietario&lt;/strong&gt; y ese conocimiento &lt;strong&gt;se actualiza frecuentemente&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cuándo es necesario&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentación de producto, manuales técnicos, bases de conocimiento internas que se actualizan semanalmente o mensualmente.&lt;/li&gt;
&lt;li&gt;El usuario puede hacer preguntas impredecibles sobre un corpus amplio de documentos (no sabes de antemano qué fragmento necesitará el LLM).&lt;/li&gt;
&lt;li&gt;Necesitas &lt;strong&gt;citabilidad&lt;/strong&gt;: que la respuesta incluya las fuentes de donde proviene la información (crítico para compliance, como documentamos en el &lt;a href="https://dev.to/es/posts/eu_ai_act/"&gt;EU AI Act&lt;/a&gt;, Artículo 13 sobre transparencia).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cuándo NO usarlo&lt;/strong&gt;: Cuando los datos son estructurados (tablas SQL, APIs con esquemas definidos) o cuando necesitas precisión numérica. Como documenté extensamente en el &lt;a href="https://dev.to/es/posts/rag_antipatrones/"&gt;Antipatrón 7 del artículo de RAG&lt;/a&gt;, RAG sobre datos estructurados genera alucinaciones narrativas donde necesitas cifras exactas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arquitectura correcta (resumida)&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Chunking semántico&lt;/strong&gt; (no por longitud fija — Antipatrón 1)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embeddings evaluados&lt;/strong&gt; con benchmark de tu dominio (Antipatrón 2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reranking&lt;/strong&gt; entre el retriever y el LLM (Antipatrón 3)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contexto generoso&lt;/strong&gt; (top-10/15, no top-3 — Antipatrón 4)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluación con RAGAS/DeepEval&lt;/strong&gt; antes de producción (Antipatrón 6)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Coste real&lt;/strong&gt;: Moderado. El vector store (Pinecone, Weaviate, Algolia) tiene un coste mensual (€0-100 según volumen), más el coste de embeddings (bajo) y el coste de generación (tokens de API). En el &lt;a href="https://dev.to/es/posts/ia_agents_part8/"&gt;Ops Copilot&lt;/a&gt;, el coste total de RAG con Algolia fue inferior a &lt;strong&gt;€3/mes&lt;/strong&gt; para los ~70 posts del blog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caso real en Datalaria&lt;/strong&gt;: El Ops Engineering Copilot (&lt;a href="https://dev.to/es/posts/ia_agents_part8/"&gt;Autopilot Part 8&lt;/a&gt;) usa RAG con Algolia Agent Studio para responder preguntas sobre el contenido del blog. Los posts se indexan como records semánticos (un record por sección), y el copilot recupera los fragmentos relevantes antes de generar la respuesta. Funciona bien para búsqueda semántica sobre texto libre.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opción 3: Fine-Tuning — El Bisturí, No el Martillo
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fine-tuning&lt;/strong&gt; es la técnica más potente y la más mal utilizada. Consiste en &lt;strong&gt;reentrenar parcialmente&lt;/strong&gt; un modelo base (Gemini, Llama, Mistral) con tus propios datos para que el modelo internalice conocimiento, estilo o comportamiento específico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cuándo es imprescindible&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Necesitas que el modelo adopte un &lt;strong&gt;tono o estilo muy específico&lt;/strong&gt; de forma consistente (una marca con un voice &amp;amp; tone estricto, un dominio con jerga técnica muy particular).&lt;/li&gt;
&lt;li&gt;La tarea es &lt;strong&gt;altamente especializada&lt;/strong&gt; y los modelos generalistas no la resuelven bien ni con prompting avanzado (clasificación de defectos industriales, extracción de entidades de nomenclatura propietaria, diagnóstico médico especializado).&lt;/li&gt;
&lt;li&gt;Necesitas &lt;strong&gt;reducir latencia y coste&lt;/strong&gt; en producción: un modelo fine-tuneado más pequeño (7B-13B parámetros) puede igualar la calidad de un modelo grande (70B+) en tu tarea específica, a una fracción del coste y la latencia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cuándo NO usarlo&lt;/strong&gt; (el mito más extendido):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No uses fine-tuning para "enseñarle datos" al modelo&lt;/strong&gt;. Fine-tuning no es una base de datos. Si necesitas que el modelo conozca tu catálogo de productos, usa RAG. Fine-tuning «graba» patrones de comportamiento, no hechos actualizables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No uses fine-tuning si tu conocimiento cambia frecuentemente&lt;/strong&gt;. Cada actualización requiere reentrenar, lo que puede costar horas y cientos de euros. RAG es instantáneo: actualiza el documento y el retriever lo encuentra inmediatamente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Herramientas modernas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LoRA (Low-Rank Adaptation)&lt;/strong&gt;: La técnica estándar. En lugar de reentrenar los miles de millones de parámetros del modelo completo, LoRA entrena solo unas matrices de bajo rango «acopladas» a las capas del modelo. Reduce el coste de entrenamiento en un 90%+ y el almacenamiento del modelo fine-tuneado a unos pocos MB de «adaptadores».&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QLoRA&lt;/strong&gt;: LoRA aplicado sobre un modelo cuantizado a 4 bits. Permite fine-tunear modelos de 70B parámetros en una sola GPU de consumo (24GB VRAM). Democratizó el fine-tuning para startups y equipos sin clusters de GPUs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vertex AI Tuning / OpenAI Fine-Tuning API&lt;/strong&gt;: Servicios gestionados donde subes tu dataset de entrenamiento (pares instrucción-respuesta) y la plataforma ejecuta el fine-tuning sin que gestiones infraestructura GPU.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Coste real&lt;/strong&gt;: Variable. Fine-tuning con LoRA en un modelo de 7B parámetros con 10.000 ejemplos cuesta entre &lt;strong&gt;€5-20&lt;/strong&gt; en cloud (Google Cloud, AWS). Un modelo de 70B puede costar &lt;strong&gt;€50-200&lt;/strong&gt; por sesión de entrenamiento. Más el coste de preparar el dataset (horas de trabajo humano). Como analizamos en la &lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;Economía Oculta de la IA&lt;/a&gt;, el coste oculto del fine-tuning no es el compute — es la &lt;strong&gt;curación del dataset de entrenamiento&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opción 4: Tool Calling / MCP — La que Nadie Menciona
&lt;/h3&gt;

&lt;p&gt;Esta es la opción que descubrí por eliminación después de que RAG fallara estrepitosamente en el &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;Radar de Obsolescencia&lt;/a&gt;. &lt;strong&gt;Tool Calling&lt;/strong&gt; significa que el LLM no intenta «saber» la respuesta; en su lugar, sabe &lt;strong&gt;a quién preguntarle&lt;/strong&gt; — es decir, qué herramienta ejecutar para obtener la información con precisión determinista.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cuándo es la opción correcta&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Los datos son &lt;strong&gt;estructurados&lt;/strong&gt; (bases de datos SQL, APIs REST, hojas de cálculo con esquemas).&lt;/li&gt;
&lt;li&gt;Necesitas &lt;strong&gt;precisión numérica absoluta&lt;/strong&gt; (cálculos financieros, métricas de inventario, datos de sensores).&lt;/li&gt;
&lt;li&gt;La operación requiere &lt;strong&gt;acciones&lt;/strong&gt;, no solo respuestas (crear un ticket, enviar un email, ejecutar un query, llamar a una API externa).&lt;/li&gt;
&lt;li&gt;Quieres &lt;strong&gt;estandarizar las conexiones&lt;/strong&gt; entre el LLM y las herramientas para no quedar atado a un proveedor — exactamente el problema que resuelve &lt;a href="https://dev.to/es/posts/mcp_protocol/"&gt;MCP (Model Context Protocol)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Arquitectura&lt;/strong&gt;: El LLM (Gemini 2.5, Claude) actúa como &lt;strong&gt;orquestador semántico&lt;/strong&gt;: entiende la intención del usuario en lenguaje natural, decide qué herramienta(s) ejecutar, construye los parámetros, ejecuta la(s) herramienta(s), e interpreta los resultados para el usuario. Las herramientas son funciones Python deterministas (decoradas con &lt;code&gt;@tool&lt;/code&gt; en CrewAI) que ejecutan operaciones de precisión: queries SQL a Supabase, llamadas a APIs de proveedores, cálculos de programación lineal con PuLP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coste&lt;/strong&gt;: El más bajo de las cuatro opciones. Solo pagas los tokens del LLM (típicamente pocos, porque el prompt es corto) y la ejecución de las herramientas (queries SQL, llamadas API). En el Radar de Obsolescencia, el coste por ejecución completa (analizar un componente, cruzar el grafo BOM, calcular impacto financiero, generar reporte ejecutivo) fue inferior a &lt;strong&gt;€0.02 por consulta&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caso real en Datalaria&lt;/strong&gt;: El &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;Radar Agéntico de Obsolescencia&lt;/a&gt; usa exclusivamente Tool Calling. El LLM (Gemini 2.5 vía CrewAI) entiende la alerta de obsolescencia en lenguaje natural, pero todas las operaciones de datos — consulta SQL al catálogo de componentes, cruce del grafo BOM, cálculo del P&amp;amp;L, generación del PDF — las ejecutan herramientas Python deterministas. Resultado: reportes ejecutivos en 4 segundos con &lt;strong&gt;0% de alucinación numérica&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  La Matriz de Decisión
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterio&lt;/th&gt;
&lt;th&gt;Prompt Engineering&lt;/th&gt;
&lt;th&gt;RAG&lt;/th&gt;
&lt;th&gt;Fine-Tuning&lt;/th&gt;
&lt;th&gt;Tool Calling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Coste inicial&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Mínimo&lt;/td&gt;
&lt;td&gt;⭐⭐ Bajo-medio&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Alto&lt;/td&gt;
&lt;td&gt;⭐⭐ Bajo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Coste operativo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Bajo&lt;/td&gt;
&lt;td&gt;⭐⭐ Medio&lt;/td&gt;
&lt;td&gt;⭐ Bajo (modelo pequeño)&lt;/td&gt;
&lt;td&gt;⭐ Mínimo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Precisión (texto libre)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐ Media&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Alta&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Muy alta&lt;/td&gt;
&lt;td&gt;⭐ N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Precisión (datos estruct.)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Baja&lt;/td&gt;
&lt;td&gt;⭐ Baja&lt;/td&gt;
&lt;td&gt;⭐ Baja&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Exacta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Actualización de datos&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Instantánea&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Instantánea&lt;/td&gt;
&lt;td&gt;⭐ Requiere reentrenar&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Tiempo real&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Esfuerzo de implementación&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Horas&lt;/td&gt;
&lt;td&gt;⭐⭐ Días-semanas&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Semanas-meses&lt;/td&gt;
&lt;td&gt;⭐⭐ Días&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mantenimiento&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Mínimo&lt;/td&gt;
&lt;td&gt;⭐⭐ Medio&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Alto (data drift)&lt;/td&gt;
&lt;td&gt;⭐⭐ Medio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Trazabilidad (EU AI Act)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Difícil&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Alta (fuentes citables)&lt;/td&gt;
&lt;td&gt;⭐ Opaca (caja negra)&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ Total (determinista)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Caso de uso ideal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tareas genéricas con instrucciones claras&lt;/td&gt;
&lt;td&gt;Conocimiento propietario textual, actualizable&lt;/td&gt;
&lt;td&gt;Estilo/tono específico, tareas ultra-especializadas&lt;/td&gt;
&lt;td&gt;Datos estructurados, precisión numérica, acciones&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  El Framework de 3 Preguntas
&lt;/h3&gt;

&lt;p&gt;Si la matriz te parece densa, he destilado un framework de 3 preguntas que resuelve el 90% de las decisiones:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pregunta 1: ¿Los datos que necesita el LLM caben en el prompt?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sí → &lt;strong&gt;Prompt Engineering&lt;/strong&gt;. Inyecta el contexto directamente. Es más simple, más barato, más rápido.&lt;/li&gt;
&lt;li&gt;No → Siguiente pregunta.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pregunta 2: ¿Los datos son texto libre o estructurados?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Texto libre (documentación, manuales, posts) → &lt;strong&gt;RAG&lt;/strong&gt;. El retrieval semántico es superior para buscar en texto no estructurado.&lt;/li&gt;
&lt;li&gt;Estructurados (SQL, APIs, tablas, cálculos) → &lt;strong&gt;Tool Calling&lt;/strong&gt;. Herramientas deterministas que ejecutan queries exactos.&lt;/li&gt;
&lt;li&gt;Ambos → &lt;strong&gt;Arquitectura híbrida&lt;/strong&gt; (RAG para el contexto textual + Tool Calling para los datos estructurados, como propusimos en el &lt;a href="https://dev.to/es/posts/rag_antipatrones/"&gt;artículo de RAG&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pregunta 3: ¿Necesitas un comportamiento o estilo que el modelo base no reproduce ni con el mejor prompt?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sí (tono de marca único, jerga de dominio ultra-específica, tarea que los modelos generalistas fallan consistentemente) → &lt;strong&gt;Fine-Tuning&lt;/strong&gt; sobre un modelo base.&lt;/li&gt;
&lt;li&gt;No → Vuelve a Prompt Engineering y afina tu prompt antes de considerar técnicas más complejas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lo que Aprendí Implementando las Cuatro
&lt;/h3&gt;

&lt;p&gt;La lección más valiosa que me dejó la experiencia de operar estas cuatro técnicas en producción se resume en una frase: &lt;strong&gt;empieza siempre por la técnica más simple que podría funcionar&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La tentación es ir directamente a RAG o fine-tuning porque son más «sofisticados». Pero la sofisticación no correlaciona con la efectividad. En el &lt;a href="https://dev.to/es/posts/ia_agents_part1/"&gt;Autopilot&lt;/a&gt;, la mayor parte de la calidad del output proviene del Prompt Engineering — system prompts cuidadosamente diseñados, few-shot examples, y Chain-of-thought. RAG añadió valor marginal en el Ops Copilot para búsqueda en el blog. Fine-tuning no fue necesario en ningún caso. Y Tool Calling fue la técnica transformadora en el Radar de Obsolescencia, donde RAG había fracasado.&lt;/p&gt;

&lt;p&gt;El orden de evaluación debería ser siempre:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Engineering&lt;/strong&gt; (horas, ~€0)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool Calling&lt;/strong&gt; si los datos son estructurados (días, ~€0)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG&lt;/strong&gt; si necesitas acceso a texto propietario (días-semanas, ~€3-50/mes)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-Tuning&lt;/strong&gt; solo si las tres anteriores fallan consistentemente (semanas, €50-500+)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Y en la era del &lt;a href="https://dev.to/es/posts/eu_ai_act/"&gt;EU AI Act&lt;/a&gt;, hay una quinta consideración que no es técnica sino legal: la &lt;strong&gt;trazabilidad&lt;/strong&gt;. El Artículo 10 del reglamento exige que los datos de entrenamiento de sistemas de alto riesgo sean «pertinentes, representativos, y en la medida de lo posible, exentos de errores y completos». Esto aplica directamente al fine-tuning: si fine-tuneas un modelo con datos sesgados o incorrectos, y ese modelo toma decisiones en un ámbito regulado, estás expuesto a sanciones. RAG y Tool Calling, al ser transparentes en sus fuentes, ofrecen una trazabilidad que fine-tuning no puede igualar.&lt;/p&gt;

&lt;p&gt;Como escribimos en la &lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;Economía Oculta de la IA&lt;/a&gt;, la Regla del 10x aplica: si una técnica más compleja no te da un resultado &lt;strong&gt;10 veces mejor&lt;/strong&gt; que la anterior, probablemente no justifica su coste y complejidad adicional. Empieza simple. Mide. Escala solo cuando los datos lo exijan.&lt;/p&gt;




&lt;h4&gt;
  
  
  Fuentes de Interés:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/generative-ai/models/tune-models" rel="noopener noreferrer"&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt;: Tuning &amp;amp; Fine-tuning with Vertex AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/docs/peft/conceptual_guides/lora" rel="noopener noreferrer"&gt;&lt;strong&gt;Hugging Face&lt;/strong&gt;: LoRA — Low-Rank Adaptation of Large Language Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pinecone.io/learn/rag-vs-fine-tuning/" rel="noopener noreferrer"&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;: RAG vs Fine-Tuning — How to Choose&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering" rel="noopener noreferrer"&gt;&lt;strong&gt;Anthropic&lt;/strong&gt;: Prompt Engineering Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/rag_antipatrones/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: RAG en Producción — 7 Antipatrones que Destruyen la Precisión&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/mcp_protocol/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: MCP Protocol — El USB de la IA (Tool Calling Estandarizado)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: El Radar Agéntico — Tool Calling en Producción&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: La Economía Oculta de la IA — Costes Reales de Cada Técnica&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/eu_ai_act/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: EU AI Act — Artículo 10 y Datos de Entrenamiento&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>An Engineer's Productivity Stack in 2026: The Tools I Use Every Day</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sat, 01 Aug 2026 18:48:01 +0000</pubDate>
      <link>https://dev.to/datalaria/an-engineers-productivity-stack-in-2026-the-tools-i-use-every-day-1fo5</link>
      <guid>https://dev.to/datalaria/an-engineers-productivity-stack-in-2026-the-tools-i-use-every-day-1fo5</guid>
      <description>&lt;p&gt;After more than 60 articles, 9 technical series, 4 production applications, and a bilingual blog that generates weekly content, I get asked the same question over and over: &lt;strong&gt;"What tools do you use?"&lt;/strong&gt; Not what tools I recommend, not what tools are trending, but which ones I actually use, every single day, to build what you see on Datalaria.&lt;/p&gt;

&lt;p&gt;This article is the answer. No sponsorships, no affiliate links, no filters. Every tool listed here has been tested in production, paid for (or not) with my own money, and documented in at least one post on this blog. If I haven't used it in a real project, it's not on this list.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Workflow: 10 Phases, 10 Tools
&lt;/h3&gt;

&lt;p&gt;The key to my productivity isn't in individual tools but in how they fit together. Each workflow phase feeds the next, and the output of one tool is the input of another. No silos; it's a pipeline.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2su9ylciet019vaqm44t.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2su9ylciet019vaqm44t.jpg" alt="The complete workflow: from idea to deployment" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Why this one&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🧠 &lt;strong&gt;Think&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Gemini Deep Research&lt;/td&gt;
&lt;td&gt;Exhaustive research in minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✍️ &lt;strong&gt;Write&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Hugo + VS Code + Markdown&lt;/td&gt;
&lt;td&gt;Full control, Git-native, speed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💻 &lt;strong&gt;Code&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Python + Pandas + FastAPI&lt;/td&gt;
&lt;td&gt;The data engineering trident&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🗄️ &lt;strong&gt;Store&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Supabase (PostgreSQL)&lt;/td&gt;
&lt;td&gt;Free BaaS, RLS, automatic REST APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🤖 &lt;strong&gt;Orchestrate AI&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;CrewAI + Gemini 2.5&lt;/td&gt;
&lt;td&gt;Autonomous agents with Tool Calling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚙️ &lt;strong&gt;Automate&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;GitHub Actions&lt;/td&gt;
&lt;td&gt;Free CI/CD, event-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚀 &lt;strong&gt;Deploy&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Netlify&lt;/td&gt;
&lt;td&gt;Deploy from Git in seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📧 &lt;strong&gt;Communicate&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Brevo (Newsletter)&lt;/td&gt;
&lt;td&gt;Free email marketing, API, segmentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📊 &lt;strong&gt;Visualize&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Chart.js + Vanilla JS&lt;/td&gt;
&lt;td&gt;Lightweight, no heavy frameworks, interactive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📚 &lt;strong&gt;Learn&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;NotebookLM&lt;/td&gt;
&lt;td&gt;Transforms any source into study resources&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🧠 Think: Gemini Deep Research
&lt;/h3&gt;

&lt;p&gt;Before writing a single line, I research. And this is where generative AI has radically changed my workflow. &lt;strong&gt;Gemini Deep Research&lt;/strong&gt; (within Gemini Advanced) is the tool I use for exhaustive research before every article and every technical project.&lt;/p&gt;

&lt;p&gt;When I was preparing the article on &lt;a href="https://dev.to/en/posts/thomas_bayes/"&gt;Thomas Bayes&lt;/a&gt;, I needed to verify dates, publications, historical context of the Royal Society, and the precise mathematical connection between Bayes' theorem and Facebook Prophet. What previously would have required hours of browsing through Wikipedia, Stanford Encyclopedia of Philosophy, and academic papers, Gemini Deep Research compiled into a structured report in &lt;strong&gt;under 10 minutes&lt;/strong&gt;, with verifiable citations and sources.&lt;/p&gt;

&lt;p&gt;The key: &lt;strong&gt;I don't use it to write; I use it to research&lt;/strong&gt;. The final text is always mine. Gemini gives me the raw material; I build the narrative. I documented this approach in detail in &lt;a href="https://dev.to/en/posts/ai-education-deep_research/"&gt;AI in Education with Deep Research&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✍️ Write: Hugo + VS Code + Markdown
&lt;/h3&gt;

&lt;p&gt;Everything you see on Datalaria is written in &lt;strong&gt;pure Markdown&lt;/strong&gt;, edited in &lt;strong&gt;VS Code&lt;/strong&gt;, compiled with &lt;strong&gt;Hugo&lt;/strong&gt;, and versioned in &lt;strong&gt;Git&lt;/strong&gt;. Zero WordPress, zero visual CMS, zero drag-and-drop.&lt;/p&gt;

&lt;p&gt;Why this seemingly masochistic decision? Because a Hugo blog is &lt;strong&gt;code&lt;/strong&gt;. I can run &lt;code&gt;git diff&lt;/code&gt; to see what I changed in an article. I can run &lt;code&gt;git blame&lt;/code&gt; to know when I changed it. I can fork, create a branch, experiment with a new structure, and merge only if it works. And I can automate deployment with a &lt;code&gt;git push&lt;/code&gt;. I documented all these architectural decisions in &lt;a href="https://dev.to/en/posts/datalaria-blog/"&gt;Building Datalaria&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hugo compiles the 700+ pages of this blog (Spanish + English) in &lt;strong&gt;under 4 minutes&lt;/strong&gt;. A traditional CMS would take several seconds just to render a single page. When you iterate fast, compilation speed isn't a luxury; it's a necessity.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 Code: Python + Pandas + FastAPI
&lt;/h3&gt;

&lt;p&gt;The trident I use for absolutely everything involving data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; as the base language. No debate. The library ecosystem for data engineering, ML, and automation has no rival.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pandas&lt;/strong&gt; for data manipulation, cleaning, and transformation. Every pipeline in the &lt;a href="https://dev.to/en/posts/sop-engineering-part2-forecasting/"&gt;S&amp;amp;OP series&lt;/a&gt; — from sales data ingestion to forecast generation with Prophet — goes through Pandas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt; when I need to expose a service as a REST API. We used it in &lt;a href="https://dev.to/en/posts/obs_part6_fastapi/"&gt;Part 6 of the Observability series&lt;/a&gt; to build the obsolescence radar backend, and in the &lt;a href="https://dev.to/en/posts/app-openweather_part1_backend/"&gt;OpenWeather app&lt;/a&gt; as a weather prediction backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🗄️ Store: Supabase (PostgreSQL)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Supabase&lt;/strong&gt; is managed PostgreSQL with superpowers: authentication, Row Level Security (RLS), automatic REST APIs generated from the database schema, and a free tier that covers 95% of my development and prototyping needs.&lt;/p&gt;

&lt;p&gt;I use it as the data backend in the &lt;a href="https://dev.to/en/posts/obs_part4_ingestion/"&gt;Observability series&lt;/a&gt; (storing the component catalog, obsolescence alerts, and BOM graphs), in the &lt;a href="https://dev.to/en/posts/sop-engineering-part3-optimization/"&gt;S&amp;amp;OP pipelines&lt;/a&gt; (demand data, forecasts, production plans), and in the &lt;a href="https://dev.to/en/posts/game_snake/"&gt;Snake game with a global leaderboard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Why Supabase over Firebase? Because Supabase is &lt;strong&gt;real PostgreSQL&lt;/strong&gt;. I can write native SQL, create materialized views, use complex JOINs, and migrate to any other managed PostgreSQL (RDS, Cloud SQL) without changing a single line of code. Firebase traps you in its proprietary ecosystem; Supabase includes the exit door.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Orchestrate AI: CrewAI + Gemini 2.5
&lt;/h3&gt;

&lt;p&gt;When I need AI to not just answer questions but &lt;strong&gt;execute complex multi-step tasks&lt;/strong&gt;, I use &lt;strong&gt;CrewAI&lt;/strong&gt; as the agent orchestration framework. Each agent has a role, an objective, specific Python tools (decorated with &lt;code&gt;@tool&lt;/code&gt;), and the ability to coordinate with other agents.&lt;/p&gt;

&lt;p&gt;Gemini 2.5 Pro/Flash is the LLM powering the agents. The CrewAI + Gemini + Tool Calling combination is the architecture documented across the entire &lt;a href="https://dev.to/en/posts/ai_agents_part1/"&gt;9-part Autopilot series&lt;/a&gt;, from the automatic content generator to the Ops Copilot.&lt;/p&gt;

&lt;p&gt;As we analyzed in the &lt;a href="https://dev.to/en/posts/rag_antipatterns/"&gt;RAG vs. Tool Calling article&lt;/a&gt;, the key is separating the "semantic brain" (the LLM understands context) from the "deterministic muscle" (Python tools execute precision operations). The LLM thinks; the tools do.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Automate: GitHub Actions
&lt;/h3&gt;

&lt;p&gt;Every CI/CD pipeline at Datalaria runs on &lt;strong&gt;GitHub Actions&lt;/strong&gt;. It's free for public repositories, event-driven (triggers on push, cron, webhook), and flexible enough to orchestrate everything from Hugo compilation to CrewAI pipeline execution.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://dev.to/en/posts/ai_agents_part5/"&gt;Autopilot Part 5&lt;/a&gt;, we documented how to configure a GitHub Actions workflow that runs the complete agentic pipeline every week: generates content with CrewAI, creates Markdown files, commits, pushes, and automatically deploys to Netlify. All without human intervention.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Deploy: Netlify
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Netlify&lt;/strong&gt; deploys Datalaria directly from the GitHub repository. Every &lt;code&gt;git push&lt;/code&gt; to the &lt;code&gt;main&lt;/code&gt; branch triggers a Hugo build and publishes the site in seconds. Features like Netlify Functions (serverless), redirects, and custom headers cover everything I need without managing servers.&lt;/p&gt;

&lt;p&gt;We documented it in &lt;a href="https://dev.to/en/posts/app_openweather_part2_frontend/"&gt;OpenWeather app Part 2&lt;/a&gt; as the deployment platform for frontend applications with serverless backends.&lt;/p&gt;

&lt;h3&gt;
  
  
  📧 Communicate: Brevo (Newsletter)
&lt;/h3&gt;

&lt;p&gt;Datalaria's newsletter uses &lt;strong&gt;Brevo&lt;/strong&gt; (formerly Sendinblue). Generous free tier (300 emails/day), REST API for automation, audience segmentation, and a template editor.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://dev.to/en/posts/ai_agents_part6/"&gt;Autopilot Part 6&lt;/a&gt;, we documented how the CrewAI pipeline generates email content, builds the HTML, and sends it automatically via Brevo's API — closing the complete generation → publication → distribution cycle without manual intervention.&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 Visualize: Chart.js + Vanilla JS
&lt;/h3&gt;

&lt;p&gt;When I need interactive charts in web apps, I use &lt;strong&gt;Chart.js&lt;/strong&gt; with &lt;strong&gt;vanilla JavaScript&lt;/strong&gt;. No React, no Vue, no heavy frameworks. The philosophy is intentional: every library you add is a dependency to maintain, an attack surface to protect, and a bundle to inflate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/en/posts/app_openweather_part4_extras_ux/"&gt;OpenWeather app Part 4&lt;/a&gt; and &lt;a href="https://dev.to/en/posts/basic-visualizations/"&gt;Basic Visualizations&lt;/a&gt; demonstrate that Chart.js + pure CSS produces professional-quality interactive dashboards without needing a 200KB framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 Learn: NotebookLM
&lt;/h3&gt;

&lt;p&gt;Google's &lt;strong&gt;NotebookLM&lt;/strong&gt; is my accelerated learning tool. I upload technical documentation, academic papers, or conference transcripts, and NotebookLM generates summaries, study questions, and — most transformatively — &lt;strong&gt;audio podcasts&lt;/strong&gt; where two hosts discuss the material as if it were a natural conversation.&lt;/p&gt;

&lt;p&gt;I documented it in depth in &lt;a href="https://dev.to/en/posts/notebooklm-sql/"&gt;NotebookLM + SQL&lt;/a&gt;, showing how to transform PostgreSQL documentation into interactive study resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Tried and Discarded
&lt;/h3&gt;

&lt;p&gt;Not everything you try survives contact with production. These are the tools I evaluated and discarded, with reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WordPress&lt;/strong&gt;: Used it for years. Abandoned it for the slowness, the plugins, the constant security updates, and the impossibility of versioning content with Git. Hugo is 100x faster and everything is code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangChain&lt;/strong&gt;: LLM orchestration framework I tried before CrewAI. Too much abstraction, deep inheritance chains that were hard to debug, and an API that changed with every minor version. CrewAI is simpler, more explicit, and more stable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt;: Excellent for rapid data dashboard prototypes. But when you need control over the frontend (CSS, animations, UX), Streamlit becomes a straitjacket. For production, I prefer FastAPI + HTML/CSS/JS, where I have full control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB&lt;/strong&gt;: Tried it as a PostgreSQL alternative for semi-structured data. But the lack of JOINs and the impossibility of complex relational queries quickly ruled it out for my industrial use cases (BOM graphs, demand table cross-referencing).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Total Stack Cost: The Real Economics
&lt;/h3&gt;

&lt;p&gt;This is where the &lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;Hidden Economics of AI&lt;/a&gt; becomes directly relevant. How much does operating this entire stack cost?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini Advanced&lt;/td&gt;
&lt;td&gt;~€22/month&lt;/td&gt;
&lt;td&gt;Includes Deep Research, 2.5 Pro, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hugo&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VS Code&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python + libraries&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CrewAI&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Actions&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Free for public repos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Netlify&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brevo&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Free tier (300 emails/day)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chart.js&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NotebookLM&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Included in Gemini Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TOTAL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~€22/month&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Virtually the entire stack is free or open source. The only recurring cost is the Gemini Advanced subscription, which covers both Deep Research and the models powering CrewAI agents. Even if we count Gemini API costs for Autopilot pipeline executions, the total rarely exceeds &lt;strong&gt;€5 extra per month&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Compare this with the cost of an "enterprise" stack: a licensed CMS (€50-500/month), a premium email marketing tool (€30-200/month), a managed hosting service (€20-100/month), and a BI platform (€50-300/month). The open source stack isn't just cheaper; it's &lt;strong&gt;more powerful&lt;/strong&gt;, because every tool is a box you can open, inspect, modify, and learn from.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Philosophy: Learning &amp;gt; Comfort
&lt;/h3&gt;

&lt;p&gt;If there's a common thread across every decision in this stack, it's this: &lt;strong&gt;I prioritize learning over comfort&lt;/strong&gt;. Hugo is harder than WordPress, but I learned static site generation, Go templates, and CI/CD. FastAPI is more work than Streamlit, but I learned REST API design, async/await, and OpenAPI. Supabase with native SQL is more verbose than Firebase, but I learned real PostgreSQL, RLS, and migrations.&lt;/p&gt;

&lt;p&gt;Every tool in the stack isn't just a tool; it's a &lt;strong&gt;course&lt;/strong&gt;. And the 60+ articles on this blog are the notes from those courses, shared openly so anyone can walk the same path.&lt;/p&gt;

&lt;p&gt;As &lt;a href="https://dev.to/en/posts/deming/"&gt;Deming&lt;/a&gt; would say: &lt;em&gt;"Learning is not compulsory. Neither is survival."&lt;/em&gt; In a world where AI redefines the rules of the game every quarter, the stack you use matters less than &lt;strong&gt;your ability to learn the next stack&lt;/strong&gt;. And that ability is built by choosing tools that force you to understand what's under the hood.&lt;/p&gt;




&lt;h4&gt;
  
  
  Sources of Interest:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Hugo&lt;/strong&gt;: Static Site Generator — Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Supabase&lt;/strong&gt;: Open Source Backend as a Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.crewai.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;CrewAI&lt;/strong&gt;: AI Agent Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fastapi.tiangolo.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;FastAPI&lt;/strong&gt;: Modern Web Framework for Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;Chart.js&lt;/strong&gt;: Open Source JavaScript Visualizations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.brevo.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Brevo&lt;/strong&gt;: Email Marketing Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/datalaria-blog/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Building the Blog — Architecture Decisions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: The Hidden Economics of AI — The Real Stack Cost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/ai_agents_part1/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Autopilot Series — 9 Parts of Agentic Engineering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>El Stack de Productividad de un Ingeniero en 2026: Las Herramientas que Uso Cada Día</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sat, 01 Aug 2026 18:43:23 +0000</pubDate>
      <link>https://dev.to/datalaria/el-stack-de-productividad-de-un-ingeniero-en-2026-las-herramientas-que-uso-cada-dia-4fn3</link>
      <guid>https://dev.to/datalaria/el-stack-de-productividad-de-un-ingeniero-en-2026-las-herramientas-que-uso-cada-dia-4fn3</guid>
      <description>&lt;p&gt;Después de más de 60 artículos, 9 series técnicas, 4 aplicaciones en producción y un blog bilingüe que genera contenido semanal, me hacen la misma pregunta una y otra vez: &lt;strong&gt;«¿Qué herramientas usas?»&lt;/strong&gt;. No qué herramientas recomiendo, no qué herramientas están de moda, sino cuáles uso yo realmente, todos los días, para construir lo que ves en Datalaria.&lt;/p&gt;

&lt;p&gt;Este artículo es la respuesta. Sin patrocinios, sin enlaces de afiliados, sin filtros. Cada herramienta que aparece aquí la he testeado en producción, he pagado (o no) por ella con mi propio dinero, y he documentado su uso en al menos un post de este blog. Si no la he usado en un proyecto real, no está en esta lista.&lt;/p&gt;

&lt;h3&gt;
  
  
  El Workflow: 10 Fases, 10 Herramientas
&lt;/h3&gt;

&lt;p&gt;La clave de mi productividad no está en las herramientas individuales sino en cómo encajan unas con otras. Cada fase del workflow alimenta a la siguiente, y la salida de una herramienta es la entrada de otra. No hay silos; hay un pipeline.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feusnjk8p1y9nprifsxu2.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feusnjk8p1y9nprifsxu2.jpg" alt="El workflow completo: de la idea al despliegue" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fase&lt;/th&gt;
&lt;th&gt;Herramienta&lt;/th&gt;
&lt;th&gt;Por qué esta y no otra&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🧠 &lt;strong&gt;Pensar&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Gemini Deep Research&lt;/td&gt;
&lt;td&gt;Investigación exhaustiva en minutos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✍️ &lt;strong&gt;Escribir&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Hugo + VS Code + Markdown&lt;/td&gt;
&lt;td&gt;Control total, Git-native, velocidad&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💻 &lt;strong&gt;Codificar&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Python + Pandas + FastAPI&lt;/td&gt;
&lt;td&gt;El tridente de la ingeniería de datos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🗄️ &lt;strong&gt;Almacenar&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Supabase (PostgreSQL)&lt;/td&gt;
&lt;td&gt;BaaS gratuito, RLS, APIs REST automáticas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🤖 &lt;strong&gt;Orquestar IA&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;CrewAI + Gemini 2.5&lt;/td&gt;
&lt;td&gt;Agentes autónomos con Tool Calling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚙️ &lt;strong&gt;Automatizar&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;GitHub Actions&lt;/td&gt;
&lt;td&gt;CI/CD gratuito, evento-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚀 &lt;strong&gt;Desplegar&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Netlify&lt;/td&gt;
&lt;td&gt;Deploy from Git en segundos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📧 &lt;strong&gt;Comunicar&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Brevo (Newsletter)&lt;/td&gt;
&lt;td&gt;Email marketing gratuito, API, segmentación&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📊 &lt;strong&gt;Visualizar&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Chart.js + Vanilla JS&lt;/td&gt;
&lt;td&gt;Ligero, sin frameworks pesados, interactivo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📚 &lt;strong&gt;Aprender&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;NotebookLM&lt;/td&gt;
&lt;td&gt;Transforma cualquier fuente en recursos de estudio&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🧠 Pensar: Gemini Deep Research
&lt;/h3&gt;

&lt;p&gt;Antes de escribir una sola línea, investigo. Y aquí es donde la IA generativa ha cambiado radicalmente mi workflow. &lt;strong&gt;Gemini Deep Research&lt;/strong&gt; (dentro de Gemini Advanced) es la herramienta que uso para hacer investigación exhaustiva antes de cada artículo y cada proyecto técnico.&lt;/p&gt;

&lt;p&gt;Cuando estaba preparando el artículo sobre &lt;a href="https://dev.to/es/posts/thomas_bayes/"&gt;Thomas Bayes&lt;/a&gt;, necesitaba verificar fechas, publicaciones, contexto histórico de la Royal Society, y la conexión matemática precisa entre el teorema de Bayes y Facebook Prophet. Lo que antes habría requerido horas de navegación por Wikipedia, Stanford Encyclopedia of Philosophy y papers académicos, Gemini Deep Research lo compiló en un informe estructurado en &lt;strong&gt;menos de 10 minutos&lt;/strong&gt;, con citas y fuentes verificables.&lt;/p&gt;

&lt;p&gt;La clave: &lt;strong&gt;no lo uso para escribir; lo uso para investigar&lt;/strong&gt;. El texto final siempre es mío. Gemini me da la materia prima; yo construyo la narrativa. Documenté este enfoque en detalle en &lt;a href="https://dev.to/es/posts/ia-educacion-deep_research/"&gt;IA en Educación con Deep Research&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✍️ Escribir: Hugo + VS Code + Markdown
&lt;/h3&gt;

&lt;p&gt;Todo lo que ves en Datalaria está escrito en &lt;strong&gt;Markdown puro&lt;/strong&gt;, editado en &lt;strong&gt;VS Code&lt;/strong&gt;, compilado con &lt;strong&gt;Hugo&lt;/strong&gt; y versionado en &lt;strong&gt;Git&lt;/strong&gt;. Cero WordPress, cero CMS visual, cero drag-and-drop.&lt;/p&gt;

&lt;p&gt;¿Por qué esta decisión aparentemente masoquista? Porque un blog en Hugo es &lt;strong&gt;código&lt;/strong&gt;. Puedo hacer &lt;code&gt;git diff&lt;/code&gt; para ver qué cambié en un artículo. Puedo hacer &lt;code&gt;git blame&lt;/code&gt; para saber cuándo lo cambié. Puedo hacer un fork, crear una rama, experimentar con una estructura nueva, y hacer merge solo si funciona. Y puedo automatizar el despliegue con un &lt;code&gt;git push&lt;/code&gt;. Documenté todas estas decisiones arquitectónicas en &lt;a href="https://dev.to/es/posts/datalaria-blog/"&gt;Construyendo Datalaria&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hugo compila las más de 700 páginas de este blog (español + inglés) en &lt;strong&gt;menos de 4 minutos&lt;/strong&gt;. Un CMS tradicional tardaría varios segundos solo en renderizar una página individual. Cuando iteras rápido, la velocidad de compilación no es un lujo; es una necesidad.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 Codificar: Python + Pandas + FastAPI
&lt;/h3&gt;

&lt;p&gt;El tridente que uso para absolutamente todo lo que implique datos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; como lenguaje base. Sin discusión. El ecosistema de librerías para ingeniería de datos, ML y automatización no tiene rival.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pandas&lt;/strong&gt; para manipulación, limpieza y transformación de datos. Cada pipeline de la &lt;a href="https://dev.to/es/posts/sop-ingenieria-parte2-prediccion/"&gt;serie S&amp;amp;OP&lt;/a&gt; — desde la ingesta de datos de venta hasta la generación de forecasts con Prophet — pasa por Pandas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt; cuando necesito exponer un servicio como API REST. Lo usamos en la &lt;a href="https://dev.to/es/posts/obs_parte6_fastapi/"&gt;Parte 6 de la serie de Observabilidad&lt;/a&gt; para construir el backend del radar de obsolescencia, y en la &lt;a href="https://dev.to/es/posts/app-openweather_part1_backend/"&gt;app de OpenWeather&lt;/a&gt; como backend de predicción meteorológica.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🗄️ Almacenar: Supabase (PostgreSQL)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Supabase&lt;/strong&gt; es PostgreSQL gestionado con superpoderes: autenticación, Row Level Security (RLS), APIs REST automáticas generadas a partir del esquema de la base de datos, y un tier gratuito que cubre el 95% de mis necesidades de desarrollo y prototipado.&lt;/p&gt;

&lt;p&gt;Lo uso como backend de datos en la &lt;a href="https://dev.to/es/posts/obs_parte4_ingesta/"&gt;serie de Observabilidad&lt;/a&gt; (almacenando el catálogo de componentes, alertas de obsolescencia y grafos BOM), en los pipelines de &lt;a href="https://dev.to/es/posts/sop-ingenieria-parte3-optimizacion/"&gt;S&amp;amp;OP&lt;/a&gt; (datos de demanda, forecasts, planes de producción), y en el &lt;a href="https://dev.to/es/posts/game_snake/"&gt;juego Snake con leaderboard global&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;¿Por qué Supabase y no Firebase? Porque Supabase es &lt;strong&gt;PostgreSQL real&lt;/strong&gt;. Puedo escribir SQL nativo, crear vistas materializadas, usar JOINs complejos y migrar a cualquier otro PostgreSQL gestionado (RDS, Cloud SQL) sin cambiar una línea de código. Firebase te atrapa en su ecosistema propietario; Supabase te da la puerta de salida incluida.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Orquestar IA: CrewAI + Gemini 2.5
&lt;/h3&gt;

&lt;p&gt;Cuando necesito que la IA no solo responda preguntas sino que &lt;strong&gt;ejecute tareas complejas de múltiples pasos&lt;/strong&gt;, uso &lt;strong&gt;CrewAI&lt;/strong&gt; como framework de orquestación de agentes. Cada agente tiene un rol, un objetivo, herramientas Python específicas (decoradas con &lt;code&gt;@tool&lt;/code&gt;), y la capacidad de coordinarse con otros agentes.&lt;/p&gt;

&lt;p&gt;Gemini 2.5 Pro/Flash es el LLM que alimenta a los agentes. La combinación CrewAI + Gemini + Tool Calling es la arquitectura que documenta toda la &lt;a href="https://dev.to/es/posts/ia_agents_part1/"&gt;serie Autopilot de 9 partes&lt;/a&gt;, desde el generador automático de contenido hasta el Ops Copilot.&lt;/p&gt;

&lt;p&gt;Como analizamos en el &lt;a href="https://dev.to/es/posts/rag_antipatrones/"&gt;artículo de RAG vs. Tool Calling&lt;/a&gt;, la clave está en separar el «cerebro semántico» (el LLM entiende el contexto) del «músculo determinista» (las herramientas Python ejecutan las operaciones de precisión). El LLM piensa; las herramientas hacen.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Automatizar: GitHub Actions
&lt;/h3&gt;

&lt;p&gt;Cada pipeline de CI/CD de Datalaria corre en &lt;strong&gt;GitHub Actions&lt;/strong&gt;. Es gratuito para repositorios públicos, evento-driven (se dispara con un push, un cron, un webhook), y lo suficientemente flexible para orquestar desde la compilación de Hugo hasta la ejecución de pipelines de CrewAI.&lt;/p&gt;

&lt;p&gt;En la &lt;a href="https://dev.to/es/posts/ia_agents_part5/"&gt;Parte 5 del Autopilot&lt;/a&gt;, documentamos cómo configurar un workflow de GitHub Actions que ejecuta el pipeline agéntico completo cada semana: genera contenido con CrewAI, crea los archivos Markdown, hace commit, push, y despliega automáticamente en Netlify. Todo sin intervención humana.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Desplegar: Netlify
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Netlify&lt;/strong&gt; despliega Datalaria directamente desde el repositorio de GitHub. Cada &lt;code&gt;git push&lt;/code&gt; a la rama &lt;code&gt;main&lt;/code&gt; dispara un build de Hugo y publica el sitio en segundos. Funcionalidades como Netlify Functions (serverless), redirects, y headers personalizados cubren todo lo que necesito sin gestionar servidores.&lt;/p&gt;

&lt;p&gt;Lo documentamos en la &lt;a href="https://dev.to/es/posts/app_openweather_part2_frontend/"&gt;Parte 2 de la app OpenWeather&lt;/a&gt; como plataforma de despliegue para aplicaciones frontend con backend serverless.&lt;/p&gt;

&lt;h3&gt;
  
  
  📧 Comunicar: Brevo (Newsletter)
&lt;/h3&gt;

&lt;p&gt;La newsletter de Datalaria usa &lt;strong&gt;Brevo&lt;/strong&gt; (antes Sendinblue). Tier gratuito generoso (300 emails/día), API REST para automatización, segmentación de audiencia, y editor de templates.&lt;/p&gt;

&lt;p&gt;En la &lt;a href="https://dev.to/es/posts/ia_agents_part6/"&gt;Parte 6 del Autopilot&lt;/a&gt;, documentamos cómo el pipeline de CrewAI genera el contenido del email, construye el HTML, y lo envía automáticamente vía la API de Brevo — cerrando el ciclo completo de generación → publicación → distribución sin intervención manual.&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 Visualizar: Chart.js + Vanilla JS
&lt;/h3&gt;

&lt;p&gt;Cuando necesito gráficos interactivos en las apps web, uso &lt;strong&gt;Chart.js&lt;/strong&gt; con &lt;strong&gt;JavaScript vanilla&lt;/strong&gt;. Sin React, sin Vue, sin frameworks pesados. La filosofía es intencional: cada librería que añades es una dependencia que mantener, una superficie de ataque que proteger, y un bundle que inflar.&lt;/p&gt;

&lt;p&gt;La &lt;a href="https://dev.to/es/posts/app_openweather_part4_extras_ux/"&gt;Parte 4 de la app OpenWeather&lt;/a&gt; y las &lt;a href="https://dev.to/es/posts/Visualizaciones-basicas/"&gt;Visualizaciones Básicas&lt;/a&gt; demuestran que Chart.js + CSS puro produce dashboards interactivos de calidad profesional sin necesidad de un framework de 200KB.&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 Aprender: NotebookLM
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;NotebookLM&lt;/strong&gt; de Google es mi herramienta de aprendizaje acelerado. Subo documentación técnica, papers académicos o transcripciones de conferencias, y NotebookLM genera resúmenes, preguntas de estudio, y — lo más transformador — &lt;strong&gt;podcasts de audio&lt;/strong&gt; donde dos hosts discuten el material como si fuera una conversación natural.&lt;/p&gt;

&lt;p&gt;Lo documenté en profundidad en &lt;a href="https://dev.to/es/posts/notebooklm-sql/"&gt;NotebookLM + SQL&lt;/a&gt;, mostrando cómo transformar la documentación de PostgreSQL en recursos de estudio interactivos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lo que Probé y Descarté
&lt;/h3&gt;

&lt;p&gt;No todo lo que pruebas sobrevive al contacto con la producción. Estas son las herramientas que evalué y descarté, con las razones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WordPress&lt;/strong&gt;: Lo usé durante años. Lo abandoné por la lentitud, los plugins, las actualizaciones de seguridad constantes, y la imposibilidad de versionar el contenido con Git. Hugo es 100x más rápido y todo es código.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangChain&lt;/strong&gt;: Framework de orquestación de LLMs que probé antes de CrewAI. Demasiada abstracción, cadenas de herencia profundas y difíciles de depurar, y una API que cambiaba con cada versión minor. CrewAI es más simple, más explícito, y más estable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt;: Excelente para prototipos rápidos de dashboards de datos. Pero cuando necesitas control sobre el frontend (CSS, animaciones, UX), Streamlit se convierte en una camisa de fuerza. Para producción, prefiero FastAPI + HTML/CSS/JS, donde tengo control total.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB&lt;/strong&gt;: Lo probé como alternativa a PostgreSQL para datos semi-estructurados. Pero la falta de JOINs y la imposibilidad de hacer queries relacionales complejas lo descartaron rápidamente para mis casos de uso industriales (grafos BOM, cruce de tablas de demanda).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  El Coste Total del Stack: La Economía Real
&lt;/h3&gt;

&lt;p&gt;Aquí es donde la &lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;Economía Oculta de la IA&lt;/a&gt; cobra relevancia directa. ¿Cuánto cuesta operar todo este stack?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Herramienta&lt;/th&gt;
&lt;th&gt;Coste mensual&lt;/th&gt;
&lt;th&gt;Notas&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini Advanced&lt;/td&gt;
&lt;td&gt;~€22/mes&lt;/td&gt;
&lt;td&gt;Incluye Deep Research, 2.5 Pro, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hugo&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VS Code&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python + librerías&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Tier gratuito&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CrewAI&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Actions&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Gratuito para repos públicos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Netlify&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Tier gratuito&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brevo&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Tier gratuito (300 emails/día)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chart.js&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NotebookLM&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;Incluido en Gemini Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TOTAL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~€22/mes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Prácticamente todo el stack es gratuito o open source. El único coste recurrente es la suscripción a Gemini Advanced, que cubre tanto Deep Research como los modelos que alimentan los agentes de CrewAI. Incluso si contamos los costes de API de Gemini para las ejecuciones del pipeline Autopilot, el total rara vez supera los &lt;strong&gt;€5 adicionales al mes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Compara esto con el coste de un stack «enterprise»: un CMS con licencia (€50-500/mes), una herramienta de email marketing premium (€30-200/mes), un servicio de hosting gestionado (€20-100/mes), y una plataforma de BI (€50-300/mes). El stack open source no es solo más barato; es &lt;strong&gt;más potente&lt;/strong&gt;, porque cada herramienta es una caja que puedes abrir, inspeccionar, modificar y aprender de ella.&lt;/p&gt;

&lt;h3&gt;
  
  
  La Filosofía: Aprendizaje &amp;gt; Comodidad
&lt;/h3&gt;

&lt;p&gt;Si hay un hilo conductor en todas las decisiones de este stack, es este: &lt;strong&gt;priorizo aprender sobre comodidad&lt;/strong&gt;. Hugo es más difícil que WordPress, pero aprendí generación de sitios estáticos, Go templates y CI/CD. FastAPI es más trabajo que Streamlit, pero aprendí diseño de APIs REST, async/await y OpenAPI. Supabase con SQL nativo es más verboso que Firebase, pero aprendí PostgreSQL real, RLS y migraciones.&lt;/p&gt;

&lt;p&gt;Cada herramienta del stack no es solo una herramienta; es un &lt;strong&gt;curso&lt;/strong&gt;. Y los 60+ artículos de este blog son los apuntes de esos cursos, compartidos en abierto para que cualquiera pueda recorrer el mismo camino.&lt;/p&gt;

&lt;p&gt;Como diría &lt;a href="https://dev.to/es/posts/deming/"&gt;Deming&lt;/a&gt;: &lt;em&gt;«El aprendizaje no es obligatorio. Tampoco lo es la supervivencia»&lt;/em&gt;. En un mundo donde la IA redefine las reglas del juego cada trimestre, el stack que uses importa menos que &lt;strong&gt;tu capacidad de aprender el siguiente stack&lt;/strong&gt;. Y esa capacidad se construye eligiendo herramientas que te obliguen a entender qué hay debajo del capó.&lt;/p&gt;




&lt;h4&gt;
  
  
  Fuentes de Interés:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Hugo&lt;/strong&gt;: Generador de Sitios Estáticos — Documentación Oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Supabase&lt;/strong&gt;: Backend as a Service Open Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.crewai.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;CrewAI&lt;/strong&gt;: Framework de Agentes de IA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fastapi.tiangolo.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;FastAPI&lt;/strong&gt;: Framework Web Moderno para Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;Chart.js&lt;/strong&gt;: Visualizaciones JavaScript Open Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.brevo.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Brevo&lt;/strong&gt;: Plataforma de Email Marketing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/datalaria-blog/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Construyendo el Blog — Decisiones de Arquitectura&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: La Economía Oculta de la IA — El Coste Real del Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/ia_agents_part1/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Serie Autopilot — 9 Partes de Ingeniería Agéntica&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Flywire: How a Spaniard Built the Brain of International Payments from Boston</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 26 Jul 2026 14:29:18 +0000</pubDate>
      <link>https://dev.to/datalaria/flywire-how-a-spaniard-built-the-brain-of-international-payments-from-boston-1kk9</link>
      <guid>https://dev.to/datalaria/flywire-how-a-spaniard-built-the-brain-of-international-payments-from-boston-1kk9</guid>
      <description>&lt;p&gt;When a Korean student tries to pay tuition at a university in Madrid, they face a Kafkaesque maze: opaque banking fees that devour 3% to 5% of the transaction, unfavorable exchange rates unilaterally imposed by the intermediary bank, SWIFT transfers that take 3 to 5 business days to settle, and a payment reference system where a single wrong digit means the university cannot reconcile the deposit with the student's enrollment. The result: the student overpays, the university receives less, and both waste time in emails and phone calls trying to square the accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Iker Marcaide&lt;/strong&gt;, a Spanish engineer pursuing his MBA at &lt;strong&gt;MIT Sloan School of Management&lt;/strong&gt; in Boston, experienced this pain firsthand. But unlike the 99% of people who complain about the international banking system and move on, Marcaide did what founders do: &lt;strong&gt;he asked why it had to be this way and built the alternative&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In 2009, he founded &lt;strong&gt;peerTransfer&lt;/strong&gt; — a platform that allowed international students to pay tuition in their local currency, with transparent exchange rates, minimal fees, and guaranteed settlement in the university's account. In 2016, the company rebranded as &lt;strong&gt;Flywire&lt;/strong&gt; to reflect its expansion beyond education. In May 2021, it went public on the &lt;strong&gt;Nasdaq&lt;/strong&gt; under the ticker &lt;strong&gt;$FLYW&lt;/strong&gt;. In fiscal year 2025, it generated over &lt;strong&gt;$603 million in revenue&lt;/strong&gt;, with 27% year-over-year growth. In Q1 2026, revenue reached &lt;strong&gt;$188 million&lt;/strong&gt;, a 41% increase over the same quarter the prior year.&lt;/p&gt;

&lt;p&gt;Alongside &lt;a href="https://datalaria.com/en/posts/carto/" rel="noopener noreferrer"&gt;Carto&lt;/a&gt;, &lt;a href="https://datalaria.com/en/posts/devo/" rel="noopener noreferrer"&gt;Devo&lt;/a&gt;, &lt;a href="https://datalaria.com/en/posts/clarity_ai/" rel="noopener noreferrer"&gt;Clarity AI&lt;/a&gt;, &lt;a href="https://datalaria.com/en/posts/nextail/" rel="noopener noreferrer"&gt;Nextail&lt;/a&gt;, and &lt;a href="https://datalaria.com/en/posts/freepik/" rel="noopener noreferrer"&gt;Freepik&lt;/a&gt;, it is one of the Spanish startups that have achieved global scale. But Flywire has a distinguishing trait: &lt;strong&gt;it trades on an American stock exchange&lt;/strong&gt;. Not on a private round, not on a European secondary market — on the Nasdaq, alongside Apple, Google, and Tesla.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/0eGSRmq1dPc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The Technology: The Intelligent Brain of Payments
&lt;/h3&gt;

&lt;p&gt;Flywire is not a conventional payment processor like Stripe or PayPal. The fundamental difference is that Flywire has built a platform designed specifically for &lt;strong&gt;complex, high-value, cross-border payments&lt;/strong&gt;, where friction isn't at the user's final click (Stripe already solved that) but in the entire chain behind it: routing between banks, currency conversion, reconciliation with the receiver's system, and regulatory compliance across multiple jurisdictions.&lt;/p&gt;

&lt;p&gt;The platform operates across three technological layers that reinforce each other:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Proprietary Global Payment Network&lt;/strong&gt;: Flywire has built a network of direct banking connections across more than &lt;strong&gt;240 countries and territories&lt;/strong&gt;, supporting payments in over &lt;strong&gt;140 currencies&lt;/strong&gt;. This proprietary network allows them to select the optimal route for each transaction — not the default SWIFT route, which may pass through 3-4 intermediary banks, each charging its fee, but the most direct, fastest, and most cost-effective route for that specific currency corridor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Machine Learning for Transaction Optimization&lt;/strong&gt;: This is where data engineering creates the competitive moat. Flywire uses ML algorithms for three critical functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent routing&lt;/strong&gt;: For each transaction, the system evaluates multiple banking routes and selects the optimal combination of exchange rate, settlement speed, and total cost. It's not a static routing table; it's a model that continuously learns from historical transactions to optimize each currency corridor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic reconciliation with deep learning&lt;/strong&gt;: The nightmare for university and hospital treasury offices is reconciling received payments with outstanding invoices. When a student pays from South Korea, the payer's name may appear transliterated three different ways, the payment reference may be truncated, and the received amount differs from the invoiced amount due to intermediary fees. Flywire uses &lt;strong&gt;deep neural networks and reinforcement learning&lt;/strong&gt; to automatically match payments to invoices, even when data doesn't match exactly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fraud detection&lt;/strong&gt;: ML models that analyze transaction patterns to identify anomalies and prevent fraud before the transaction completes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Vertical-Specific Software&lt;/strong&gt;: For each industry, Flywire doesn't just process payments but integrates directly into the client's core systems — &lt;strong&gt;Student Information Systems (SIS)&lt;/strong&gt; in education, &lt;strong&gt;Electronic Health Records (EHR)&lt;/strong&gt; in healthcare, &lt;strong&gt;ERPs&lt;/strong&gt; in B2B. This deep integration turns Flywire into infrastructure, not an interchangeable vendor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vertical Expansion: The "Land and Expand" Pattern
&lt;/h3&gt;

&lt;p&gt;Flywire's growth story follows a pattern we've seen repeat in every Spanish unicorn analyzed on this blog: &lt;strong&gt;find a specific pain in one vertical, solve it with obsessive engineering, and expand horizontally&lt;/strong&gt;.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqaute6u4c3p4f26m9vcs.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqaute6u4c3p4f26m9vcs.png" alt="Flywire's vertical expansion: from education to healthcare and travel" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Education (2009-2016)&lt;/strong&gt;: The starting point. peerTransfer solved the international tuition payment pain, beginning with universities in the United States and expanding to Europe, Australia, and Asia. The value proposition was clear: the student pays in their local currency with full transparency, the university receives exactly the invoiced amount with no hidden fees, and reconciliation is automatic. Today, Flywire processes payments for more than &lt;strong&gt;3,800 educational institutions&lt;/strong&gt; worldwide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Healthcare (2016-2019)&lt;/strong&gt;: The leap to healthcare was natural. American hospitals face the same complex payment problem: international patients, fragmented insurance, installment plans, and administrative reconciliation that consumes enormous resources. Flywire adapted its platform to integrate with hospital management systems and offer flexible payment options (financing plans, partial payments) that improve the hospital's collection rate and the patient experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Travel (2019-present)&lt;/strong&gt;: The third vertical. Tour operators, travel agencies, and luxury hotels handle high-value bookings from international clients who want to pay in their local currency. Margins are tight, and losing 3-5% in exchange rate fees can destroy a booking's profitability. Flywire offers the same transparency and intelligent routing, adapted to the travel industry's specific workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B2B (2021-present)&lt;/strong&gt;: The fourth frontier. International business-to-business payments — invoices, supplier settlements, royalty payments. The pattern repeats: regulatory complexity, multiple currencies, inefficient manual reconciliation. Flywire automates the complete &lt;em&gt;invoice-to-cash&lt;/em&gt; flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Numbers: A Spanish Unicorn on the Nasdaq
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Founded&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2009 (as peerTransfer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rebranded to Flywire&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nasdaq IPO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;May 2021 (ticker: $FLYW)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FY2025 Revenue&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~$603 million (+27% YoY)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Q1 2026 Revenue&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$188 million (+41% YoY)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Currencies supported&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;140+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Countries&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;240+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Education clients&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3,800+ institutions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Headquarters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Boston, MA (USA)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Founder&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Iker Marcaide (Spain)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To put these numbers in context within the Spanish unicorn ecosystem: Flywire generates more revenue than &lt;a href="https://datalaria.com/en/posts/devo/" rel="noopener noreferrer"&gt;Devo&lt;/a&gt; (acquired by LogRhythm in 2023 after reaching unicorn valuation) and more than &lt;a href="https://datalaria.com/en/posts/nextail/" rel="noopener noreferrer"&gt;Nextail&lt;/a&gt; (which operates in a narrower retail niche). The most direct comparison is with &lt;a href="https://datalaria.com/en/posts/clarity_ai/" rel="noopener noreferrer"&gt;Clarity AI&lt;/a&gt; — both are fintech, both operate from the European regulatory ecosystem but with a global market, and both face the requirements of the &lt;a href="https://datalaria.com/en/posts/eu_ai_act/" rel="noopener noreferrer"&gt;EU AI Act&lt;/a&gt; for operating in sensitive categories (essential financial services, Annex III of the regulation).&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons for Engineers
&lt;/h3&gt;

&lt;p&gt;Flywire's story distills three lessons applicable to any engineer building technology products:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson 1: The "Platform Effect" — Start with a pain, expand through infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Flywire didn't start by saying "let's build a global payments platform." It started by saying "let's solve international tuition payments for American universities." A specific pain, a specific customer, a specific market. Once the platform was built and proven in education, the expansion to healthcare and travel was a natural extension of the same technological engine applied to a different workflow.&lt;/p&gt;

&lt;p&gt;It's the same pattern we saw in &lt;a href="https://datalaria.com/en/posts/carto/" rel="noopener noreferrer"&gt;Carto&lt;/a&gt; (started as a geospatial visualization tool, expanded to enterprise Location Intelligence), in &lt;a href="https://datalaria.com/en/posts/devo/" rel="noopener noreferrer"&gt;Devo&lt;/a&gt; (started as a next-gen SIEM, expanded to full observability for defense and cybersecurity), and in &lt;a href="https://datalaria.com/en/posts/nextail/" rel="noopener noreferrer"&gt;Nextail&lt;/a&gt; (started optimizing store inventory, expanded to prescriptive AI for the entire retail supply chain).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson 2: Build vs. Buy — Why Flywire built its own payments engine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The obvious question is: why not use Stripe? Stripe is extraordinary for standard online payments (e-commerce, SaaS). But high-value cross-border payments have three requirements that Stripe didn't solve in 2009 (and still doesn't fully solve for this niche): intelligent routing by currency corridor, automatic reconciliation with vertical systems (SIS, EHR), and multi-jurisdiction regulatory compliance for payments crossing borders. Flywire needed to control the entire chain to optimize every link. The build vs. buy decision boils down to one question: is payment &lt;strong&gt;the&lt;/strong&gt; product, or is it an auxiliary feature of your product? If payment is the product (as with Flywire), you build. If it's auxiliary (as with an e-commerce shop), you buy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson 3: Regulation as competitive advantage, not as a brake&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Flywire operates in one of the most regulated sectors on the planet: cross-border financial payments. It complies with anti-money laundering (AML) regulations, know-your-customer (KYC) requirements, PCI DSS for card data security, and the financial regulations of every country where it operates. As we discussed in the &lt;a href="https://datalaria.com/en/posts/eu_ai_act/" rel="noopener noreferrer"&gt;EU AI Act article&lt;/a&gt;, AI systems that determine access to essential financial services fall under the European regulation's "high-risk" category.&lt;/p&gt;

&lt;p&gt;But Flywire has turned this regulatory complexity into a &lt;strong&gt;barrier to entry for competitors&lt;/strong&gt;. Any startup wanting to compete with Flywire in cross-border university payments needs not only to build a comparable technology platform but also to obtain regulatory licenses in dozens of jurisdictions — a process that can take years and cost millions. The regulation that suffocates potential competitors protects well-positioned incumbents.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Spanish Pattern: Local Pain, Global Scale
&lt;/h3&gt;

&lt;p&gt;If you look at the complete series of Spanish startups analyzed on this blog, the pattern repeats with almost algorithmic consistency:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Startup&lt;/th&gt;
&lt;th&gt;Initial pain&lt;/th&gt;
&lt;th&gt;Expansion&lt;/th&gt;
&lt;th&gt;Outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flywire&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;International tuition payments&lt;/td&gt;
&lt;td&gt;Education → Healthcare → Travel → B2B&lt;/td&gt;
&lt;td&gt;Nasdaq ($FLYW), $603M revenue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://datalaria.com/en/posts/devo/" rel="noopener noreferrer"&gt;&lt;strong&gt;Devo&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Security logging&lt;/td&gt;
&lt;td&gt;SIEM → Observability → Defense&lt;/td&gt;
&lt;td&gt;Unicorn, LogRhythm acquisition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://datalaria.com/en/posts/carto/" rel="noopener noreferrer"&gt;&lt;strong&gt;Carto&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Web maps&lt;/td&gt;
&lt;td&gt;Visualization → Location Intelligence&lt;/td&gt;
&lt;td&gt;Enterprise cloud platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://datalaria.com/en/posts/nextail/" rel="noopener noreferrer"&gt;&lt;strong&gt;Nextail&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Store inventory&lt;/td&gt;
&lt;td&gt;Retail → Prescriptive AI → Supply chain&lt;/td&gt;
&lt;td&gt;ESPR 2026, global expansion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://datalaria.com/en/posts/clarity_ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;Clarity AI&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;ESG scoring&lt;/td&gt;
&lt;td&gt;Sustainability → Fintech → Regulation&lt;/td&gt;
&lt;td&gt;Impact platform, BlackRock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://datalaria.com/en/posts/freepik/" rel="noopener noreferrer"&gt;&lt;strong&gt;Freepik&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Stock images&lt;/td&gt;
&lt;td&gt;Stock → Generative AI → Design&lt;/td&gt;
&lt;td&gt;Profitable from day 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The common denominator is always the same: a Spanish founder with international training, a concrete and verifiable pain, a technically obsessive solution, and horizontal expansion once the base platform demonstrates traction. Neither the lack of VC ecosystem in Spain, nor the distance to Silicon Valley, nor the language barrier has prevented these companies from reaching global scale. What propelled them is exactly what &lt;a href="https://datalaria.com/en/posts/deming/" rel="noopener noreferrer"&gt;Deming&lt;/a&gt; preached decades ago: &lt;strong&gt;obsessive quality in execution and continuous improvement based on evidence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Iker Marcaide didn't invent international payments. But he did what great engineers do: he looked at a broken process, understood every link in the chain, and built a solution that was 10 times better than the &lt;em&gt;status quo&lt;/em&gt;. Today, that solution processes billions of dollars and trades on the Nasdaq. And it started with a Spanish student at MIT who refused to pay abusive fees on his tuition.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://datalaria.com/en/posts/flywire/" rel="noopener noreferrer"&gt;Datalaria&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Sources of Interest:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.flywire.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Flywire&lt;/strong&gt;: Official Site — Global Payments Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nasdaq.com/market-activity/stocks/flyw" rel="noopener noreferrer"&gt;&lt;strong&gt;Nasdaq&lt;/strong&gt;: Flywire Corporation ($FLYW) — Listing Profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ir.flywire.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Flywire Investor Relations&lt;/strong&gt;: Q1 2026 Financial Results&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.xataka.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Xataka&lt;/strong&gt;: Iker Marcaide and the Flywire Story&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=0eGSRmq1dPc" rel="noopener noreferrer"&gt;&lt;strong&gt;YouTube&lt;/strong&gt;: Flywire — Simplifying Complex Payments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://datalaria.com/en/posts/devo/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Devo — The Spanish SIEM That Scaled to the Pentagon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://datalaria.com/en/posts/clarity_ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Clarity AI — The Fintech That Scores the Planet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://datalaria.com/en/posts/carto/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Carto — From Web Maps to Enterprise Location Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://datalaria.com/en/posts/eu_ai_act/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: EU AI Act — Regulation and Fintech as a High-Risk Category&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Flywire: Cómo un Español Construyó desde Boston el Cerebro de los Pagos Internacionales</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 26 Jul 2026 14:09:16 +0000</pubDate>
      <link>https://dev.to/datalaria/flywire-como-un-espanol-construyo-desde-boston-el-cerebro-de-los-pagos-internacionales-4mhl</link>
      <guid>https://dev.to/datalaria/flywire-como-un-espanol-construyo-desde-boston-el-cerebro-de-los-pagos-internacionales-4mhl</guid>
      <description>&lt;p&gt;Cuando un estudiante coreano intenta pagar la matrícula de una universidad en Madrid, se enfrenta a un laberinto kafkiano: comisiones bancarias opacas que devoran entre un 3% y un 5% de la transacción, tipos de cambio desfavorables impuestos unilateralmente por el banco intermediario, transferencias SWIFT que tardan entre 3 y 5 días hábiles en liquidarse, y un sistema de referencia de pago que, si el estudiante se equivoca en un solo dígito, provoca que la universidad no pueda reconciliar el ingreso con su matrícula. El resultado: el estudiante paga de más, la universidad recibe de menos, y ambos pierden tiempo en correos electrónicos y llamadas intentando cuadrar las cuentas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Iker Marcaide&lt;/strong&gt;, un ingeniero español cursando su MBA en el &lt;strong&gt;MIT Sloan School of Management&lt;/strong&gt; en Boston, vivió este dolor en primera persona. Pero a diferencia del 99% de las personas que se quejan del sistema bancario internacional y siguen adelante, Marcaide hizo lo que hacen los fundadores: &lt;strong&gt;se preguntó por qué tenía que ser así y construyó la alternativa&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;En 2009, fundó &lt;strong&gt;peerTransfer&lt;/strong&gt; — una plataforma que permitía a los estudiantes internacionales pagar su matrícula en su moneda local, con tipos de cambio transparentes, comisiones mínimas y liquidación garantizada en la cuenta de la universidad. En 2016, la empresa se rebautizó como &lt;strong&gt;Flywire&lt;/strong&gt; para reflejar su expansión más allá de la educación. En mayo de 2021, salió a cotizar en el &lt;strong&gt;Nasdaq&lt;/strong&gt; bajo el ticker &lt;strong&gt;$FLYW&lt;/strong&gt;. En el año fiscal 2025, facturó más de &lt;strong&gt;603 millones de dólares&lt;/strong&gt;, con un crecimiento interanual del 27%. En el primer trimestre de 2026, los ingresos alcanzaron &lt;strong&gt;188 millones de dólares&lt;/strong&gt;, un 41% más que el mismo trimestre del año anterior.&lt;/p&gt;

&lt;p&gt;Es, junto a &lt;a href="https://dev.to/es/posts/carto/"&gt;Carto&lt;/a&gt;, &lt;a href="https://dev.to/es/posts/devo/"&gt;Devo&lt;/a&gt;, &lt;a href="https://dev.to/es/posts/clarity_ai/"&gt;Clarity AI&lt;/a&gt;, &lt;a href="https://dev.to/es/posts/nextail/"&gt;Nextail&lt;/a&gt; y &lt;a href="https://dev.to/es/posts/freepik/"&gt;Freepik&lt;/a&gt;, una de las startups españolas que han alcanzado escala global. Pero Flywire tiene un rasgo que la distingue de todas las demás: &lt;strong&gt;cotiza en la bolsa americana&lt;/strong&gt;. No en el MAB, no en una ronda privada, no en el BME Growth — en el Nasdaq, junto a Apple, Google y Tesla.&lt;/p&gt;

&lt;p&gt;{{&amp;lt; youtube 0eGSRmq1dPc &amp;gt;}}&lt;/p&gt;

&lt;h3&gt;
  
  
  La Tecnología: El Cerebro Inteligente de los Pagos
&lt;/h3&gt;

&lt;p&gt;Flywire no es un procesador de pagos convencional como Stripe o PayPal. La diferencia fundamental está en que Flywire ha construido una plataforma diseñada específicamente para &lt;strong&gt;pagos complejos, de alto valor y cross-border&lt;/strong&gt;, donde la fricción no está en el último clic del usuario (eso ya lo resolvió Stripe), sino en toda la cadena que ocurre detrás: el routing entre bancos, la conversión de divisas, la reconciliación con el sistema del receptor, y el cumplimiento regulatorio de múltiples jurisdicciones.&lt;/p&gt;

&lt;p&gt;La plataforma opera en tres capas tecnológicas que se refuerzan mutuamente:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Red Global de Pagos Propietaria&lt;/strong&gt;: Flywire ha construido una red de conexiones bancarias directas en más de &lt;strong&gt;240 países y territorios&lt;/strong&gt;, soportando pagos en más de &lt;strong&gt;140 divisas&lt;/strong&gt;. Esta red propia les permite seleccionar la ruta óptima para cada transacción — no la ruta por defecto del sistema SWIFT, que puede pasar por 3-4 bancos intermediarios, cada uno cobrando su comisión, sino la ruta más directa, rápida y económica para ese corredor de divisas específico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Machine Learning para Optimización de Transacciones&lt;/strong&gt;: Aquí es donde la ingeniería de datos marca la diferencia competitiva. Flywire utiliza algoritmos de ML para tres funciones críticas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Routing inteligente&lt;/strong&gt;: Para cada transacción, el sistema evalúa múltiples rutas bancarias y selecciona la combinación óptima de tipo de cambio, velocidad de liquidación y coste total. No es una tabla estática de rutas; es un modelo que aprende continuamente de las transacciones históricas para optimizar cada corredor de divisas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reconciliación automática con deep learning&lt;/strong&gt;: La pesadilla de las oficinas de tesorería de universidades y hospitales es reconciliar los pagos recibidos con las facturas pendientes. Cuando un estudiante paga desde Corea del Sur, el nombre del pagador puede aparecer transliterado de tres formas diferentes, la referencia de pago puede estar truncada, y el importe recibido difiere del facturado por las comisiones intermedias. Flywire usa &lt;strong&gt;redes neuronales profundas y aprendizaje por refuerzo&lt;/strong&gt; para emparejar automáticamente pagos con facturas, incluso cuando los datos no coinciden exactamente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detección de fraude&lt;/strong&gt;: Modelos de ML que analizan patrones de transacciones para identificar anomalías y prevenir fraude antes de que la transacción se complete.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Software Vertical Especializado&lt;/strong&gt;: Para cada industria, Flywire no solo procesa pagos sino que se integra directamente en los sistemas core del cliente — &lt;strong&gt;Student Information Systems (SIS)&lt;/strong&gt; en educación, &lt;strong&gt;Electronic Health Records (EHR)&lt;/strong&gt; en sanidad, &lt;strong&gt;ERPs&lt;/strong&gt; en B2B. Esta integración profunda convierte a Flywire en infraestructura, no en un proveedor intercambiable.&lt;/p&gt;

&lt;h3&gt;
  
  
  La Expansión Vertical: El Patrón "Land and Expand"
&lt;/h3&gt;

&lt;p&gt;La historia de crecimiento de Flywire sigue un patrón que hemos visto repetirse en cada unicornio español que hemos analizado en este blog: &lt;strong&gt;encuentra un dolor específico en una vertical, resuélvelo con ingeniería obsesiva, y expándete horizontalmente&lt;/strong&gt;.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu971ycfkka1ayd8fuhgo.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu971ycfkka1ayd8fuhgo.png" alt="La expansión vertical de Flywire: de educación a sanidad y viajes" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Educación (2009-2016)&lt;/strong&gt;: El punto de partida. peerTransfer resolvió el dolor de los pagos de matrícula internacional, empezando por universidades en Estados Unidos y expandiéndose a Europa, Australia y Asia. La propuesta de valor era clara: el estudiante paga en su moneda local con total transparencia, la universidad recibe exactamente el importe facturado sin comisiones ocultas, y la reconciliación es automática. Hoy, Flywire procesa pagos para más de &lt;strong&gt;3.800 instituciones educativas&lt;/strong&gt; a nivel global.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sanidad / Healthcare (2016-2019)&lt;/strong&gt;: El salto a sanidad fue natural. Los hospitales americanos enfrentan el mismo problema de pagos complejos: pacientes internacionales, seguros fragmentados, planes de pago a plazos, y una reconciliación administrativa que consume recursos enormes. Flywire adaptó su plataforma para integrarse con los sistemas de gestión hospitalaria y ofrecer opciones de pago flexibles (planes de financiación, pagos parciales) que mejoran la tasa de cobro del hospital y la experiencia del paciente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Viajes / Travel (2019-presente)&lt;/strong&gt;: La tercera vertical. Los operadores turísticos, agencias de viajes y hoteles de lujo manejan reservas de alto valor con clientes internacionales que quieren pagar en su moneda local. Los márgenes son estrechos, y perder un 3-5% en comisiones de tipo de cambio puede destruir la rentabilidad de una reserva. Flywire ofrece la misma transparencia y routing inteligente, adaptada al flujo de trabajo específico de la industria del viaje.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B2B (2021-presente)&lt;/strong&gt;: La cuarta frontera. Pagos entre empresas a nivel internacional — facturas, liquidaciones de proveedores, pagos de royalties. El patrón se repite: complejidad regulatoria, múltiples divisas, reconciliación manual ineficiente. Flywire automatiza el flujo completo de &lt;em&gt;invoice-to-cash&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Las Cifras: Un Unicornio Español en el Nasdaq
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Métrica&lt;/th&gt;
&lt;th&gt;Dato&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fundación&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2009 (como peerTransfer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rebrand a Flywire&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IPO Nasdaq&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mayo 2021 (ticker: $FLYW)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Revenue FY2025&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~$603 millones (+27% YoY)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Revenue Q1 2026&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$188 millones (+41% YoY)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Divisas soportadas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;140+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Países&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;240+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Clientes educación&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3.800+ instituciones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sede&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Boston, MA (EE.UU.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fundador&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Iker Marcaide (España)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Para poner las cifras en contexto dentro del ecosistema de unicornios españoles: Flywire factura más que &lt;a href="https://dev.to/es/posts/devo/"&gt;Devo&lt;/a&gt; (adquirida por LogRhythm en 2023 tras alcanzar valoración de unicornio) y más que &lt;a href="https://dev.to/es/posts/nextail/"&gt;Nextail&lt;/a&gt; (que opera en un nicho más estrecho de retail). La comparación más directa es con &lt;a href="https://dev.to/es/posts/clarity_ai/"&gt;Clarity AI&lt;/a&gt; — ambas son fintech, ambas operan desde el ecosistema regulatorio europeo pero con mercado global, y ambas enfrentan las exigencias del &lt;a href="https://dev.to/es/posts/eu_ai_act/"&gt;EU AI Act&lt;/a&gt; por operar en categorías sensibles (servicios financieros esenciales, Anexo III del reglamento).&lt;/p&gt;

&lt;h3&gt;
  
  
  Lecciones para Ingenieros
&lt;/h3&gt;

&lt;p&gt;La historia de Flywire destila tres lecciones que aplican a cualquier ingeniero que construya productos tecnológicos:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lección 1: El "Efecto Plataforma" — Empieza por un dolor, expándete por la infraestructura&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Flywire no empezó diciendo «vamos a construir una plataforma global de pagos». Empezó diciendo «vamos a resolver los pagos de matrícula internacional para universidades americanas». Un dolor específico, un cliente específico, un mercado específico. Una vez que la plataforma estaba construida y probada en educación, la expansión a sanidad y viajes fue una extensión natural del mismo motor tecnológico aplicado a un flujo de trabajo diferente.&lt;/p&gt;

&lt;p&gt;Es el mismo patrón que vimos en &lt;a href="https://dev.to/es/posts/carto/"&gt;Carto&lt;/a&gt; (empezó como herramienta de visualización geoespacial, se expandió a Location Intelligence empresarial), en &lt;a href="https://dev.to/es/posts/devo/"&gt;Devo&lt;/a&gt; (empezó como SIEM de siguiente generación, se expandió a observabilidad completa para defensa y ciberseguridad), y en &lt;a href="https://dev.to/es/posts/nextail/"&gt;Nextail&lt;/a&gt; (empezó optimizando el inventario de tienda, se expandió a IA prescriptiva para toda la cadena de suministro del retail).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lección 2: Build vs. Buy — Por qué Flywire construyó su propio motor de pagos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;La pregunta obvia es: ¿por qué no usar Stripe? Stripe es extraordinario para pagos online estándar (e-commerce, SaaS). Pero los pagos cross-border de alto valor tienen tres requisitos que Stripe no resolvía en 2009 (y que sigue sin resolver completamente para este nicho): routing inteligente por corredor de divisas, reconciliación automática con sistemas verticales (SIS, EHR), y cumplimiento regulatorio multi-jurisdicción para pagos que cruzan fronteras. Flywire necesitaba controlar la cadena completa para optimizar cada eslabón. La decisión build vs. buy se resume en una pregunta: ¿el pago &lt;strong&gt;es&lt;/strong&gt; tu producto, o es una funcionalidad auxiliar de tu producto? Si el pago es tu producto (como en Flywire), construyes. Si es auxiliar (como en un e-commerce), compras.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lección 3: La regulación como ventaja competitiva, no como freno&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Flywire opera en uno de los sectores más regulados del planeta: pagos financieros transfronterizos. Cumple con regulaciones de anti-lavado de dinero (AML), know-your-customer (KYC), PCI DSS para seguridad de datos de tarjetas, y las regulaciones financieras de cada país donde opera. Como discutimos en el &lt;a href="https://dev.to/es/posts/eu_ai_act/"&gt;artículo sobre el EU AI Act&lt;/a&gt;, los sistemas de IA que determinan el acceso a servicios financieros esenciales caen en la categoría de «alto riesgo» del reglamento europeo.&lt;/p&gt;

&lt;p&gt;Pero Flywire ha convertido esta complejidad regulatoria en una &lt;strong&gt;barrera de entrada para competidores&lt;/strong&gt;. Cualquier startup que quiera competir con Flywire en pagos universitarios cross-border necesita no solo construir una plataforma tecnológica comparable, sino también obtener las licencias regulatorias en docenas de jurisdicciones — un proceso que puede tardar años y costar millones. La regulación que ahoga a los competidores potenciales protege a los incumbentes bien posicionados.&lt;/p&gt;

&lt;h3&gt;
  
  
  El Patrón Español: Dolor Local, Escala Global
&lt;/h3&gt;

&lt;p&gt;Si miras la serie completa de startups españolas que hemos analizado en este blog, el patrón se repite con una consistencia casi algorítmica:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Startup&lt;/th&gt;
&lt;th&gt;Dolor inicial&lt;/th&gt;
&lt;th&gt;Expansión&lt;/th&gt;
&lt;th&gt;Resultado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flywire&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pagos de matrícula internacional&lt;/td&gt;
&lt;td&gt;Educación → Sanidad → Viajes → B2B&lt;/td&gt;
&lt;td&gt;Nasdaq ($FLYW), $603M revenue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/es/posts/devo/"&gt;&lt;strong&gt;Devo&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Logging de seguridad&lt;/td&gt;
&lt;td&gt;SIEM → Observabilidad → Defensa&lt;/td&gt;
&lt;td&gt;Unicornio, adquisición LogRhythm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/es/posts/carto/"&gt;&lt;strong&gt;Carto&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Mapas web&lt;/td&gt;
&lt;td&gt;Visualización → Location Intelligence&lt;/td&gt;
&lt;td&gt;Plataforma cloud empresarial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/es/posts/nextail/"&gt;&lt;strong&gt;Nextail&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Inventario de tienda&lt;/td&gt;
&lt;td&gt;Retail → IA prescriptiva → Supply chain&lt;/td&gt;
&lt;td&gt;ESPR 2026, expansión global&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/es/posts/clarity_ai/"&gt;&lt;strong&gt;Clarity AI&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Scoring ESG&lt;/td&gt;
&lt;td&gt;Sostenibilidad → Fintech → Regulación&lt;/td&gt;
&lt;td&gt;Plataforma de impacto, BlackRock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/es/posts/freepik/"&gt;&lt;strong&gt;Freepik&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Banco de imágenes&lt;/td&gt;
&lt;td&gt;Stock → IA generativa → Diseño&lt;/td&gt;
&lt;td&gt;Rentable desde día 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;El denominador común es siempre el mismo: un fundador español con formación internacional, un dolor concreto y verificable, una solución técnicamente obsesiva, y una expansión horizontal una vez que la plataforma base demuestra tracción. Ni la falta de ecosistema VC en España, ni la distancia a Silicon Valley, ni la barrera del idioma han impedido que estas empresas alcancen escala global. Lo que las ha impulsado es exactamente lo que &lt;a href="https://dev.to/es/posts/deming/"&gt;Deming&lt;/a&gt; predicaba hace décadas: &lt;strong&gt;calidad obsesiva en la ejecución y mejora continua basada en evidencia&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Iker Marcaide no inventó los pagos internacionales. Pero hizo lo que hacen los grandes ingenieros: miró un proceso roto, entendió cada eslabón de la cadena, y construyó una solución que era 10 veces mejor que el &lt;em&gt;status quo&lt;/em&gt;. Hoy, esa solución procesa miles de millones de dólares y cotiza en el Nasdaq. Y empezó con un estudiante español en MIT que se negó a pagar comisiones abusivas por su matrícula.&lt;/p&gt;




&lt;h4&gt;
  
  
  Fuentes de Interés:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.flywire.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Flywire&lt;/strong&gt;: Sitio Oficial — Plataforma de Pagos Globales&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nasdaq.com/market-activity/stocks/flyw" rel="noopener noreferrer"&gt;&lt;strong&gt;Nasdaq&lt;/strong&gt;: Flywire Corporation ($FLYW) — Perfil de Cotización&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ir.flywire.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Flywire Investor Relations&lt;/strong&gt;: Resultados Financieros Q1 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.xataka.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Xataka&lt;/strong&gt;: Iker Marcaide y la Historia de Flywire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=0eGSRmq1dPc" rel="noopener noreferrer"&gt;&lt;strong&gt;YouTube&lt;/strong&gt;: Flywire — Simplifying Complex Payments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/devo/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Devo — El SIEM Español que Escaló al Pentágono&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/clarity_ai/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Clarity AI — La Fintech que Puntúa al Planeta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/carto/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Carto — De Mapas Web a Location Intelligence Empresarial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/eu_ai_act/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: EU AI Act — Regulación y Fintech como Categoría de Alto Riesgo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Thomas Bayes: The Reverend Who Taught Us to Update Our Beliefs with Data</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sat, 18 Jul 2026 15:02:17 +0000</pubDate>
      <link>https://dev.to/datalaria/thomas-bayes-the-reverend-who-taught-us-to-update-our-beliefs-with-data-2l70</link>
      <guid>https://dev.to/datalaria/thomas-bayes-the-reverend-who-taught-us-to-update-our-beliefs-with-data-2l70</guid>
      <description>&lt;p&gt;There is a question every professional who works with data should ask — and almost no one formulates explicitly: &lt;strong&gt;How should I change my opinion when I receive new evidence?&lt;/strong&gt; I don't mean a philosophical answer, but a mathematical one. If I believe there's a 30% probability that an electronic component will become obsolete this year, and I suddenly receive an email from the supplier announcing a production capacity reduction, how much should my estimate increase? To 50%? To 70%? How do I calculate it rigorously?&lt;/p&gt;

&lt;p&gt;The answer to that question was formulated by an English Presbyterian reverend sometime before 1761, and it wasn't published until two years after his death. His name was &lt;strong&gt;Thomas Bayes&lt;/strong&gt;, and his posthumous essay is, without exaggeration, one of the most influential documents in the history of science. From the spam filters in your email to the probabilistic forecasting models we used in the &lt;a href="https://dev.to/en/posts/sop-engineering-part2-forecasting/"&gt;S&amp;amp;OP Engineering series&lt;/a&gt; with Facebook Prophet, everything passes through Bayes' Theorem.&lt;/p&gt;

&lt;p&gt;In the lineage of historical figures who shaped our relationship with data — &lt;a href="https://dev.to/en/posts/florence-nightingale/"&gt;Florence Nightingale&lt;/a&gt; and visualization, &lt;a href="https://dev.to/en/posts/john-snow/"&gt;John Snow&lt;/a&gt; and geolocation, &lt;a href="https://dev.to/en/posts/abraham_wald/"&gt;Abraham Wald&lt;/a&gt; and survivorship bias, &lt;a href="https://dev.to/en/posts/kantorovich/"&gt;Kantorovich&lt;/a&gt; and optimization, &lt;a href="https://dev.to/en/posts/deming/"&gt;Deming&lt;/a&gt; and quality, &lt;a href="https://dev.to/en/posts/claude_shannon/"&gt;Claude Shannon&lt;/a&gt; and information — Bayes occupies a singular place: he taught us to think of &lt;strong&gt;uncertainty as something quantifiable and updatable&lt;/strong&gt;, not as an obstacle but as raw material.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Reverend and the Posthumous Essay
&lt;/h3&gt;

&lt;p&gt;Thomas Bayes was born in London in 1702 into a family of religious dissenters. His father, Joshua Bayes, was one of the first Presbyterian ministers ordained in England. Thomas followed in his father's footsteps, was ordained a minister, and spent most of his life as a pastor in Tunbridge Wells, a quiet spa town southeast of London.&lt;/p&gt;

&lt;p&gt;But Bayes was no ordinary pastor. He was a Fellow of the &lt;strong&gt;Royal Society&lt;/strong&gt; (elected in 1742), which indicates that his mathematical reputation was recognized by the scientific elite of his era. He is known to have published a work defending the logical foundations of Newton's calculus, but during his lifetime he was a discreet figure, almost invisible in the great intellectual debates of the Enlightenment.&lt;/p&gt;

&lt;p&gt;History might have completely forgotten Bayes were it not for his friend &lt;strong&gt;Richard Price&lt;/strong&gt;, a distinguished Welsh philosopher and mathematician. After Bayes's death in 1761, Price found among his papers an unfinished manuscript titled &lt;em&gt;"An Essay towards solving a Problem in the Doctrine of Chances"&lt;/em&gt;. Price immediately recognized its importance, completed it, and presented it to the Royal Society in 1763.&lt;/p&gt;

&lt;p&gt;The problem Bayes was trying to solve was deceptively simple in its formulation and profoundly revolutionary in its implications: &lt;strong&gt;given a series of observations, what is the probability that the underlying cause is one thing or another?&lt;/strong&gt; In other words, how do we reverse the direction of probability? Not "given that the coin is fair, what is the probability of getting 7 heads in 10 flips?" but the inverse question: "given that I observed 7 heads in 10 flips, what is the probability that the coin is fair?"&lt;/p&gt;

&lt;h3&gt;
  
  
  The Theorem: Updating Beliefs with Evidence
&lt;/h3&gt;

&lt;p&gt;Bayes' Theorem can be expressed without intimidating formulas using three intuitive concepts:&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs3v1onisdftny1totcxq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs3v1onisdftny1totcxq.png" alt="Visualization of Bayesian updating: from prior to posterior" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prior (Previous Belief)&lt;/strong&gt;: What you believe before seeing the data. Your initial estimate based on experience, intuition, or historical data. In an S&amp;amp;OP context, the &lt;em&gt;prior&lt;/em&gt; might be: "Historically, we sell about 10,000 units of this product in July."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evidence (Likelihood)&lt;/strong&gt;: The new data you observe and the probability of observing that data under different hypotheses. For example: "This June we've received 40% more advance orders than last year."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Posterior (Updated Belief)&lt;/strong&gt;: Your new estimate after integrating the evidence with your previous belief. The &lt;em&gt;posterior&lt;/em&gt; mathematically combines what you knew before with what the new data tells you. It doesn't discard your prior experience nor lets itself be blinded by a single new data point: &lt;strong&gt;it weighs both&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The beauty of the Bayesian approach is that it's &lt;strong&gt;iterative&lt;/strong&gt;: today's &lt;em&gt;posterior&lt;/em&gt; becomes tomorrow's &lt;em&gt;prior&lt;/em&gt;. Each new piece of data refines your estimate. It's not a static photograph; it's a movie that updates frame by frame. It is exactly the same philosophy as &lt;a href="https://dev.to/en/posts/deming/"&gt;W. Edwards Deming's&lt;/a&gt; PDCA cycle: plan, do, check, adjust. Repeat.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern Connection: Prophet and Demand Forecasting
&lt;/h3&gt;

&lt;p&gt;Where does Bayes appear in modern data engineering? Virtually everywhere, but the most direct connection with this blog is &lt;strong&gt;Facebook Prophet&lt;/strong&gt;, the tool we used in &lt;a href="https://dev.to/en/posts/sop-engineering-part2-forecasting/"&gt;Part 2 of the S&amp;amp;OP series&lt;/a&gt; to generate probabilistic demand forecasts.&lt;/p&gt;

&lt;p&gt;Prophet is, at its core, a &lt;strong&gt;Bayesian additive model&lt;/strong&gt;. It decomposes a time series into three components — trend, seasonality, and holiday effects — and generates not a point prediction, but a &lt;strong&gt;confidence interval&lt;/strong&gt;. That confidence interval is, literally, a Bayesian posterior distribution: it reflects the model's uncertainty given the historical evidence.&lt;/p&gt;

&lt;p&gt;Why does this matter in practice? Because the &lt;strong&gt;Safety Stock&lt;/strong&gt; we calculated in &lt;a href="https://dev.to/en/posts/sop-engineering-part3-optimization/"&gt;Part 3 of the S&amp;amp;OP series&lt;/a&gt; — the amount of buffer inventory to absorb demand variability — is calculated on the upper bound of that confidence interval (typically at 95%). If Prophet used a deterministic model (a single number, no uncertainty), our Safety Stock would be a guess. Thanks to Bayes, it's a &lt;strong&gt;decision grounded in the probability distribution of future demand&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;prior&lt;/em&gt; in this context is the accumulated experience of the demand planning team and the historical patterns of the time series. The &lt;em&gt;evidence&lt;/em&gt; is the new data arriving each week or month. The &lt;em&gt;posterior&lt;/em&gt; is the updated forecast that feeds the &lt;a href="https://dev.to/en/posts/sop-engineering-part3-optimization/"&gt;PuLP linear programming engine&lt;/a&gt; to optimize the production plan. Bayes is at the heart of the chain, even though his name is never mentioned in S&amp;amp;OP meetings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern Connection: A/B Testing and Netflix
&lt;/h3&gt;

&lt;p&gt;When &lt;a href="https://dev.to/en/posts/netflix/"&gt;Netflix&lt;/a&gt; decides which thumbnail to show for a series, it runs a massive A/B test: it shows version A to millions of users and version B to millions of others, then measures which generates more clicks. The classical (frequentist) approach requires waiting until a predetermined sample size is reached to declare a "winner" with statistical significance. If you do &lt;em&gt;peeking&lt;/em&gt; — looking at results before time — you invalidate the experiment.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Bayesian&lt;/strong&gt; approach to A/B testing eliminates this problem. Instead of a binary hypothesis test (is there a difference or not?), Bayesian A/B testing continuously calculates the &lt;strong&gt;probability that version A is better than version B&lt;/strong&gt; given the data observed so far. You don't need to wait for a fixed sample size because the posterior distribution updates with each new data point.&lt;/p&gt;

&lt;p&gt;This has enormous practical implications for startups and teams with limited traffic. If your product doesn't have millions of users, a frequentist test can take weeks or months to be conclusive. A Bayesian test gives you a useful probability estimate much sooner, with the honesty of telling you: "With current data, there's a 78% probability that A is better than B." You decide if that 78% is enough to act on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern Connection: Spam Filters and Classification
&lt;/h3&gt;

&lt;p&gt;One of the first triumphs of machine learning in production at scale was the &lt;strong&gt;Bayesian spam filter&lt;/strong&gt;. The &lt;strong&gt;Naive Bayes&lt;/strong&gt; algorithm (called "naive" because it assumes independence between words, a crude simplification that's surprisingly effective) calculates the probability that an email is spam given the words it contains.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;prior&lt;/em&gt; is the base rate of spam (approximately 45% of all global email). The &lt;em&gt;evidence&lt;/em&gt; is the email's words: "offer," "free," "urgent" increase the posterior probability of spam; "meeting," "budget," "attached" reduce it. Each word updates the probability, exactly as Bayes prescribed 260 years ago.&lt;/p&gt;

&lt;p&gt;The connection with &lt;a href="https://dev.to/en/posts/abraham_wald/"&gt;Abraham Wald's survivorship bias&lt;/a&gt; is direct: in a spam filter, the data you &lt;strong&gt;don't see&lt;/strong&gt; (legitimate emails erroneously filtered as spam) is as important as what you do see. If your filter has a high false positive rate, you're making the same mistake as the WWII engineers who only analyzed the planes that returned. Bayes and Wald, separated by two centuries, are talking about the same problem: &lt;strong&gt;absent information distorts your conclusions&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern Connection: Medical Diagnosis and the Perfect Test Paradox
&lt;/h3&gt;

&lt;p&gt;There's a classic example of Bayesian reasoning that should be mandatory in every engineer's training, because it destroys a very widespread intuition. Suppose there's a medical test for a rare disease (prevalence: 1 in 10,000 people). The test has a sensitivity of 99% (correctly detects 99% of the sick) and a specificity of 99% (correctly identifies 99% of the healthy).&lt;/p&gt;

&lt;p&gt;Question: if you test positive, &lt;strong&gt;what is the probability that you're actually sick?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The intuitive answer most people give — including many physicians — is "99%." The correct Bayesian answer is approximately &lt;strong&gt;1%&lt;/strong&gt;. How is this possible? Because the prevalence (the &lt;em&gt;prior&lt;/em&gt;) is so low that, even with a 99% test, the vast majority of positives are false positives.&lt;/p&gt;

&lt;p&gt;This reasoning is directly applicable to AI system engineering. When we configure alerts in the &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;obsolescence radar&lt;/a&gt; or in any monitoring system, the false positive rate is the silent enemy. An anomaly detection system with 99% accuracy can generate hundreds of false alerts if the base rate of actual anomalies is very low. Bayes forces us to think about the &lt;em&gt;prior&lt;/em&gt; before celebrating the &lt;em&gt;test's&lt;/em&gt; accuracy.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Legacy: Think in Distributions, Not Points
&lt;/h3&gt;

&lt;p&gt;Thomas Bayes's deepest contribution was not a formula; it was a &lt;strong&gt;mindset shift&lt;/strong&gt;. Before Bayes, probability was conceived as a fixed property of objects: a coin has a 50% chance of landing heads, period. After Bayes, probability became a measure of &lt;strong&gt;our degree of knowledge&lt;/strong&gt; about the world, continuously updated with new evidence.&lt;/p&gt;

&lt;p&gt;This distinction is the difference between an engineer who says &lt;em&gt;"July demand will be 10,000 units"&lt;/em&gt; and one who says &lt;em&gt;"July demand has a 95% probability of falling between 8,500 and 11,500 units, and our production plan must absorb that variability."&lt;/em&gt; The first operates with false certainties; the second, with quantified uncertainty. The first is vulnerable to the &lt;em&gt;bullwhip effect&lt;/em&gt; that &lt;a href="https://dev.to/en/posts/sop_engineering-data-hygiene/"&gt;destroys supply chains&lt;/a&gt;; the second is armored against it.&lt;/p&gt;

&lt;p&gt;In a world where AI models are stochastic by nature — as we painfully documented in the &lt;a href="https://dev.to/en/posts/ai_agents_part9/"&gt;Autopilot post-mortem&lt;/a&gt;, where the same pipeline produces different results on each run — thinking Bayesianly isn't a philosophical option: it's an operational necessity. Don't ask "what is the answer?" Ask "what is the distribution of possible answers, and with what confidence?"&lt;/p&gt;

&lt;p&gt;A reverend from the 18th century, working in solitude with quill and ink in an English spa town, solved a problem that today powers medicine, marketing, cybersecurity, supply chain management, and artificial intelligence. And he did it with an idea so simple it fits in a single sentence: &lt;strong&gt;update what you believe with what you observe&lt;/strong&gt;. Two hundred and sixty years later, we still haven't found better advice.&lt;/p&gt;




&lt;h4&gt;
  
  
  Sources of Interest:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://plato.stanford.edu/entries/bayes-theorem/" rel="noopener noreferrer"&gt;&lt;strong&gt;Stanford Encyclopedia of Philosophy&lt;/strong&gt;: Bayes' Theorem — Foundations and Historical Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://royalsociety.org/people/thomas-bayes-11313/" rel="noopener noreferrer"&gt;&lt;strong&gt;Royal Society&lt;/strong&gt;: Thomas Bayes — Fellow Profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=HZGCoVF3YvM" rel="noopener noreferrer"&gt;&lt;strong&gt;3Blue1Brown&lt;/strong&gt;: Bayes' theorem, the geometry of changing beliefs (YouTube)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/descriptive-analysis/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Descriptive Statistics — Data Analysis Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/sop-engineering-part2-forecasting/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: S&amp;amp;OP Part 2 — Demand Planning with Prophet (Bayesian Model)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/abraham_wald/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Abraham Wald — The Epistemology of Missing Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/netflix/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Netflix — How Data Forges an Empire (A/B Testing)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/claude_shannon/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Claude Shannon — Entropy as Uncertainty&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Thomas Bayes: El Reverendo que Nos Enseñó a Actualizar Nuestras Creencias con Datos</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sat, 18 Jul 2026 14:56:46 +0000</pubDate>
      <link>https://dev.to/datalaria/thomas-bayes-el-reverendo-que-nos-enseno-a-actualizar-nuestras-creencias-con-datos-31g1</link>
      <guid>https://dev.to/datalaria/thomas-bayes-el-reverendo-que-nos-enseno-a-actualizar-nuestras-creencias-con-datos-31g1</guid>
      <description>&lt;p&gt;Hay una pregunta que todo profesional que trabaja con datos debería hacerse y que casi nadie se formula explícitamente: &lt;strong&gt;¿Cómo debería cambiar mi opinión cuando recibo nueva evidencia?&lt;/strong&gt; No me refiero a una respuesta filosófica, sino a una matemática. Si creo que hay un 30% de probabilidad de que un componente electrónico quede obsoleto este año, y de repente recibo un email del proveedor anunciando una reducción de capacidad de producción, ¿cuánto debería subir mi estimación? ¿Al 50%? ¿Al 70%? ¿Cómo lo calculo de forma rigurosa?&lt;/p&gt;

&lt;p&gt;La respuesta a esa pregunta la formuló un reverendo presbiteriano inglés en algún momento antes de 1761, y no se publicó hasta dos años después de su muerte. Su nombre era &lt;strong&gt;Thomas Bayes&lt;/strong&gt;, y su ensayo póstumo es, sin exageración, uno de los documentos más influyentes en la historia de la ciencia. Desde los filtros anti-spam de tu correo electrónico hasta los modelos de predicción probabilística que utilizamos en la &lt;a href="https://dev.to/es/posts/sop-ingenieria-parte2-prediccion/"&gt;serie de Ingeniería S&amp;amp;OP&lt;/a&gt; con Facebook Prophet, todo pasa por el Teorema de Bayes.&lt;/p&gt;

&lt;p&gt;En la línea de figuras históricas que han dado forma a nuestra relación con los datos — &lt;a href="https://dev.to/es/posts/florence-nightingale/"&gt;Florence Nightingale&lt;/a&gt; y la visualización, &lt;a href="https://dev.to/es/posts/john-snow/"&gt;John Snow&lt;/a&gt; y la geolocalización, &lt;a href="https://dev.to/es/posts/abraham_wald/"&gt;Abraham Wald&lt;/a&gt; y el sesgo del superviviente, &lt;a href="https://dev.to/es/posts/kantorovich/"&gt;Kantorovich&lt;/a&gt; y la optimización, &lt;a href="https://dev.to/es/posts/deming/"&gt;Deming&lt;/a&gt; y la calidad, &lt;a href="https://dev.to/es/posts/claude_shannon/"&gt;Claude Shannon&lt;/a&gt; y la información — Bayes ocupa un lugar singular: nos enseñó a pensar en la &lt;strong&gt;incertidumbre como algo cuantificable y actualizable&lt;/strong&gt;, no como un obstáculo, sino como materia prima.&lt;/p&gt;

&lt;h3&gt;
  
  
  El Reverendo y el Ensayo Póstumo
&lt;/h3&gt;

&lt;p&gt;Thomas Bayes nació en Londres en 1702 en el seno de una familia de disidentes religiosos. Su padre, Joshua Bayes, fue uno de los primeros ministros presbiterianos ordenados en Inglaterra. Thomas siguió los pasos de su padre, fue ordenado ministro y pasó la mayor parte de su vida como pastor en Tunbridge Wells, un tranquilo balneario al sureste de Londres.&lt;/p&gt;

&lt;p&gt;Pero Bayes no era un pastor convencional. Era miembro de la &lt;strong&gt;Royal Society&lt;/strong&gt; (elegido en 1742), lo que indica que su reputación matemática era reconocida por la élite científica de la época. Se sabe que publicó un trabajo defendiendo los fundamentos lógicos del cálculo de Newton, pero durante su vida fue una figura discreta, casi invisible en los grandes debates intelectuales de la Ilustración.&lt;/p&gt;

&lt;p&gt;La historia podría haber olvidado por completo a Bayes si no fuera por su amigo &lt;strong&gt;Richard Price&lt;/strong&gt;, un filósofo galés y matemático destacado. Tras la muerte de Bayes en 1761, Price encontró entre sus papeles un manuscrito inacabado titulado &lt;em&gt;"An Essay towards solving a Problem in the Doctrine of Chances"&lt;/em&gt;. Price reconoció inmediatamente su importancia, lo completó, y lo presentó ante la Royal Society en 1763.&lt;/p&gt;

&lt;p&gt;El problema que Bayes intentaba resolver era deceptivamente simple en su formulación y profundamente revolucionario en sus implicaciones: &lt;strong&gt;dada una serie de observaciones, ¿cuál es la probabilidad de que la causa subyacente sea una u otra?&lt;/strong&gt; Es decir, ¿cómo invertimos la dirección de la probabilidad? No «dado que la moneda es justa, ¿cuál es la probabilidad de sacar 7 caras en 10 lanzamientos?», sino la pregunta inversa: «dado que he observado 7 caras en 10 lanzamientos, ¿cuál es la probabilidad de que la moneda sea justa?».&lt;/p&gt;

&lt;h3&gt;
  
  
  El Teorema: Actualizar Creencias con Evidencia
&lt;/h3&gt;

&lt;p&gt;El Teorema de Bayes puede expresarse sin fórmulas intimidantes usando tres conceptos intuitivos:&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F42e03e4z73ewtjioswzl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F42e03e4z73ewtjioswzl.png" alt="Visualización de la actualización bayesiana: del prior al posterior" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prior (Creencia previa)&lt;/strong&gt;: Lo que crees antes de ver los datos. Tu estimación inicial basada en experiencia, intuición o datos históricos. En un contexto S&amp;amp;OP, el &lt;em&gt;prior&lt;/em&gt; podría ser: «Históricamente, vendemos unas 10.000 unidades de este producto en julio».&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evidencia (Likelihood)&lt;/strong&gt;: Los datos nuevos que observas y la probabilidad de observar esos datos bajo diferentes hipótesis. Por ejemplo: «Este junio hemos recibido un 40% más de pedidos anticipados que el año pasado».&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Posterior (Creencia actualizada)&lt;/strong&gt;: Tu nueva estimación después de integrar la evidencia con tu creencia previa. El &lt;em&gt;posterior&lt;/em&gt; combina matemáticamente lo que sabías antes con lo que los datos nuevos te dicen. No descarta tu experiencia previa ni se deja cegar por un solo dato nuevo: &lt;strong&gt;pondera ambos&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;La belleza del enfoque bayesiano es que es &lt;strong&gt;iterativo&lt;/strong&gt;: el &lt;em&gt;posterior&lt;/em&gt; de hoy se convierte en el &lt;em&gt;prior&lt;/em&gt; de mañana. Cada nuevo dato que recibes refina tu estimación. No es una fotografía estática; es una película que se actualiza fotograma a fotograma. Es exactamente la misma filosofía del ciclo PDCA de &lt;a href="https://dev.to/es/posts/deming/"&gt;W. Edwards Deming&lt;/a&gt;: planifica, ejecuta, verifica, ajusta. Repite.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conexión Moderna: Prophet y la Predicción de Demanda
&lt;/h3&gt;

&lt;p&gt;¿Dónde aparece Bayes en la ingeniería de datos moderna? En prácticamente todas partes, pero la conexión más directa con este blog es &lt;strong&gt;Facebook Prophet&lt;/strong&gt;, la herramienta que utilizamos en la &lt;a href="https://dev.to/es/posts/sop-ingenieria-parte2-prediccion/"&gt;Parte 2 de la serie S&amp;amp;OP&lt;/a&gt; para generar forecasts probabilísticos de demanda.&lt;/p&gt;

&lt;p&gt;Prophet es, en su núcleo, un &lt;strong&gt;modelo aditivo bayesiano&lt;/strong&gt;. Descompone una serie temporal en tres componentes — tendencia, estacionalidad y efecto de festivos — y genera no una predicción puntual, sino un &lt;strong&gt;intervalo de confianza&lt;/strong&gt;. Ese intervalo de confianza es, literalmente, una distribución posterior bayesiana: refleja la incertidumbre del modelo dada la evidencia histórica.&lt;/p&gt;

&lt;p&gt;¿Por qué importa esto en la práctica? Porque el &lt;strong&gt;Safety Stock&lt;/strong&gt; que calculamos en la &lt;a href="https://dev.to/es/posts/sop-ingenieria-parte3-optimizacion/"&gt;Parte 3 de la serie S&amp;amp;OP&lt;/a&gt; — la cantidad de inventario de reserva para absorber la variabilidad de la demanda — se calcula sobre el límite superior de ese intervalo de confianza (típicamente al 95%). Si Prophet usara un modelo determinista (un solo número, sin incertidumbre), nuestro Safety Stock sería una adivinanza. Gracias a Bayes, es una &lt;strong&gt;decisión fundamentada en la distribución de probabilidad de la demanda futura&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;El &lt;em&gt;prior&lt;/em&gt; en este contexto es la experiencia acumulada del equipo de demand planning y los patrones históricos de la serie temporal. La &lt;em&gt;evidencia&lt;/em&gt; son los nuevos datos que llegan cada semana o cada mes. El &lt;em&gt;posterior&lt;/em&gt; es el forecast actualizado que alimenta el motor de &lt;a href="https://dev.to/es/posts/sop-ingenieria-parte3-optimizacion/"&gt;programación lineal de PuLP&lt;/a&gt; para optimizar el plan de producción. Bayes está en el corazón de la cadena, aunque nunca se le mencione por su nombre en las reuniones de S&amp;amp;OP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conexión Moderna: A/B Testing y Netflix
&lt;/h3&gt;

&lt;p&gt;Cuando &lt;a href="https://dev.to/es/posts/netflix/"&gt;Netflix&lt;/a&gt; decide qué carátula mostrar para una serie, ejecuta un A/B test masivo: muestra la versión A a millones de usuarios y la versión B a otros tantos, y mide cuál genera más clics. El enfoque clásico (frecuentista) requiere esperar hasta alcanzar un tamaño de muestra predeterminado para declarar un «ganador» con significancia estadística. Si haces &lt;em&gt;peeking&lt;/em&gt; — mirar los resultados antes de tiempo —, invalidas el experimento.&lt;/p&gt;

&lt;p&gt;El enfoque &lt;strong&gt;bayesiano&lt;/strong&gt; para A/B testing elimina este problema. En lugar de un test binario de hipótesis (¿hay diferencia o no?), el A/B testing bayesiano calcula continuamente la &lt;strong&gt;probabilidad de que la versión A sea mejor que la versión B&lt;/strong&gt; dado los datos observados hasta el momento. No necesitas esperar a un tamaño de muestra fijo porque la distribución posterior se actualiza con cada nuevo dato.&lt;/p&gt;

&lt;p&gt;Esto tiene implicaciones prácticas enormes para startups y equipos con tráfico limitado. Si tu producto no tiene millones de usuarios, un test frecuentista puede tardar semanas o meses en ser concluyente. Un test bayesiano te da una estimación de probabilidad útil mucho antes, con la honestidad de decirte: «Con los datos actuales, hay un 78% de probabilidad de que A sea mejor que B». Tú decides si ese 78% es suficiente para actuar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conexión Moderna: Filtros Anti-Spam y Clasificación
&lt;/h3&gt;

&lt;p&gt;Uno de los primeros triunfos del machine learning en producción a escala fue el &lt;strong&gt;filtro de spam bayesiano&lt;/strong&gt;. El algoritmo &lt;strong&gt;Naive Bayes&lt;/strong&gt; (llamado «naive» porque asume independencia entre las palabras, una simplificación burda pero sorprendentemente efectiva) calcula la probabilidad de que un email sea spam dado las palabras que contiene.&lt;/p&gt;

&lt;p&gt;El &lt;em&gt;prior&lt;/em&gt; es la tasa base de spam (aproximadamente el 45% de todo el email global). La &lt;em&gt;evidencia&lt;/em&gt; son las palabras del email: «oferta», «gratis», «urgente» aumentan la probabilidad posterior de spam; «reunión», «presupuesto», «adjunto» la reducen. Cada palabra actualiza la probabilidad, exactamente como Bayes prescribió hace 260 años.&lt;/p&gt;

&lt;p&gt;La conexión con el &lt;a href="https://dev.to/es/posts/abraham_wald/"&gt;sesgo del superviviente de Abraham Wald&lt;/a&gt; es directa: en un filtro de spam, los datos que &lt;strong&gt;no ves&lt;/strong&gt; (emails legítimos que fueron filtrados erróneamente como spam) son tan importantes como los que ves. Si tu filtro tiene una alta tasa de falsos positivos, estás cometiendo el mismo error que los ingenieros de la WWII que solo analizaban los aviones que regresaban. Bayes y Wald, separados por dos siglos, están hablando del mismo problema: &lt;strong&gt;la información ausente distorsiona tus conclusiones&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conexión Moderna: Diagnóstico Médico y la Paradoja del Test Perfecto
&lt;/h3&gt;

&lt;p&gt;Hay un ejemplo clásico de razonamiento bayesiano que debería ser obligatorio en la formación de todo ingeniero, porque destruye una intuición muy extendida. Supongamos que existe un test médico para una enfermedad rara (prevalencia: 1 de cada 10.000 personas). El test tiene una sensibilidad del 99% (detecta correctamente al 99% de los enfermos) y una especificidad del 99% (identifica correctamente al 99% de los sanos).&lt;/p&gt;

&lt;p&gt;Pregunta: si das positivo en este test, &lt;strong&gt;¿cuál es la probabilidad de que realmente estés enfermo?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;La respuesta intuitiva de la mayoría de las personas — incluidos muchos médicos — es «99%». La respuesta bayesiana correcta es aproximadamente &lt;strong&gt;1%&lt;/strong&gt;. ¿Cómo es posible? Porque la prevalencia (el &lt;em&gt;prior&lt;/em&gt;) es tan baja que, incluso con un test del 99%, la inmensa mayoría de los positivos son falsos positivos.&lt;/p&gt;

&lt;p&gt;Este razonamiento es directamente aplicable a la ingeniería de sistemas de IA. Cuando configuramos alertas en el &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;radar de obsolescencia&lt;/a&gt; o en cualquier sistema de monitoreo, la tasa de falsos positivos es el enemigo silencioso. Un sistema de detección de anomalías con un 99% de precisión puede generar cientos de alertas falsas si la tasa base de anomalías reales es muy baja. Bayes nos obliga a pensar en el &lt;em&gt;prior&lt;/em&gt; antes de celebrar la precisión del &lt;em&gt;test&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  El Legado: Pensar en Distribuciones, No en Puntos
&lt;/h3&gt;

&lt;p&gt;La contribución más profunda de Thomas Bayes no fue una fórmula; fue un &lt;strong&gt;cambio de mentalidad&lt;/strong&gt;. Antes de Bayes, la probabilidad se concebía como una propiedad fija de los objetos: una moneda tiene un 50% de probabilidad de caer cara, punto. Después de Bayes, la probabilidad se convirtió en una medida de &lt;strong&gt;nuestro grado de conocimiento&lt;/strong&gt; sobre el mundo, que se actualiza continuamente con nueva evidencia.&lt;/p&gt;

&lt;p&gt;Esta distinción es la diferencia entre un ingeniero que dice &lt;em&gt;"la demanda de julio será de 10.000 unidades"&lt;/em&gt; y uno que dice &lt;em&gt;"la demanda de julio tiene un 95% de probabilidad de estar entre 8.500 y 11.500 unidades, y nuestro plan de producción debe absorber esa variabilidad"&lt;/em&gt;. El primero opera con certezas falsas; el segundo, con incertidumbre cuantificada. El primero es vulnerable al &lt;em&gt;bullwhip effect&lt;/em&gt; que &lt;a href="https://dev.to/es/posts/sop_ingenieria-higiene-datos/"&gt;destruye las cadenas de suministro&lt;/a&gt;; el segundo está blindado contra él.&lt;/p&gt;

&lt;p&gt;En un mundo donde los modelos de IA son estocásticos por naturaleza — como documentamos dolorosamente en el &lt;a href="https://dev.to/es/posts/ia_agents_part9/"&gt;post-mortem del Autopilot&lt;/a&gt;, donde el mismo pipeline produce resultados diferentes en cada ejecución —, pensar bayesianamente no es una opción filosófica: es una necesidad operativa. No preguntes «¿cuál es la respuesta?». Pregunta «¿cuál es la distribución de respuestas posibles, y con qué confianza?».&lt;/p&gt;

&lt;p&gt;Un reverendo del siglo XVIII, trabajando en soledad con pluma y tinta en un pueblo termal inglés, resolvió un problema que hoy mueve la medicina, el marketing, la ciberseguridad, la cadena de suministro y la inteligencia artificial. Y lo hizo con una idea tan simple que cabe en una frase: &lt;strong&gt;actualiza lo que crees con lo que observas&lt;/strong&gt;. Doscientos sesenta años después, seguimos sin encontrar un consejo mejor.&lt;/p&gt;




&lt;h4&gt;
  
  
  Fuentes de Interés:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://plato.stanford.edu/entries/bayes-theorem/" rel="noopener noreferrer"&gt;&lt;strong&gt;Stanford Encyclopedia of Philosophy&lt;/strong&gt;: Bayes' Theorem — Fundamentos y Contexto Histórico&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://royalsociety.org/people/thomas-bayes-11313/" rel="noopener noreferrer"&gt;&lt;strong&gt;Royal Society&lt;/strong&gt;: Thomas Bayes — Fellow Profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=HZGCoVF3YvM" rel="noopener noreferrer"&gt;&lt;strong&gt;3Blue1Brown&lt;/strong&gt;: Bayes' theorem, the geometry of changing beliefs (YouTube)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/Estadistica-descriptiva/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Estadística Descriptiva — Fundamentos de Análisis de Datos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/sop-ingenieria-parte2-prediccion/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: S&amp;amp;OP Part 2 — Demand Planning con Prophet (Modelo Bayesiano)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/abraham_wald/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Abraham Wald — La Epistemología de los Datos Ausentes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/netflix/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Netflix — Cómo los Datos Forjan un Imperio (A/B Testing)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/claude_shannon/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Claude Shannon — La Entropía como Incertidumbre&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>RAG in Production: 7 Anti-Patterns That Destroy Precision (And How I Fixed Them)</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sat, 11 Jul 2026 14:28:15 +0000</pubDate>
      <link>https://dev.to/datalaria/rag-in-production-7-anti-patterns-that-destroy-precision-and-how-i-fixed-them-26ef</link>
      <guid>https://dev.to/datalaria/rag-in-production-7-anti-patterns-that-destroy-precision-and-how-i-fixed-them-26ef</guid>
      <description>&lt;p&gt;RAG is the aspirin of generative AI: everyone prescribes it, almost no one truly understands how it works, and when it fails, the patient hallucinates. If you've attended any tech conference in the past 18 months, you'll have heard the same promise repeated like a mantra: &lt;em&gt;"Connect your LLM to your documents with RAG and you'll have a chatbot that responds with your company's truth."&lt;/em&gt; It's a seductive promise. It is also, in most implementations I've seen, &lt;strong&gt;a well-intentioned lie&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I know this because I've walked both paths. I built a working RAG system in production — the &lt;a href="https://dev.to/en/posts/ai_agents_part8/"&gt;Ops Engineering Copilot&lt;/a&gt; with Algolia Agent Studio, indexing over 70 posts from this blog — and I also built a system that &lt;strong&gt;deliberately rejects RAG&lt;/strong&gt; — the &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;agentic obsolescence radar&lt;/a&gt;, which uses pure Tool Calling to query industrial databases with mathematical precision. The experience of operating both systems in production left me with an uncomfortable conclusion: &lt;strong&gt;RAG isn't bad; what's bad is how we implement it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article is the catalogue of the 7 errors that destroy a RAG system's precision, the solutions that work, and the question no one wants to ask: do you really need RAG, or do you need something else?&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Pattern 1: Blind Chunking
&lt;/h3&gt;

&lt;p&gt;The first step in any RAG pipeline is splitting your documents into fragments (&lt;em&gt;chunks&lt;/em&gt;) that will be stored as vectors. And this is where most tutorials commit the first mortal sin: &lt;strong&gt;chunking by fixed length&lt;/strong&gt; (e.g., 500 tokens per chunk with 50 tokens of overlap).&lt;/p&gt;

&lt;p&gt;The problem is brutal: a paragraph explaining a complex technical concept gets cut in half. The first half ends up in one chunk, the second in another. When the user asks a question, the retriever finds the first half (which contains the keywords) but misses the context from the second. The LLM, true to its nature, &lt;strong&gt;fills in what's missing with a plausible fabrication&lt;/strong&gt;. Hallucination served.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix&lt;/strong&gt;: Semantic chunking. Split by logical units of meaning: sections delimited by headers, complete paragraphs, or functional blocks of the document. In the Ops Copilot, when we indexed Datalaria's posts with Algolia, each &lt;em&gt;record&lt;/em&gt; corresponds to a complete article section (delimited by &lt;code&gt;###&lt;/code&gt; in Markdown), not an arbitrary block of N tokens. The result: each chunk is self-contained and holds a complete thought.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Pattern 2: Generic Embeddings for Specialized Domains
&lt;/h3&gt;

&lt;p&gt;Pre-trained embeddings (like OpenAI's &lt;code&gt;text-embedding-3-small&lt;/code&gt; or Vertex AI's) are trained on general internet text. They work reasonably well for generic questions. But when your domain is highly specialized — industrial engineering, European regulation, electronic component nomenclature — the semantic distance between key terms can be &lt;strong&gt;completely wrong&lt;/strong&gt; in the vector space.&lt;/p&gt;

&lt;p&gt;A real example: in the context of &lt;a href="https://dev.to/en/posts/obs_part1_intro/"&gt;obsolescence management&lt;/a&gt;, the terms "EOL" (&lt;em&gt;End of Life&lt;/em&gt;), "NRND" (&lt;em&gt;Not Recommended for New Designs&lt;/em&gt;), and "PDN" (&lt;em&gt;Product Discontinuation Notice&lt;/em&gt;) are semantically very close for a supply chain engineer. But for a generic embedding, "End of Life" might be closer to an article about palliative care than to a chip discontinuation notice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix&lt;/strong&gt;: Evaluate embeddings with your own dataset before committing. Build a small benchmark of 50-100 question-answer pairs from your domain and measure the retriever's &lt;em&gt;hit rate&lt;/em&gt;. If generic embeddings don't exceed 80% accuracy on your benchmark, consider fine-tuning or specialized embeddings for your sector. And if your domain is highly structured (codes, nomenclatures, tables), you probably don't need embeddings at all: you need &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;Tool Calling&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Pattern 3: Forgetting Reranking
&lt;/h3&gt;

&lt;p&gt;The vector retriever returns the &lt;em&gt;k&lt;/em&gt; documents "closest" in the embedding space. But vector proximity is not synonymous with relevance. A document can contain the same keywords as the user's question and yet answer a completely different question.&lt;/p&gt;

&lt;p&gt;I've seen this anti-pattern cause havoc in technical support systems: the user asks &lt;em&gt;"How do I configure the CrewAI agent timeout?"&lt;/em&gt;, the retriever returns a chunk about GitHub Actions timeouts (same vocabulary, different context), and the LLM generates a response that's technically correct for the wrong chunk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix&lt;/strong&gt;: Add a &lt;strong&gt;reranking&lt;/strong&gt; layer between the retriever and the LLM. A reranker (like Cohere Rerank or a local cross-encoder) receives the original question and the &lt;em&gt;k&lt;/em&gt; candidates from the retriever, and reorders them by actual semantic relevance, not mere vector proximity. In practice, a well-configured reranker can improve retrieval precision by &lt;strong&gt;15% to 30%&lt;/strong&gt; — an improvement that translates directly into fewer hallucinations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Pattern 4: Insufficient Context in the Prompt
&lt;/h3&gt;

&lt;p&gt;The most widespread and easiest mistake to make: injecting 2-3 chunks into the LLM's prompt and expecting a miracle. Modern models like Gemini 2.5 or Claude handle context windows of hundreds of thousands of tokens. Feeding them 500 tokens of retrieved context is like giving a Formula 1 engine the fuel from a cigarette lighter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix&lt;/strong&gt;: Experiment aggressively with the size of the injected context window. Increase from &lt;em&gt;top-3&lt;/em&gt; to &lt;em&gt;top-10&lt;/em&gt; or &lt;em&gt;top-15&lt;/em&gt; chunks and measure the impact on response quality. Include &lt;strong&gt;enriched metadata&lt;/strong&gt; in each chunk: source document title, creation date, author, section. These metadata give the LLM a referential framework to evaluate the relevance and recency of the information. In the Ops Copilot, each Algolia record includes not just the post text, but also the title, category, tags, and publication date.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Pattern 5: Hallucination from Partial Retrieval
&lt;/h3&gt;

&lt;p&gt;This is the most dangerous anti-pattern because it's silent. The retriever finds a partially relevant chunk. The LLM detects that the information is incomplete. Instead of stopping and confessing its ignorance, &lt;strong&gt;it completes the answer with fabricated information&lt;/strong&gt; that sounds perfectly plausible. The user has no way to distinguish which part of the answer comes from retrieval and which part is a hallucination.&lt;/p&gt;

&lt;p&gt;In industrial applications, this can be catastrophic. Imagine a RAG system connected to your maintenance documentation that, when asked about the torque specification of a critical bolt, returns a fabricated value because the correct chunk wasn't retrieved. The result could be a mechanical failure in production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix&lt;/strong&gt;: Double barrier. First: instruct the LLM in the system prompt to answer &lt;strong&gt;"I don't have sufficient information in the provided documentation to answer this question"&lt;/strong&gt; when the retrieved context is insufficient or ambiguous. Include examples in the prompt (few-shot) of correct answers that acknowledge limitations. Second: implement a &lt;strong&gt;post-validation&lt;/strong&gt; of the response. Programmatically evaluate whether the answer contains claims not supported by the injected chunks (frameworks like RAGAS automate this verification with metrics like &lt;em&gt;faithfulness&lt;/em&gt; and &lt;em&gt;answer relevancy&lt;/em&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Pattern 6: Not Measuring Quality
&lt;/h3&gt;

&lt;p&gt;The sixth anti-pattern is cultural, not technical: launching a RAG system to production &lt;strong&gt;without evaluation metrics&lt;/strong&gt;. Asking "does it work?" to five teammates is not an evaluation methodology; it's an anecdote. Without quantitative metrics, you can't know if a change in chunking improved or worsened precision, if a new embedding model is superior to the previous one, or if the reranker you just added justifies its latency cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix&lt;/strong&gt;: Implement an automated evaluation framework &lt;strong&gt;before&lt;/strong&gt; launching to production. The most mature tools are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAGAS&lt;/strong&gt; (&lt;em&gt;Retrieval Augmented Generation Assessment&lt;/em&gt;): Measures &lt;em&gt;faithfulness&lt;/em&gt; (the answer is grounded in context), &lt;em&gt;answer relevancy&lt;/em&gt; (the answer is relevant to the question), and &lt;em&gt;context precision&lt;/em&gt; (the retrieved chunks are relevant).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepEval&lt;/strong&gt;: An open-source framework that lets you define test suites with metrics like &lt;em&gt;hallucination score&lt;/em&gt;, &lt;em&gt;bias&lt;/em&gt;, and &lt;em&gt;toxicity&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key point is to treat RAG evaluation the way you treat your code's unit tests: &lt;strong&gt;if it doesn't have tests, it doesn't go to production&lt;/strong&gt;. Every pipeline iteration (embedding change, chunk size adjustment, new reranker) must pass through the evaluation suite before deployment. It's the same CI/CD philosophy we applied in &lt;a href="https://dev.to/en/posts/ai_agents_part5/"&gt;Autopilot Part 5&lt;/a&gt; with GitHub Actions, but applied to retrieval quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Pattern 7: Using RAG When You Need Tool Calling
&lt;/h3&gt;

&lt;p&gt;This is the anti-pattern that was hardest for me to accept, because it meant questioning my own architectural decision. When we built the &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;agentic obsolescence radar&lt;/a&gt;, the first temptation was to use RAG: index all component documentation, datasheets, and price histories in a vector store, and let the LLM search for relevant information for each &lt;em&gt;End of Life&lt;/em&gt; alert.&lt;/p&gt;

&lt;p&gt;The result was disastrous. LLMs are, as I wrote in that article, &lt;strong&gt;mediocre calculators&lt;/strong&gt;. When the radar needed to calculate the financial impact of an obsolescence (traverse the BOM graph, multiply quantities by prices, sum redesign costs), RAG returned narrative approximations where we needed exact figures. The financial precision was unacceptable for an executive report.&lt;/p&gt;

&lt;p&gt;The solution was to radically separate the &lt;strong&gt;"semantic brain"&lt;/strong&gt; from the &lt;strong&gt;"mathematical muscle"&lt;/strong&gt;: the LLM (Gemini 2.5 + CrewAI) handles natural language comprehension (extracting the &lt;em&gt;Part Number&lt;/em&gt; from a supplier email, understanding the context of an alert), and Python tools (CrewAI's &lt;code&gt;@tool&lt;/code&gt;) handle precision operations (SQL queries to Supabase, P&amp;amp;L calculations, relational graph traversal). The result: executive reports generated in 4 seconds with &lt;strong&gt;0% hallucination in numerical data&lt;/strong&gt;.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffqwvelx03an92e06j68m.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffqwvelx03an92e06j68m.png" alt="RAG vs Tool Calling: when to use each" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rule I've distilled is simple:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You need...&lt;/th&gt;
&lt;th&gt;Use...&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Answers about &lt;strong&gt;unstructured knowledge&lt;/strong&gt; (manuals, posts, narrative documentation)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;RAG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Semantic retrieval is superior for searching free text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Answers with &lt;strong&gt;structured data and numerical precision&lt;/strong&gt; (SQL, APIs, financial calculations)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Tool Calling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tools execute deterministic code, no hallucinations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Both&lt;/strong&gt; (interpret an email + calculate financial impact)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Hybrid architecture&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The LLM orchestrates; the tools execute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And if you're wondering how to standardize those connections between the LLM and the tools so you're not locked into a vendor, that's exactly what we addressed in the article about &lt;a href="https://dev.to/en/posts/mcp_protocol/"&gt;MCP (Model Context Protocol)&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion: RAG Isn't Broken; Your Implementation Is
&lt;/h3&gt;

&lt;p&gt;If there's one message I want you to take from this article, it's this: &lt;strong&gt;RAG is a legitimate and powerful architecture when implemented with engineering rigor&lt;/strong&gt;. The problem isn't the pattern; the problem is that the industry has popularized it as a magical plug-and-play solution, when in reality it's a complex pipeline that requires intelligent chunking, evaluated embeddings, reranking, generous context, hallucination defenses, quality metrics, and the humility to recognize when Tool Calling is the right tool for the job.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;10x Rule&lt;/a&gt; I proposed in the Hidden Economics of AI article applies perfectly here: if RAG doesn't give you a result &lt;strong&gt;10 times better&lt;/strong&gt; than a direct SQL query or an API call, you're probably using the wrong tool for the wrong problem.&lt;/p&gt;

&lt;p&gt;And in the era of the &lt;a href="https://dev.to/en/posts/eu_ai_act/"&gt;EU AI Act&lt;/a&gt;, where traceability (Article 12) and precision are legal obligations for high-risk systems, deploying a RAG that hallucinates isn't just a technical error: it's a regulatory risk.&lt;/p&gt;




&lt;h4&gt;
  
  
  Sources of Interest:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.ragas.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;RAGAS&lt;/strong&gt;: Evaluation Framework for RAG — Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.confident-ai.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;DeepEval&lt;/strong&gt;: Open-Source LLM Evaluation Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pinecone.io/learn/chunking-strategies/" rel="noopener noreferrer"&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;: Chunking Strategies for RAG Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cohere.com/rerank" rel="noopener noreferrer"&gt;&lt;strong&gt;Cohere&lt;/strong&gt;: Reranking — Improving Search Relevance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.datalaria.com/en/posts/obs_part5_radar_agent/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: The Agentic Radar — Why Tool Calling &amp;gt; RAG in Production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.datalaria.com/en/posts/ai_agents_part8/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Autopilot Part 8 — Ops Copilot with Algolia Agent Studio and RAG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.datalaria.com/en/posts/mcp_protocol/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: MCP Protocol — The Standard That Wants to Be the USB of AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.datalaria.com/en/posts/eu_ai_act/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: EU AI Act — Traceability and Precision as Legal Obligations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>RAG en Producción: 7 Antipatrones que Destruyen la Precisión (y Cómo los Solucioné)</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sat, 11 Jul 2026 14:21:13 +0000</pubDate>
      <link>https://dev.to/datalaria/rag-en-produccion-7-antipatrones-que-destruyen-la-precision-y-como-los-solucione-5c52</link>
      <guid>https://dev.to/datalaria/rag-en-produccion-7-antipatrones-que-destruyen-la-precision-y-como-los-solucione-5c52</guid>
      <description>&lt;p&gt;RAG es la aspirina de la IA generativa: todo el mundo la receta, casi nadie entiende cómo funciona realmente, y cuando falla, el paciente sufre alucinaciones. Si has asistido a cualquier conferencia de tecnología en los últimos 18 meses, habrás escuchado la misma promesa repetida como un mantra: &lt;em&gt;"Conecta tu LLM a tus documentos con RAG y tendrás un chatbot que responde con la verdad de tu empresa"&lt;/em&gt;. Es una promesa seductora. También es, en la mayoría de las implementaciones que he visto, &lt;strong&gt;una mentira piadosa&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Lo sé porque he recorrido ambos caminos. Construí un sistema RAG funcional en producción —el &lt;a href="https://dev.to/es/posts/ia_agents_part8/"&gt;Ops Engineering Copilot&lt;/a&gt; con Algolia Agent Studio, indexando los más de 70 posts de este blog— y también construí un sistema que &lt;strong&gt;rechaza RAG deliberadamente&lt;/strong&gt; —el &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;radar agéntico de obsolescencia&lt;/a&gt;, que usa Tool Calling puro para consultar bases de datos industriales con precisión matemática—. La experiencia de operar ambos sistemas en producción me ha dejado una conclusión incómoda: &lt;strong&gt;RAG no es malo; lo que es malo es cómo lo implementamos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Este artículo es el catálogo de los 7 errores que destruyen la precisión de un sistema RAG, las soluciones que funcionan, y la pregunta que nadie quiere hacerse: ¿realmente necesitas RAG, o necesitas otra cosa?&lt;/p&gt;

&lt;h3&gt;
  
  
  Antipatrón 1: Chunking a Ciegas
&lt;/h3&gt;

&lt;p&gt;El primer paso de cualquier pipeline RAG es trocear tus documentos en fragmentos (&lt;em&gt;chunks&lt;/em&gt;) que se almacenarán como vectores. Y aquí es donde la mayoría de los tutoriales cometen el primer pecado mortal: &lt;strong&gt;trocear por longitud fija&lt;/strong&gt; (por ejemplo, 500 tokens por chunk con 50 tokens de overlap).&lt;/p&gt;

&lt;p&gt;El problema es brutal: un párrafo que explica un concepto técnico complejo queda cortado por la mitad. La primera mitad acaba en un chunk, la segunda en otro. Cuando el usuario hace una pregunta, el retriever encuentra la primera mitad (que contiene las palabras clave), pero le falta el contexto de la segunda. El LLM, fiel a su naturaleza, &lt;strong&gt;rellena lo que falta con una invención plausible&lt;/strong&gt;. Alucinación servida.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Chunking semántico. Trocear por unidades lógicas de significado: secciones delimitadas por headers, párrafos completos, o bloques funcionales del documento. En el Ops Copilot, cuando indexamos los posts de Datalaria con Algolia, cada &lt;em&gt;record&lt;/em&gt; corresponde a una sección completa del artículo (delimitada por &lt;code&gt;###&lt;/code&gt; en Markdown), no a un bloque arbitrario de N tokens. El resultado: cada chunk es autosuficiente y contiene un pensamiento completo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Antipatrón 2: Embeddings Genéricos para Dominios Especializados
&lt;/h3&gt;

&lt;p&gt;Los embeddings pre-entrenados (como &lt;code&gt;text-embedding-3-small&lt;/code&gt; de OpenAI o los de Vertex AI) están entrenados con texto general de internet. Funcionan razonablemente bien para preguntas genéricas. Pero cuando tu dominio es altamente especializado —ingeniería industrial, normativa europea, nomenclatura de componentes electrónicos—, la distancia semántica entre términos clave puede ser &lt;strong&gt;completamente incorrecta&lt;/strong&gt; en el espacio vectorial.&lt;/p&gt;

&lt;p&gt;Un ejemplo real: en el contexto de la &lt;a href="https://dev.to/es/posts/obs_parte1_intro/"&gt;gestión de obsolescencia&lt;/a&gt;, los términos "EOL" (&lt;em&gt;End of Life&lt;/em&gt;), "NRND" (&lt;em&gt;Not Recommended for New Designs&lt;/em&gt;) y "PDN" (&lt;em&gt;Product Discontinuation Notice&lt;/em&gt;) están semánticamente muy próximos para un ingeniero de supply chain. Pero para un embedding genérico, "End of Life" podría estar más cerca de un artículo sobre cuidados paliativos que de un aviso de discontinuación de un chip.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Evalúa los embeddings con tu propio dataset antes de comprometerte. Construye un pequeño benchmark de 50-100 pares pregunta-respuesta de tu dominio y mide la tasa de acierto del retriever (&lt;em&gt;hit rate&lt;/em&gt;). Si los embeddings genéricos no superan el 80% de acierto en tu benchmark, considera fine-tuning o embeddings especializados para tu sector. Y si tu dominio es altamente estructurado (códigos, nomenclaturas, tablas), probablemente no necesitas embeddings en absoluto: necesitas &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;Tool Calling&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Antipatrón 3: Olvidar el Reranking
&lt;/h3&gt;

&lt;p&gt;El retriever vectorial te devuelve los &lt;em&gt;k&lt;/em&gt; documentos más "cercanos" en el espacio de embeddings. Pero cercanía vectorial no es sinónimo de relevancia. Un documento puede contener las mismas palabras clave que la pregunta del usuario y, sin embargo, responder a una pregunta completamente diferente.&lt;/p&gt;

&lt;p&gt;He visto este antipatrón causar estragos en sistemas de soporte técnico: el usuario pregunta &lt;em&gt;"¿Cómo configuro el timeout del agente CrewAI?"&lt;/em&gt;, el retriever devuelve un chunk sobre timeouts de GitHub Actions (mismo vocabulario, contexto diferente), y el LLM genera una respuesta técnicamente correcta para el chunk equivocado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Añadir una capa de &lt;strong&gt;reranking&lt;/strong&gt; entre el retriever y el LLM. Un reranker (como Cohere Rerank o un cross-encoder local) recibe la pregunta original y los &lt;em&gt;k&lt;/em&gt; candidatos del retriever, y los reordena por relevancia semántica real, no por simple proximidad vectorial. En la práctica, un reranker bien configurado puede mejorar la precisión del retrieval entre un &lt;strong&gt;15% y un 30%&lt;/strong&gt;, una mejora que se traduce directamente en menos alucinaciones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Antipatrón 4: Contexto Insuficiente en el Prompt
&lt;/h3&gt;

&lt;p&gt;El error más extendido y más fácil de cometer: inyectar 2-3 chunks en el prompt del LLM y esperar un milagro. Los modelos modernos como Gemini 2.5 o Claude manejan ventanas de contexto de cientos de miles de tokens. Alimentarlos con 500 tokens de contexto recuperado es como darle a un motor de Fórmula 1 el combustible de un mechero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Experimenta agresivamente con el tamaño de la ventana de contexto inyectada. Aumenta de &lt;em&gt;top-3&lt;/em&gt; a &lt;em&gt;top-10&lt;/em&gt; o &lt;em&gt;top-15&lt;/em&gt; chunks y mide el impacto en la calidad de la respuesta. Incluye &lt;strong&gt;metadatos enriquecidos&lt;/strong&gt; en cada chunk: título del documento fuente, fecha de creación, autor, sección. Estos metadatos le dan al LLM un marco referencial para evaluar la relevancia y la actualidad de la información. En el Ops Copilot, cada record de Algolia incluye no solo el texto del post, sino también el título, la categoría, los tags y la fecha de publicación.&lt;/p&gt;

&lt;h3&gt;
  
  
  Antipatrón 5: Alucinación por Retrieval Parcial
&lt;/h3&gt;

&lt;p&gt;Este es el antipatrón más peligroso porque es silencioso. El retriever encuentra un chunk parcialmente relevante. El LLM detecta que la información está incompleta. En lugar de detenerse y confesar su ignorancia, &lt;strong&gt;completa la respuesta con información fabricada&lt;/strong&gt; que suena perfectamente plausible. El usuario no tiene forma de distinguir qué parte de la respuesta proviene del retrieval y qué parte es una alucinación.&lt;/p&gt;

&lt;p&gt;En aplicaciones industriales, esto puede ser catastrófico. Imagina un sistema RAG conectado a tu documentación de mantenimiento que, ante una pregunta sobre el par de apriete de un tornillo crítico, devuelve un valor inventado porque el chunk correcto no fue recuperado. El resultado puede ser un fallo mecánico en producción.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Doble barrera. Primera: instruye al LLM en el system prompt para que responda &lt;strong&gt;"No tengo información suficiente en la documentación proporcionada para responder a esta pregunta"&lt;/strong&gt; cuando el contexto recuperado sea insuficiente o ambiguo. Incluye ejemplos en el prompt (few-shot) de respuestas correctas que reconocen limitaciones. Segunda: implementa una &lt;strong&gt;validación posterior&lt;/strong&gt; de la respuesta. Evalúa programáticamente si la respuesta contiene afirmaciones que no están respaldadas por los chunks inyectados (frameworks como RAGAS automatizan esta verificación con métricas como &lt;em&gt;faithfulness&lt;/em&gt; y &lt;em&gt;answer relevancy&lt;/em&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Antipatrón 6: No Medir la Calidad
&lt;/h3&gt;

&lt;p&gt;El sexto antipatrón es cultural, no técnico: lanzar un sistema RAG a producción &lt;strong&gt;sin métricas de evaluación&lt;/strong&gt;. Preguntar "¿funciona?" a cinco compañeros de equipo no es una metodología de evaluación; es una anécdota. Sin métricas cuantitativas, no puedes saber si un cambio en el chunking mejoró o empeoró la precisión, si un nuevo embedding model es superior al anterior, o si el reranker que acabas de añadir justifica su coste de latencia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Implementar un framework de evaluación automatizado &lt;strong&gt;antes&lt;/strong&gt; de lanzar a producción. Las herramientas más maduras son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAGAS&lt;/strong&gt; (&lt;em&gt;Retrieval Augmented Generation Assessment&lt;/em&gt;): Mide &lt;em&gt;faithfulness&lt;/em&gt; (la respuesta está fundamentada en el contexto), &lt;em&gt;answer relevancy&lt;/em&gt; (la respuesta es relevante a la pregunta), y &lt;em&gt;context precision&lt;/em&gt; (los chunks recuperados son relevantes).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepEval&lt;/strong&gt;: Framework open-source que permite definir test suites con métricas como &lt;em&gt;hallucination score&lt;/em&gt;, &lt;em&gt;bias&lt;/em&gt;, y &lt;em&gt;toxicity&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El punto clave es tratar la evaluación de RAG como tratas los tests unitarios de tu código: &lt;strong&gt;si no tiene tests, no va a producción&lt;/strong&gt;. Cada iteración del pipeline (cambio de embedding, ajuste de chunk size, nuevo reranker) debe pasar por la suite de evaluación antes de desplegarse. Es la misma filosofía de CI/CD que aplicamos en el &lt;a href="https://dev.to/es/posts/ia_agents_part5/"&gt;Autopilot Parte 5&lt;/a&gt; con GitHub Actions, pero aplicada a la calidad del retrieval.&lt;/p&gt;

&lt;h3&gt;
  
  
  Antipatrón 7: Usar RAG Cuando Necesitas Tool Calling
&lt;/h3&gt;

&lt;p&gt;Este es el antipatrón que más me costó aceptar, porque implicaba cuestionar una decisión arquitectónica propia. Cuando construimos el &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;radar agéntico de obsolescencia&lt;/a&gt;, la primera tentación fue usar RAG: indexar toda la documentación de componentes, las hojas de datos y los históricos de precios en un vector store, y dejar que el LLM buscara la información relevante ante cada alerta de &lt;em&gt;End of Life&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;El resultado fue desastroso. Los LLMs son, como escribí en aquel artículo, &lt;strong&gt;calculadoras mediocres&lt;/strong&gt;. Cuando el radar necesitaba calcular el impacto financiero de una obsolescencia (cruzar el grafo BOM, multiplicar cantidades por precios, sumar costes de rediseño), RAG devolvía aproximaciones narrativas donde necesitábamos cifras exactas. La precisión financiera era inaceptable para un informe ejecutivo.&lt;/p&gt;

&lt;p&gt;La solución fue separar radicalmente el &lt;strong&gt;"cerebro" semántico&lt;/strong&gt; del &lt;strong&gt;"músculo" matemático&lt;/strong&gt;: el LLM (Gemini 2.5 + CrewAI) se encarga de la comprensión del lenguaje natural (extraer el &lt;em&gt;Part Number&lt;/em&gt; de un email de proveedor, entender el contexto de una alerta), y las herramientas Python (&lt;code&gt;@tool&lt;/code&gt; de CrewAI) se encargan de las operaciones de precisión (consultas SQL a Supabase, cálculos de P&amp;amp;L, cruce de grafos relacionales). El resultado: reportes ejecutivos generados en 4 segundos con &lt;strong&gt;0% de alucinación en los datos numéricos&lt;/strong&gt;.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frzdddenfbh474jpjayxj.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frzdddenfbh474jpjayxj.png" alt="RAG vs Tool Calling: cuándo usar cada uno" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La regla que he destilado es sencilla:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Necesitas...&lt;/th&gt;
&lt;th&gt;Usa...&lt;/th&gt;
&lt;th&gt;Por qué&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Respuestas sobre &lt;strong&gt;conocimiento no estructurado&lt;/strong&gt; (manuales, posts, documentación narrativa)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;RAG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;El retrieval semántico es superior para buscar en texto libre&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Respuestas con &lt;strong&gt;datos estructurados y precisión numérica&lt;/strong&gt; (SQL, APIs, cálculos financieros)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Tool Calling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Las herramientas ejecutan código determinista, sin alucinaciones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Ambos&lt;/strong&gt; (interpretar un email + calcular impacto financiero)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Arquitectura híbrida&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;El LLM orquesta; las herramientas ejecutan&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Y si te preguntas cómo estandarizar esas conexiones entre el LLM y las herramientas para no quedar atado a un proveedor, eso es exactamente lo que abordamos en el artículo sobre &lt;a href="https://dev.to/es/posts/mcp_protocol/"&gt;MCP (Model Context Protocol)&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusión: RAG No Está Roto; Tu Implementación Sí
&lt;/h3&gt;

&lt;p&gt;Si hay un mensaje que quiero que te lleves de este artículo es este: &lt;strong&gt;RAG es una arquitectura legítima y poderosa cuando se implementa con rigor ingenieril&lt;/strong&gt;. El problema no es el patrón; el problema es que la industria lo ha popularizado como una solución mágica plug-and-play, cuando en realidad es un pipeline complejo que requiere chunking inteligente, embeddings evaluados, reranking, contexto generoso, defensas contra alucinaciones, métricas de calidad, y la humildad de reconocer cuándo Tool Calling es la herramienta correcta.&lt;/p&gt;

&lt;p&gt;La &lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;Regla del 10x&lt;/a&gt; que propuse en el artículo sobre la Economía Oculta de la IA aplica perfectamente aquí: si RAG no te da un resultado &lt;strong&gt;10 veces mejor&lt;/strong&gt; que una búsqueda SQL directa o una llamada a una API, probablemente estás usando la herramienta equivocada para el problema equivocado.&lt;/p&gt;

&lt;p&gt;Y en la era del &lt;a href="https://dev.to/es/posts/eu_ai_act/"&gt;EU AI Act&lt;/a&gt;, donde la trazabilidad (Artículo 12) y la precisión son obligaciones legales para sistemas de alto riesgo, implementar un RAG que alucina no es solo un error técnico: es un riesgo regulatorio.&lt;/p&gt;




&lt;h4&gt;
  
  
  Fuentes de Interés:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.ragas.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;RAGAS&lt;/strong&gt;: Framework de Evaluación para RAG — Documentación Oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.confident-ai.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;DeepEval&lt;/strong&gt;: Framework Open-Source de Evaluación de LLMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pinecone.io/learn/chunking-strategies/" rel="noopener noreferrer"&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;: Chunking Strategies for RAG Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cohere.com/rerank" rel="noopener noreferrer"&gt;&lt;strong&gt;Cohere&lt;/strong&gt;: Reranking — Improving Search Relevance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https:www.datalaria.com/es/posts/obs_parte5_radar/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: El Radar Agéntico — Por qué Tool Calling &amp;gt; RAG en Producción&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https:www.datalaria.com/es/posts/ia_agents_part8/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Autopilot Part 8 — Ops Copilot con Algolia Agent Studio y RAG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https:www.datalaria.com/es/posts/mcp_protocol/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: MCP Protocol — El Estándar que Quiere Ser el USB de la IA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https:www.datalaria.com/es/posts/eu_ai_act/" rel="noopener noreferrer"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: EU AI Act — Trazabilidad y Precisión como Obligación Legal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>EU AI Act: What Every Engineer Needs to Know (No Lawyers Required)</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 05 Jul 2026 21:36:38 +0000</pubDate>
      <link>https://dev.to/datalaria/eu-ai-act-what-every-engineer-needs-to-know-no-lawyers-required-1i8m</link>
      <guid>https://dev.to/datalaria/eu-ai-act-what-every-engineer-needs-to-know-no-lawyers-required-1i8m</guid>
      <description>&lt;p&gt;Picture this scenario: your European startup launches an AI tool that scans résumés to filter candidates in hiring processes. The product works, clients are happy, revenue is growing. Three months later, you receive a formal notification from the national AI supervisory authority. Your system has been classified as &lt;strong&gt;"high-risk"&lt;/strong&gt; under Regulation (EU) 2024/1689, better known as the &lt;strong&gt;EU AI Act&lt;/strong&gt;. You have no mandatory technical documentation, you haven't implemented human oversight, and your training data doesn't meet the governance requirements. Potential fine: up to &lt;strong&gt;35 million euros&lt;/strong&gt; or &lt;strong&gt;7% of your worldwide annual turnover&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Impossible? Not at all. This is exactly what European regulation has stipulated since February 2025 for prohibited practices, and what from &lt;strong&gt;August 2, 2026&lt;/strong&gt; extends to the majority of obligations for high-risk systems (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689" rel="noopener noreferrer"&gt;Art. 113, Regulation (EU) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;If you already operate AI agents in production — as we've done on this blog with the &lt;a href="https://dev.to/en/posts/ai_agents_part1/"&gt;Autopilot Project&lt;/a&gt; or the &lt;a href="https://dev.to/en/posts/obs_part5_radar_agent/"&gt;agentic obsolescence radar&lt;/a&gt; — you need to know exactly where the line is. And most guides on the EU AI Act are written by lawyers, for lawyers. Not this one. This one is written by an engineer who translates every article of the regulation into the language we actually understand: architectures, pipelines, and code.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Risk Pyramid: Classify Your AI in 60 Seconds
&lt;/h3&gt;

&lt;p&gt;The EU AI Act doesn't ban artificial intelligence. What it does is classify every AI system into &lt;strong&gt;four risk levels&lt;/strong&gt; and assign proportional obligations to each level. It's a pragmatic approach inspired by existing regulatory frameworks like REACH for the chemical industry or the Machinery Directive for manufacturing: the higher the potential risk, the stricter the control requirements.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0afmbsyhpqjx7rfpny1k.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0afmbsyhpqjx7rfpny1k.png" alt="EU AI Act risk classification pyramid" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🔴 Unacceptable Risk — PROHIBITED (Article 5)
&lt;/h4&gt;

&lt;p&gt;These practices have been &lt;strong&gt;completely banned in the EU since February 2, 2025&lt;/strong&gt; (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e2816-1-1" rel="noopener noreferrer"&gt;Art. 5, Regulation (EU) 2024/1689&lt;/a&gt;). There are no commercial exceptions or sandboxes that permit them. They are the absolute red lines of the regulation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subliminal or deceptive manipulation&lt;/strong&gt;: AI systems designed to distort a person's behavior using techniques that operate below their threshold of consciousness, causing significant harm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exploitation of vulnerabilities&lt;/strong&gt;: AI that exploits the age, disability, or socioeconomic situation of vulnerable persons to alter their behavior in a harmful way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social scoring&lt;/strong&gt;: Systems used by public authorities to evaluate or classify people based on their social behavior or personal traits, resulting in unjustified detrimental treatment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictive policing&lt;/strong&gt;: AI that predicts a person's criminal behavior based solely on their profiling or personality traits (with limited exceptions for ongoing investigations).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Untargeted facial scraping&lt;/strong&gt;: The creation or expansion of facial recognition databases through untargeted collection of facial images from the internet or CCTV footage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emotion recognition at work and school&lt;/strong&gt;: Inferring the emotions of employees in the workplace or students in educational institutions (with very limited medical or safety exceptions).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensitive biometric categorization&lt;/strong&gt;: Systems that infer data such as political or religious beliefs, sexual orientation, or race from biometric data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any AI system in your organization touches any of these categories, the correct position is not to "find a legal loophole" but to remove it from the product. The fine for these practices reaches &lt;strong&gt;35 million euros&lt;/strong&gt; or &lt;strong&gt;7% of global annual turnover&lt;/strong&gt;, whichever is higher (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e9487-1-1" rel="noopener noreferrer"&gt;Art. 99.3, Regulation (EU) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  🟠 High Risk — STRICT REGULATION (Articles 6-49 and Annex III)
&lt;/h4&gt;

&lt;p&gt;This is where most enterprise AI systems land, and where the regulation demands the greatest technical effort. A system is classified as "high-risk" if it is a safety component of a product regulated by EU harmonized legislation (medical devices, toys, aviation), or if it operates in any of the sensitive areas defined in &lt;strong&gt;Annex III&lt;/strong&gt; of the regulation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Critical infrastructure&lt;/strong&gt;: Systems for the management of essential services (transport, water, gas, electricity, telecommunications).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Education and training&lt;/strong&gt;: AI that determines access to educational institutions or assesses student performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Employment and HR&lt;/strong&gt;: AI tools for recruitment, CV screening, task assignment, or worker management. This is directly relevant to what we analyzed in the &lt;a href="https://dev.to/en/posts/onboarding/"&gt;Onboarding with AI article&lt;/a&gt;: using IDP and GenAI to automate employee onboarding falls into the high-risk category if the system makes or influences decisions about people.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Essential services&lt;/strong&gt;: Systems that determine access to credit, essential public services, or life and health insurance. Startups like &lt;a href="https://dev.to/en/posts/clarity_ai/"&gt;Clarity AI&lt;/a&gt;, which calculates sustainability scores for investment decisions, operate directly in this zone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Law enforcement, justice, and migration&lt;/strong&gt;: AI in border control, asylum processing, security risk assessment, or the administration of justice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biometrics&lt;/strong&gt;: Certain remote biometric identification systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fine for non-compliance with high-risk system obligations is up to &lt;strong&gt;15 million euros&lt;/strong&gt; or &lt;strong&gt;3% of worldwide annual turnover&lt;/strong&gt; (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e9487-1-1" rel="noopener noreferrer"&gt;Art. 99.4, Regulation (EU) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important note&lt;/strong&gt;: The legislative proposal known as the &lt;em&gt;"Digital Omnibus"&lt;/em&gt; (2025) may postpone certain Annex III (high-risk) obligations from August 2026 to &lt;strong&gt;December 2027&lt;/strong&gt;. However, the underlying technical requirements remain unchanged — only the enforcement timeline shifts. Don't wait.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  🟡 Limited Risk — TRANSPARENCY (Articles 50-52)
&lt;/h4&gt;

&lt;p&gt;Limited-risk systems have a single fundamental obligation: &lt;strong&gt;inform the user that they are interacting with an AI&lt;/strong&gt;. This applies to chatbots, content generation systems (deepfakes), and conversational assistants. Our &lt;a href="https://dev.to/en/posts/ai_agents_part8/"&gt;Ops Engineering Copilot&lt;/a&gt; (the chatbot based on Algolia Agent Studio and RAG that answers questions about the blog) falls into this category: the user must know they're talking to a machine, not a person.&lt;/p&gt;

&lt;h4&gt;
  
  
  🟢 Minimal Risk — FREE (no additional obligations)
&lt;/h4&gt;

&lt;p&gt;The majority of commercial AI systems fall here: spam filters, recommendation engines, generative AI for marketing content. The &lt;a href="https://dev.to/en/posts/ai_agents_part1/"&gt;Autopilot Project&lt;/a&gt; that automatically generates social media posts has no specific obligations under the EU AI Act beyond general good practices. The same applies to tools like the &lt;a href="https://dev.to/en/posts/app_unit_converter/"&gt;unit converter&lt;/a&gt; or the &lt;a href="https://dev.to/en/posts/app_flashcards/"&gt;flashcards app&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The 5 Technical Commandments of High Risk
&lt;/h3&gt;

&lt;p&gt;If your system falls into the 🟠 category, you need to implement five blocks of technical requirements. What's notable is that, if you already follow the engineering practices we've documented on this blog, you're closer to compliance than you think:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Risk Management — Article 9&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The regulation requires establishing, implementing, and maintaining a &lt;strong&gt;risk management system that operates throughout the entire lifecycle of the AI system&lt;/strong&gt; (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e3383-1-1" rel="noopener noreferrer"&gt;Art. 9, Regulation (EU) 2024/1689&lt;/a&gt;). This includes identifying known and foreseeable risks to health, safety, and fundamental rights, estimating those risks, and adopting mitigation measures.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Translation for engineers&lt;/em&gt;: It's a CI/CD pipeline applied to risk. Document, monitor, iterate. It's not a static document you write once and file away; it's a living process. Exactly the philosophy that &lt;a href="https://dev.to/en/posts/deming/"&gt;W. Edwards Deming&lt;/a&gt; systematized with the PDCA cycle (Plan-Do-Check-Act). If you already implement PDCA in your quality processes, the AI Act's risk management will feel familiar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Data Governance — Article 10&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Training, validation, and testing datasets must meet high-quality criteria: be &lt;strong&gt;representative, relevant, free of errors to the extent possible, and with appropriate governance practices&lt;/strong&gt; to prevent bias (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e3549-1-1" rel="noopener noreferrer"&gt;Art. 10, Regulation (EU) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Translation&lt;/em&gt;: The &lt;a href="https://dev.to/en/posts/sop_engineering-data-hygiene/"&gt;data hygiene&lt;/a&gt; we preached in the S&amp;amp;OP series is no longer an optional best practice — &lt;strong&gt;it's the law&lt;/strong&gt;. The cleanup pipeline with Z-Score for outlier detection, anomaly flagging (not deletion), and persistence in Supabase with Row Level Security that we built in that series directly fulfills the spirit of this article. What the regulation adds is the requirement that all of this be documented and auditable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Technical Documentation — Article 11 and Annex IV&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before marketing or putting a high-risk system into service, you must prepare a &lt;strong&gt;technical file&lt;/strong&gt; demonstrating compliance with the regulation (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e3667-1-1" rel="noopener noreferrer"&gt;Art. 11, Regulation (EU) 2024/1689&lt;/a&gt;). Annex IV details the minimum content: general system description, detailed architecture and components, training data information, performance metrics (accuracy, robustness, cybersecurity), and the development process.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Translation&lt;/em&gt;: Your README and your Confluence page aren't enough. The regulation requires a living document covering the system architecture (like the Mermaid diagrams we use in the &lt;a href="https://dev.to/en/posts/obs_part3_architecture/"&gt;Obsolescence series&lt;/a&gt;), model performance metrics, robustness tests, and cybersecurity measures. Think of it as an Architecture Decision Record on regulatory steroids.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Record-Keeping and Logging — Article 12&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;High-risk systems must be designed to &lt;strong&gt;automatically generate logs&lt;/strong&gt; during operation, ensuring full traceability of every decision and the ability to reconstruct events if a compliance issue arises (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e3702-1-1" rel="noopener noreferrer"&gt;Art. 12, Regulation (EU) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Translation&lt;/em&gt;: If you already use Supabase + FastAPI with the architecture from the &lt;a href="https://dev.to/en/posts/obs_part6_fastapi_server/"&gt;agentic radar&lt;/a&gt;, this should sound familiar. Every ingestion event, every CrewAI agent decision, every LLM response gets logged in the database. What the regulation formalizes is what any competent backend engineer should already be doing: structured logging, not as an afterthought, but as a design requirement from day zero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Human Oversight — Article 14&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The system must be designed with &lt;strong&gt;"human-in-the-loop"&lt;/strong&gt; or &lt;strong&gt;"human-on-the-loop"&lt;/strong&gt; mechanisms, ensuring that a qualified human operator can oversee, interpret, and if necessary, override the AI's decisions (&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689#d1e3789-1-1" rel="noopener noreferrer"&gt;Art. 14, Regulation (EU) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Translation&lt;/em&gt;: This is the principle we implemented in &lt;a href="https://dev.to/en/posts/ai_agents_part5/"&gt;Autopilot Part 5&lt;/a&gt; with &lt;strong&gt;GitHub Environments for manual approval&lt;/strong&gt;. The pipeline generates content automatically with AI agents, but no post gets published without explicit human review and approval. It's not a new concept for us; now it has the force of law.&lt;/p&gt;

&lt;h3&gt;
  
  
  Spain and the AESIA: The Local Sheriff
&lt;/h3&gt;

&lt;p&gt;The EU AI Act is a &lt;strong&gt;European Regulation&lt;/strong&gt; (not a Directive), which means it is directly applicable in Spain without needing national legislative transposition. However, Spain has taken an additional step: in May 2026, the Council of Ministers approved the &lt;strong&gt;Spanish AI Law&lt;/strong&gt;, which complements the European regulation and defines the role of the &lt;strong&gt;AESIA (Spanish Agency for AI Supervision)&lt;/strong&gt; as the national competent authority.&lt;/p&gt;

&lt;p&gt;The AESIA is the entity that will investigate complaints, conduct audits, and, where applicable, impose the AI Act's penalties on Spanish territory. Additionally, Spain has launched &lt;strong&gt;regulatory sandboxes&lt;/strong&gt;: controlled environments where startups and companies can test innovative AI systems under AESIA supervision, without sanctioning risk during the trial period.&lt;/p&gt;

&lt;p&gt;The Spanish startups we've analyzed on this blog are not strangers to this regulation. &lt;a href="https://dev.to/en/posts/clarity_ai/"&gt;Clarity AI&lt;/a&gt; operates in ESG financial scoring, an area that Annex III classifies as high-risk. &lt;a href="https://dev.to/en/posts/nextail/"&gt;Nextail&lt;/a&gt; makes inventory decisions with prescriptive AI in the supply chain. &lt;a href="https://dev.to/en/posts/devo/"&gt;Devo&lt;/a&gt; protects critical military infrastructure, the most sensitive category in the regulation. All of them will need to demonstrate compliance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compliance-as-Code: The Engineer's Checklist
&lt;/h3&gt;

&lt;p&gt;If there's one thing we've learned building data pipelines on this blog, it's that documentation that isn't automated doesn't get maintained. Here's an actionable checklist, designed so that a technical team can execute it sprint by sprint:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1 — Inventory and Classification&lt;/strong&gt; &lt;em&gt;(Sprint 1)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inventory all AI systems in your organization (including ones you don't call "AI" but internally use ML)&lt;/li&gt;
&lt;li&gt;Classify each system in the risk pyramid: Prohibited / High / Limited / Minimal&lt;/li&gt;
&lt;li&gt;For each system classified as High Risk, assign a technical compliance owner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 2 — Technical Implementation&lt;/strong&gt; &lt;em&gt;(Sprints 2-4)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement automatic logging of model decisions (Art. 12): timestamps, inputs, outputs, confidence scores&lt;/li&gt;
&lt;li&gt;Create living technical documentation (Art. 11 + Annex IV): architecture, data, metrics, process&lt;/li&gt;
&lt;li&gt;Design human oversight mechanism (Art. 14): manual approval, "kill switch" button, monitoring dashboards&lt;/li&gt;
&lt;li&gt;Audit training datasets (Art. 10): bias, representativeness, traceability, versioning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 3 — Continuous Management&lt;/strong&gt; &lt;em&gt;(Ongoing)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Establish risk management pipeline (Art. 9): periodic review, Concept Drift monitoring, mitigation plan&lt;/li&gt;
&lt;li&gt;For Limited Risk systems: verify the user knows they're interacting with AI&lt;/li&gt;
&lt;li&gt;Configure cost and usage alerts (connect with &lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;The Hidden Economics of AI&lt;/a&gt;: compliance is an additional hidden cost)&lt;/li&gt;
&lt;li&gt;Register the system in the EU public database (when applicable for high-risk)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Regulation Isn't the Enemy; Ignorance Is
&lt;/h3&gt;

&lt;p&gt;There is an understandable temptation to see the EU AI Act as a bureaucratic brake on European innovation. And in part, the criticism has merit: the definition of "high-risk" in Annex III is extremely broad, the documentation burden of Annex IV can be disproportionate for a five-person startup, and the uncertainty around the &lt;em&gt;Digital Omnibus&lt;/em&gt; generates paralysis in legal teams.&lt;/p&gt;

&lt;p&gt;But if you strip away the legal jargon and look at the bare technical requirements, what the regulation actually asks is: &lt;strong&gt;document your system, control your data, log your AI's decisions, manage risks continuously, and keep a human in the control loop&lt;/strong&gt;. In other words, exactly what a good engineer should already be doing.&lt;/p&gt;

&lt;p&gt;If you've followed the practices we've documented on this blog — &lt;a href="https://dev.to/en/posts/sop_engineering-data-hygiene/"&gt;data hygiene with Z-Score&lt;/a&gt;, &lt;a href="https://dev.to/en/posts/obs_part6_fastapi_server/"&gt;automatic logging with FastAPI and Supabase&lt;/a&gt;, &lt;a href="https://dev.to/en/posts/ai_agents_part5/"&gt;human-in-the-loop with GitHub Environments&lt;/a&gt;, &lt;a href="https://dev.to/en/posts/deming/"&gt;risk management with Deming's PDCA cycle&lt;/a&gt; — &lt;strong&gt;you're already 80% of the way to compliance&lt;/strong&gt;. The remaining 20% is formalization and documentation.&lt;/p&gt;

&lt;p&gt;As Deming said: &lt;em&gt;"It is not enough to do your best; you must first know what to do."&lt;/em&gt; Now the regulation tells you what to do. How to do it, you already know. Or at least, you have a blog where you can find it.&lt;/p&gt;




&lt;h4&gt;
  
  
  Sources of Interest:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689" rel="noopener noreferrer"&gt;&lt;strong&gt;Regulation (EU) 2024/1689&lt;/strong&gt;: Full text of the EU AI Act on EUR-Lex (EN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai" rel="noopener noreferrer"&gt;&lt;strong&gt;European Commission&lt;/strong&gt;: Official EU AI Act page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://artificialintelligenceact.eu/" rel="noopener noreferrer"&gt;&lt;strong&gt;EU AI Act Explorer&lt;/strong&gt;: Navigable guide through the regulation's articles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://portal.mineco.gob.es/es-es/digitalizacion/Paginas/ia.aspx" rel="noopener noreferrer"&gt;&lt;strong&gt;digital.gob.es&lt;/strong&gt;: Information about the AESIA and AI regulation in Spain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/hidden_economics_ai/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: The Hidden Economics of AI — Real Production Costs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/deming/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: W. Edwards Deming — The Father of Total Quality Who Predicted the Future of AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/sop_engineering-data-hygiene/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: S&amp;amp;OP Data Hygiene — Why Your Spreadsheet Lies to You&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/en/posts/ai_agents_part5/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Autopilot Part 5 — From Localhost to the Cloud with GitHub Actions and CI/CD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>EU AI Act: Lo que Todo Ingeniero Español Necesita Saber (Sin Abogados)</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 05 Jul 2026 21:32:28 +0000</pubDate>
      <link>https://dev.to/datalaria/eu-ai-act-lo-que-todo-ingeniero-espanol-necesita-saber-sin-abogados-4k52</link>
      <guid>https://dev.to/datalaria/eu-ai-act-lo-que-todo-ingeniero-espanol-necesita-saber-sin-abogados-4k52</guid>
      <description>&lt;p&gt;Imagina este escenario: tu startup española lanza una herramienta de IA que analiza currículums para filtrar candidatos en procesos de selección. El producto funciona, los clientes están contentos, la facturación crece. Tres meses después, recibes una notificación formal de la &lt;strong&gt;AESIA&lt;/strong&gt; (Agencia Española de Supervisión de Inteligencia Artificial). Tu sistema ha sido clasificado como &lt;strong&gt;"alto riesgo"&lt;/strong&gt; bajo el Reglamento (UE) 2024/1689, más conocido como el &lt;strong&gt;EU AI Act&lt;/strong&gt;. No tienes documentación técnica obligatoria, no has implementado supervisión humana, y tus datos de entrenamiento no cumplen los requisitos de gobernanza. Multa potencial: hasta &lt;strong&gt;35 millones de euros&lt;/strong&gt; o el &lt;strong&gt;7% de tu facturación mundial anual&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;¿Imposible? No. Es exactamente lo que la regulación europea vigente estipula desde febrero de 2025 para las prácticas prohibidas, y lo que a partir del &lt;strong&gt;2 de agosto de 2026&lt;/strong&gt; se extiende a la mayoría de las obligaciones para sistemas de alto riesgo (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689" rel="noopener noreferrer"&gt;Art. 113, Reglamento (UE) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Si ya operas agentes de IA en producción —como hemos hecho en este blog con el &lt;a href="https://dev.to/es/posts/ia_agents_part1/"&gt;Proyecto Autopilot&lt;/a&gt; o el &lt;a href="https://dev.to/es/posts/obs_parte5_radar/"&gt;radar agéntico de obsolescencia&lt;/a&gt;— necesitas saber exactamente dónde está la línea. Y la mayoría de guías sobre el EU AI Act están escritas por abogados, para abogados. Esta no. Esta está escrita por un ingeniero que traduce cada artículo del reglamento al lenguaje que de verdad entendemos: arquitecturas, pipelines y código.&lt;/p&gt;

&lt;h3&gt;
  
  
  La Pirámide del Riesgo: Clasifica tu IA en 60 Segundos
&lt;/h3&gt;

&lt;p&gt;El EU AI Act no prohíbe la inteligencia artificial. Lo que hace es clasificar cada sistema de IA en &lt;strong&gt;cuatro niveles de riesgo&lt;/strong&gt;, y asignar obligaciones proporcionales a cada nivel. Es un enfoque pragmático que se inspira en marcos regulatorios existentes como REACH para la industria química o la Directiva de Máquinas para la industria manufacturera: a mayor riesgo potencial, mayor exigencia de control.&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdhkdx3zfxmmr8ormcj8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdhkdx3zfxmmr8ormcj8.png" alt="Pirámide de clasificación de riesgo del EU AI Act" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🔴 Riesgo Inaceptable — PROHIBIDO (Artículo 5)
&lt;/h4&gt;

&lt;p&gt;Estas prácticas están &lt;strong&gt;completamente vetadas en la UE desde el 2 de febrero de 2025&lt;/strong&gt; (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e2816-1-1" rel="noopener noreferrer"&gt;Art. 5, Reglamento (UE) 2024/1689&lt;/a&gt;). No hay excepciones comerciales ni sandboxes que las permitan. Son las líneas rojas absolutas de la regulación:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manipulación subliminal o engañosa&lt;/strong&gt;: Sistemas de IA diseñados para distorsionar el comportamiento de una persona usando técnicas que operan por debajo de su umbral de consciencia, causando un perjuicio significativo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explotación de vulnerabilidades&lt;/strong&gt;: IA que explota la edad, la discapacidad o la situación socioeconómica de personas vulnerables para alterar su comportamiento de forma perjudicial.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Puntuación social (&lt;em&gt;social scoring&lt;/em&gt;)&lt;/strong&gt;: Sistemas utilizados por autoridades públicas para evaluar o clasificar a personas en función de su comportamiento social o sus rasgos personales, resultando en un trato desfavorable injustificado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policiamiento predictivo&lt;/strong&gt;: IA que predice el comportamiento delictivo de una persona basándose exclusivamente en su perfilado o rasgos de personalidad (con excepciones limitadas para investigaciones en curso).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scraping facial masivo&lt;/strong&gt;: La creación o expansión de bases de datos de reconocimiento facial mediante la recopilación no dirigida de imágenes faciales de Internet o de cámaras de vigilancia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reconocimiento emocional en el trabajo y la educación&lt;/strong&gt;: Inferir emociones de empleados en el lugar de trabajo o de estudiantes en centros educativos (con excepciones médicas o de seguridad muy limitadas).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Categorización biométrica sensible&lt;/strong&gt;: Sistemas que infieren datos como creencias políticas o religiosas, orientación sexual o raza a partir de datos biométricos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si un sistema de IA de tu organización roza cualquiera de estas categorías, la posición correcta no es «buscar un hueco legal», sino eliminarlo del producto. La multa para estas prácticas alcanza los &lt;strong&gt;35 millones de euros&lt;/strong&gt; o el &lt;strong&gt;7% de la facturación anual global&lt;/strong&gt;, lo que sea mayor (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e9487-1-1" rel="noopener noreferrer"&gt;Art. 99.3, Reglamento (UE) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  🟠 Alto Riesgo — REGULACIÓN ESTRICTA (Artículos 6-49 y Anexo III)
&lt;/h4&gt;

&lt;p&gt;Aquí es donde la mayoría de los sistemas empresariales de IA caen, y donde la regulación exige el mayor esfuerzo técnico. Un sistema se clasifica como «alto riesgo» si es un componente de seguridad de un producto regulado por la legislación armonizada de la UE (dispositivos médicos, juguetes, aviación), o si opera en alguna de las áreas sensibles definidas en el &lt;strong&gt;Anexo III&lt;/strong&gt; del reglamento:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infraestructura crítica&lt;/strong&gt;: Sistemas para la gestión de servicios esenciales (transporte, agua, gas, electricidad, telecomunicaciones).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Educación y formación&lt;/strong&gt;: IA que determina el acceso a instituciones educativas o que evalúa el rendimiento de estudiantes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Empleo y RRHH&lt;/strong&gt;: Herramientas de IA para reclutamiento, filtrado de CVs, asignación de tareas o gestión de trabajadores. Esto es directamente relevante para lo que analizamos en el &lt;a href="https://dev.to/es/posts/onboarding/"&gt;artículo sobre Onboarding con IA&lt;/a&gt;: usar IDP y GenAI para automatizar la incorporación de empleados cae en la categoría de alto riesgo si el sistema toma o influye en decisiones sobre personas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Servicios esenciales&lt;/strong&gt;: Sistemas que determinan el acceso a crédito, servicios públicos esenciales o seguros de vida y salud. Startups como &lt;a href="https://dev.to/es/posts/clarity_ai/"&gt;Clarity AI&lt;/a&gt;, que calcula scores de sostenibilidad para decisiones de inversión, operan directamente en esta zona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orden público, justicia y migración&lt;/strong&gt;: IA en control fronterizo, asilo, evaluación de riesgos de seguridad o administración de justicia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biometría&lt;/strong&gt;: Ciertos sistemas de identificación biométrica a distancia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La multa por incumplimiento en sistemas de alto riesgo es de hasta &lt;strong&gt;15 millones de euros&lt;/strong&gt; o el &lt;strong&gt;3% de la facturación mundial anual&lt;/strong&gt; (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e9487-1-1" rel="noopener noreferrer"&gt;Art. 99.4, Reglamento (UE) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota importante&lt;/strong&gt;: La propuesta legislativa conocida como &lt;em&gt;"Digital Omnibus"&lt;/em&gt; (2025) podría aplazar algunas obligaciones del Anexo III (alto riesgo) de agosto de 2026 a &lt;strong&gt;diciembre de 2027&lt;/strong&gt;. Sin embargo, los requisitos técnicos subyacentes no cambian, solo el calendario de enforcement. No esperes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  🟡 Riesgo Limitado — TRANSPARENCIA (Artículos 50-52)
&lt;/h4&gt;

&lt;p&gt;Los sistemas de riesgo limitado tienen una única obligación fundamental: &lt;strong&gt;informar al usuario de que está interactuando con una IA&lt;/strong&gt;. Esto aplica a chatbots, sistemas de generación de contenido (deepfakes), y asistentes conversacionales. Nuestro &lt;a href="https://dev.to/es/posts/ia_agents_part8/"&gt;Ops Engineering Copilot&lt;/a&gt; (el chatbot basado en Algolia Agent Studio y RAG que responde preguntas sobre el blog) caería en esta categoría: el usuario debe saber que habla con una máquina, no con una persona.&lt;/p&gt;

&lt;h4&gt;
  
  
  🟢 Riesgo Mínimo — LIBRE (sin obligaciones adicionales)
&lt;/h4&gt;

&lt;p&gt;La mayoría de los sistemas de IA comerciales caen aquí: filtros de spam, sistemas de recomendación, IA generativa para contenido de marketing. El &lt;a href="https://dev.to/es/posts/ia_agents_part1/"&gt;Proyecto Autopilot&lt;/a&gt; que genera automáticamente posts para redes sociales no tiene obligaciones específicas bajo el EU AI Act más allá de las buenas prácticas generales. Lo mismo aplica a herramientas como el &lt;a href="https://dev.to/es/posts/app_conversor_unidades/"&gt;conversor de unidades&lt;/a&gt; o la &lt;a href="https://dev.to/es/posts/app_flashcards/"&gt;app de flashcards&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Los 5 Mandamientos Técnicos del Alto Riesgo
&lt;/h3&gt;

&lt;p&gt;Si tu sistema cae en la categoría 🟠, necesitas implementar cinco bloques de requisitos técnicos. Lo notable es que, si ya sigues las prácticas de ingeniería que hemos documentado en este blog, estás más cerca del cumplimiento de lo que crees. Veamos:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Gestión de Riesgos — Artículo 9&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El reglamento exige establecer, implementar y mantener un &lt;strong&gt;sistema de gestión de riesgos que opere durante todo el ciclo de vida del sistema de IA&lt;/strong&gt; (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e3383-1-1" rel="noopener noreferrer"&gt;Art. 9, Reglamento (UE) 2024/1689&lt;/a&gt;). Esto incluye la identificación de riesgos conocidos y previsibles para la salud, la seguridad y los derechos fundamentales, la estimación de esos riesgos, y la adopción de medidas de mitigación.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Traducción para ingenieros&lt;/em&gt;: Es un pipeline de CI/CD aplicado al riesgo. Documenta, monitorea, itera. No es un documento estático que se escribe una vez y se archiva; es un proceso vivo. Exactamente la filosofía que &lt;a href="https://dev.to/es/posts/deming/"&gt;W. Edwards Deming&lt;/a&gt; sistematizó con el ciclo PDCA (Plan-Do-Check-Act). Si ya implementas PDCA en tus procesos de calidad, la gestión de riesgos del AI Act te será familiar. Si además conoces el &lt;em&gt;Concept Drift&lt;/em&gt; (la degradación progresiva de un modelo en producción que Deming habría llamado «proceso inestable»), ya tienes la mentalidad correcta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Gobernanza de Datos — Artículo 10&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Los datos de entrenamiento, validación y test deben cumplir criterios de alta calidad: ser &lt;strong&gt;representativos, relevantes, libres de errores en la medida de lo posible, y con prácticas de gobernanza apropiadas&lt;/strong&gt; para prevenir sesgos (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e3549-1-1" rel="noopener noreferrer"&gt;Art. 10, Reglamento (UE) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Traducción&lt;/em&gt;: La &lt;a href="https://dev.to/es/posts/sop_ingenieria-higiene-datos/"&gt;higiene de datos&lt;/a&gt; que predicamos en la serie S&amp;amp;OP ya no es una buena práctica opcional; &lt;strong&gt;es ley&lt;/strong&gt;. El pipeline de limpieza con Z-Score para detectar outliers, el marcado (no borrado) de anomalías, y la persistencia en Supabase con Row Level Security que construimos en esa serie cumplen directamente con el espíritu de este artículo. Lo que el reglamento añade es la exigencia de que todo esto esté documentado y sea auditable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Documentación Técnica — Artículo 11 y Anexo IV&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antes de comercializar o poner en servicio un sistema de alto riesgo, debes preparar un &lt;strong&gt;expediente técnico&lt;/strong&gt; que demuestre el cumplimiento del reglamento (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e3667-1-1" rel="noopener noreferrer"&gt;Art. 11, Reglamento (UE) 2024/1689&lt;/a&gt;). El Anexo IV detalla el contenido mínimo: descripción general del sistema, arquitectura detallada y componentes, información sobre los datos de entrenamiento, métricas de rendimiento (exactitud, robustez, ciberseguridad), y el proceso de desarrollo.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Traducción&lt;/em&gt;: Tu README y tu Confluence no bastan. El reglamento exige un documento vivo que cubra la arquitectura del sistema (como los diagramas Mermaid que usamos en la serie de &lt;a href="https://dev.to/es/posts/obs_parte3_arquitectura/"&gt;Obsolescencia&lt;/a&gt;), las métricas de rendimiento del modelo, las pruebas de robustez y las medidas de ciberseguridad. Piensa en ello como un documento de arquitectura de referencia (&lt;em&gt;Architecture Decision Record&lt;/em&gt;) con esteroides regulatorios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Registros y Logging — Artículo 12&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Los sistemas de alto riesgo deben diseñarse para &lt;strong&gt;generar logs automáticos&lt;/strong&gt; durante su funcionamiento, garantizando la trazabilidad de cada decisión y la capacidad de reconstruir eventos si surge un problema de cumplimiento (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e3702-1-1" rel="noopener noreferrer"&gt;Art. 12, Reglamento (UE) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Traducción&lt;/em&gt;: Si ya usas Supabase + FastAPI con la arquitectura del &lt;a href="https://dev.to/es/posts/obs_parte6_fastapi/"&gt;radar agéntico&lt;/a&gt;, esto debería sonar familiar. Cada evento de ingesta, cada decisión del agente CrewAI, cada respuesta del LLM queda registrado en la base de datos. Lo que el reglamento formaliza es lo que cualquier ingeniero de backend competente ya debería estar haciendo: logging estructurado, no como una idea tardía, sino como un requisito de diseño desde el día cero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Supervisión Humana — Artículo 14&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El sistema debe diseñarse con mecanismos de &lt;strong&gt;«human-in-the-loop»&lt;/strong&gt; o &lt;strong&gt;«human-on-the-loop»&lt;/strong&gt;, garantizando que un operador humano cualificado pueda supervisar, interpretar y, si es necesario, anular las decisiones de la IA (&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689#d1e3789-1-1" rel="noopener noreferrer"&gt;Art. 14, Reglamento (UE) 2024/1689&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Traducción&lt;/em&gt;: Este es el principio que implementamos en el &lt;a href="https://dev.to/es/posts/ia_agents_part5/"&gt;Autopilot Parte 5&lt;/a&gt; con los &lt;strong&gt;GitHub Environments de aprobación manual&lt;/strong&gt;. El pipeline genera contenido automáticamente con agentes de IA, pero ningún post se publica sin la revisión y aprobación explícita de un humano. No es un concepto nuevo para nosotros; ahora tiene fuerza de ley.&lt;/p&gt;

&lt;h3&gt;
  
  
  España y la AESIA: El Sheriff Local
&lt;/h3&gt;

&lt;p&gt;El EU AI Act es un &lt;strong&gt;Reglamento europeo&lt;/strong&gt; (no una Directiva), lo que significa que es directamente aplicable en España sin necesidad de transposición legislativa nacional. Sin embargo, España ha dado un paso adicional: en mayo de 2026, el Consejo de Ministros aprobó la &lt;strong&gt;Ley española de Inteligencia Artificial&lt;/strong&gt;, que complementa el reglamento europeo y define el rol de la &lt;strong&gt;AESIA (Agencia Española de Supervisión de Inteligencia Artificial)&lt;/strong&gt; como autoridad nacional competente.&lt;/p&gt;

&lt;p&gt;La AESIA es la entidad que investigará denuncias, realizará auditorías y, en su caso, impondrá las sanciones del AI Act en territorio español. Además, España ha puesto en marcha &lt;strong&gt;sandboxes regulatorios&lt;/strong&gt;: entornos controlados donde startups y empresas pueden testear sistemas de IA innovadores bajo la supervisión de la AESIA, sin riesgo sancionador durante el periodo de prueba. Es un mecanismo inspirado en los que ya utilizan la CNMV y el Banco de España para fintech.&lt;/p&gt;

&lt;p&gt;Las startups españolas que hemos analizado en este blog no son ajenas a esta regulación. &lt;a href="https://dev.to/es/posts/clarity_ai/"&gt;Clarity AI&lt;/a&gt; opera en el scoring financiero ESG, un área que el Anexo III clasifica como alto riesgo. &lt;a href="https://dev.to/es/posts/nextail/"&gt;Nextail&lt;/a&gt; toma decisiones de inventario con IA prescriptiva en la cadena de suministro, y ya tuvo que adaptarse al &lt;a href="https://dev.to/es/posts/nextail/"&gt;ESPR 2026&lt;/a&gt;. &lt;a href="https://dev.to/es/posts/devo/"&gt;Devo&lt;/a&gt; protege infraestructura crítica militar, la categoría más sensible del reglamento. Todas ellas deberán demostrar cumplimiento.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compliance-as-Code: El Checklist del Ingeniero
&lt;/h3&gt;

&lt;p&gt;Si algo hemos aprendido construyendo pipelines de datos en este blog, es que la documentación que no está automatizada no se mantiene. Aquí va un checklist accionable, diseñado para que un equipo técnico pueda ejecutarlo sprint a sprint:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fase 1 — Inventario y Clasificación&lt;/strong&gt; &lt;em&gt;(Sprint 1)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inventariar todos los sistemas de IA de tu organización (incluidos los que no llamas «IA» pero usan ML internamente)&lt;/li&gt;
&lt;li&gt;Clasificar cada sistema en la pirámide de riesgo: Prohibido / Alto / Limitado / Mínimo&lt;/li&gt;
&lt;li&gt;Para cada sistema clasificado como Alto Riesgo, asignar un responsable técnico de cumplimiento&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fase 2 — Implementación Técnica&lt;/strong&gt; &lt;em&gt;(Sprints 2-4)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementar logging automático de decisiones del modelo (Art. 12): timestamps, inputs, outputs, scores de confianza&lt;/li&gt;
&lt;li&gt;Crear documentación técnica viva (Art. 11 + Anexo IV): arquitectura, datos, métricas, proceso&lt;/li&gt;
&lt;li&gt;Diseñar mecanismo de supervisión humana (Art. 14): aprobación manual, botón de «kill switch», dashboards de monitoreo&lt;/li&gt;
&lt;li&gt;Auditar datasets de entrenamiento (Art. 10): sesgo, representatividad, trazabilidad, versionado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fase 3 — Gestión Continua&lt;/strong&gt; &lt;em&gt;(Ongoing)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Establecer pipeline de gestión de riesgos (Art. 9): revisión periódica, monitoreo de Concept Drift, plan de mitigación&lt;/li&gt;
&lt;li&gt;Para sistemas de Riesgo Limitado: verificar que el usuario sabe que interactúa con IA&lt;/li&gt;
&lt;li&gt;Configurar alertas de coste y uso (conectar con la &lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;Economía Oculta de la IA&lt;/a&gt;: el compliance es un coste oculto adicional)&lt;/li&gt;
&lt;li&gt;Registrar el sistema en la base de datos pública de la UE (cuando aplique para alto riesgo)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  El Reglamento No Es el Enemigo; la Ignorancia Sí
&lt;/h3&gt;

&lt;p&gt;Existe una tentación comprensible de ver el EU AI Act como un freno burocrático a la innovación europea. Y en parte, la crítica tiene fundamento: la definición de «alto riesgo» en el Anexo III es extremadamente amplia, la carga documental del Anexo IV puede resultar desproporcionada para una startup de cinco personas, y la incertidumbre sobre el &lt;em&gt;Digital Omnibus&lt;/em&gt; genera parálisis en los equipos legales.&lt;/p&gt;

&lt;p&gt;Pero si retiras la capa de jerga legal y miras los requisitos técnicos desnudos, lo que el reglamento realmente pide es: &lt;strong&gt;documenta tu sistema, controla tus datos, registra las decisiones de tu IA, gestiona los riesgos de forma continua, y mantén a un humano en el bucle de control&lt;/strong&gt;. Es decir, exactamente lo que un buen ingeniero ya debería estar haciendo.&lt;/p&gt;

&lt;p&gt;Si has seguido las prácticas que documentamos en este blog —&lt;a href="https://dev.to/es/posts/sop_ingenieria-higiene-datos/"&gt;higiene de datos con Z-Score&lt;/a&gt;, &lt;a href="https://dev.to/es/posts/obs_parte6_fastapi/"&gt;logging automático con FastAPI y Supabase&lt;/a&gt;, &lt;a href="https://dev.to/es/posts/ia_agents_part5/"&gt;human-in-the-loop con GitHub Environments&lt;/a&gt;, &lt;a href="https://dev.to/es/posts/deming/"&gt;gestión de riesgos con el ciclo PDCA de Deming&lt;/a&gt;—, &lt;strong&gt;ya estás al 80% del camino hacia el cumplimiento&lt;/strong&gt;. El 20% restante es formalización y documentación.&lt;/p&gt;

&lt;p&gt;Como decía Deming: &lt;em&gt;"No basta con hacer lo mejor que puedas; primero debes saber qué hacer"&lt;/em&gt;. Ahora la regulación te dice qué hacer. El cómo hacerlo, ya lo sabes. O al menos, ya tienes un blog donde encontrarlo.&lt;/p&gt;




&lt;h4&gt;
  
  
  Fuentes de Interés:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32024R1689" rel="noopener noreferrer"&gt;&lt;strong&gt;Reglamento (UE) 2024/1689&lt;/strong&gt;: Texto completo del EU AI Act en EUR-Lex (ES)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai" rel="noopener noreferrer"&gt;&lt;strong&gt;Comisión Europea&lt;/strong&gt;: Página oficial del EU AI Act&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://artificialintelligenceact.eu/" rel="noopener noreferrer"&gt;&lt;strong&gt;EU AI Act Explorer&lt;/strong&gt;: Guía navegable por artículos del reglamento&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://portal.mineco.gob.es/es-es/digitalizacion/Paginas/ia.aspx" rel="noopener noreferrer"&gt;&lt;strong&gt;digital.gob.es&lt;/strong&gt;: Información sobre la AESIA y la regulación de IA en España&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/economia_oculta_ia/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: La Economía Oculta de la IA — Costes Reales en Producción&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/deming/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: W. Edwards Deming — El Padre de la Calidad Total que Predijo el Futuro de la IA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/sop_ingenieria-higiene-datos/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: S&amp;amp;OP Higiene de Datos — Por qué tu Excel te miente&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/es/posts/ia_agents_part5/"&gt;&lt;strong&gt;Datalaria&lt;/strong&gt;: Autopilot Part 5 — De Localhost a la Nube con GitHub Actions y CI/CD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
