<?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: Louis Dupont</title>
    <description>The latest articles on DEV Community by Louis Dupont (@louis-dupont).</description>
    <link>https://dev.to/louis-dupont</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2486626%2F80afe7fa-ad69-44cb-94a0-d0c5b372d0a1.jpeg</url>
      <title>DEV Community: Louis Dupont</title>
      <link>https://dev.to/louis-dupont</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/louis-dupont"/>
    <language>en</language>
    <item>
      <title>How to move beyond Vibe Checking</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Thu, 10 Apr 2025 14:29:16 +0000</pubDate>
      <link>https://dev.to/louis-dupont/how-to-move-beyond-vibe-checking-57hn</link>
      <guid>https://dev.to/louis-dupont/how-to-move-beyond-vibe-checking-57hn</guid>
      <description>&lt;p&gt;&lt;em&gt;When developing AI, Vibe Checking is a must. Until a certain point.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you start an AI project, everything feels like progress. You tweak a prompt, add context, examples, or even plug in a retrieval system. It looks better. So you keep going.&lt;/p&gt;

&lt;p&gt;But eventually, it stops being clear what “better” even means.&lt;/p&gt;

&lt;p&gt;You didn't break anything. But you're not moving forward either. The outputs are different, but not obviously more useful. You tweak again. And again. Some changes help. Some don't. Some feel promising until a week later when a user hits a strange edge case you thought was gone.&lt;/p&gt;

&lt;p&gt;At some point, you start to wonder:&lt;br&gt;&lt;br&gt;
Are we still improving this? Or are we just getting used to how it behaves?&lt;/p&gt;

&lt;p&gt;That's &lt;strong&gt;vibe-checking&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
You're not iterating. You're running changes through your gut and hoping they stick.&lt;/p&gt;

&lt;p&gt;And that's not a critique. That's the way to get started.&lt;/p&gt;

&lt;p&gt;But it's a phase you're supposed to grow out of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Vibe-Checking Stops Working
&lt;/h2&gt;

&lt;p&gt;In early prototypes, vibes are enough. You're testing if the core idea even makes sense. You're looking for signal, not stability. So you move fast. You don't overthink. You don't measure. Good.&lt;/p&gt;

&lt;p&gt;But once you've seen the potential (once you're no longer validating the idea, but trying to improve it) &lt;strong&gt;you need more than just a feeling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The problem isn't that you trust your gut.&lt;/p&gt;

&lt;p&gt;It's that your gut doesn't scale.&lt;/p&gt;

&lt;p&gt;You change a prompt. The answers look cleaner. Then someone else on your team flags a regression you didn't notice. The improvements were real, but only on the five examples you had in mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Shift You Actually Need
&lt;/h2&gt;

&lt;p&gt;This is where most teams start thinking about metrics.&lt;/p&gt;

&lt;p&gt;But good metrics don't come out of nowhere.&lt;/p&gt;

&lt;p&gt;They come from understanding what matters.&lt;/p&gt;

&lt;p&gt;That's the real shift: &lt;strong&gt;moving from vibes to clarity.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Not by jumping into evals, but by seriously observing what's going wrong.&lt;/p&gt;

&lt;p&gt;That means sitting with the outputs. Looking at dozens of real examples. Tagging what failed and why. Not just “bad answer.” Not just “hallucination.” Specific, meaningful categories: wrong reference pulled, misunderstood intent, incomplete summary, broken format.&lt;/p&gt;

&lt;p&gt;You don't need 50 dashboards. You don't even need to automate anything.&lt;/p&gt;

&lt;p&gt;You need to name the failures you're seeing again and again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clarity is a Practice
&lt;/h2&gt;

&lt;p&gt;Here's the trick no one tells you:&lt;br&gt;&lt;br&gt;
You can't scale what you haven't named. &lt;/p&gt;

&lt;p&gt;Vibes are raw data. Clarity is the result of processing them.&lt;/p&gt;

&lt;p&gt;If you do it right, i.e. if you go through 50, 100, 200 real examples and tag the failure modes, you'll start to see a pattern. Some failures happen more than you thought. Some are rare, but critical. Some only show up on specific query types.&lt;/p&gt;

&lt;p&gt;Suddenly, your fixes aren't abstract anymore. They're targeted. And &lt;strong&gt;you can evaluate their impact&lt;/strong&gt; by measure the failure modes frequency.&lt;/p&gt;

&lt;p&gt;You're not guessing anymore. You're engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stop Tweaking. Start Observing.
&lt;/h2&gt;

&lt;p&gt;You don't need to jump into full-on evals. Not yet.&lt;/p&gt;

&lt;p&gt;But you do need to stop assuming that "looks better" is the same as “is better.”&lt;/p&gt;

&lt;p&gt;If you want to improve your system systematically, it starts by asking one simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What's actually going wrong? And how often?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Until you have that answer, everything else is just educated guessing.&lt;/p&gt;

&lt;p&gt;📌 Want to go deeper?&lt;br&gt;
👉 I'm sharing my &lt;a href="https://louis-dupont.github.io/Blog/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=tech-ai&amp;amp;utm_content=article_002" rel="noopener noreferrer"&gt;insights from building AI for years&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>machinelearning</category>
      <category>llm</category>
    </item>
    <item>
      <title>Why Most AI Teams Are Stuck 🤔</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Wed, 19 Mar 2025 16:29:36 +0000</pubDate>
      <link>https://dev.to/louis-dupont/why-most-ai-teams-are-stuck-l55</link>
      <guid>https://dev.to/louis-dupont/why-most-ai-teams-are-stuck-l55</guid>
      <description>&lt;p&gt;A few years ago, I worked on a Generative AI project, a customer-facing AI assistant. The company had &lt;strong&gt;great data&lt;/strong&gt; and was convinced AI could turn it into something valuable.&lt;/p&gt;

&lt;p&gt;We built a prototype fast. Users were excited.&lt;/p&gt;

&lt;p&gt;Iteration was quick. Each tweak made the AI feel better.&lt;/p&gt;

&lt;p&gt;Then we hit a wall.&lt;/p&gt;

&lt;p&gt;We kept changing things, but… &lt;strong&gt;was it actually getting better? Or just different?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We didn't know.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;When "Iterating" Is Just Making Random Changes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At first, improving the AI felt obvious. We spotted issues, fixed them, and saw real progress. But suddenly, &lt;strong&gt;everything slowed down.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some changes made things better, but we weren't sure why.&lt;/li&gt;
&lt;li&gt;Other changes made things worse, but we couldn't explain how.&lt;/li&gt;
&lt;li&gt;Sometimes, things just felt… different, not actually better.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It took me way too long to realize: &lt;strong&gt;we weren't iterating. We were guessing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We were tweaking prompts, adjusting retrieval parameters, fine-tuning the model… but none of it was &lt;strong&gt;measured.&lt;/strong&gt; We were just &lt;strong&gt;testing on a few cherry-picked examples&lt;/strong&gt; and convincing ourselves that it felt better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And that's exactly how most AI teams get stuck.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Better on a Few Examples Isn't Better
&lt;/h2&gt;

&lt;p&gt;When you're close to a project, it's easy to &lt;strong&gt;think you can tell when something improves.&lt;/strong&gt; You run a few tests. The output looks better. So you assume progress.&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did it actually improve across the board?&lt;/li&gt;
&lt;li&gt;Did it break something else in the process?&lt;/li&gt;
&lt;li&gt;Are you fixing what users actually care about or just what you noticed?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most teams think they're iterating. They're just moving in random directions 🐔&lt;/p&gt;

&lt;h2&gt;
  
  
  Iterate Without Measurement... and Fail!
&lt;/h2&gt;

&lt;p&gt;And that's the real problem.&lt;/p&gt;

&lt;p&gt;Most teams, when they hit this wall, do what we did: &lt;strong&gt;try more things.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More prompt tweaks.&lt;/li&gt;
&lt;li&gt;More model adjustments.&lt;/li&gt;
&lt;li&gt;More retrieval fine-tuning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But real iteration isn't about making changes. It's about knowing, at every step, whether those changes actually work.&lt;/p&gt;

&lt;p&gt;Without that, you're just &lt;strong&gt;optimizing in the dark.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So What's the Fix?
&lt;/h2&gt;

&lt;p&gt;The teams that move past this don't just &lt;strong&gt;build better models&lt;/strong&gt;, they build &lt;strong&gt;better ways to measure what “better” means.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of relying on gut feeling, they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define clear success criteria. What actually makes an answer useful?&lt;/li&gt;
&lt;li&gt;Measure changes systematically. Not just on a few cherry-picked examples.&lt;/li&gt;
&lt;li&gt;Make sure improvements don't break what already works.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Bottom Line&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Most AI teams don't struggle to build AI. They struggle to improve it.&lt;/p&gt;

&lt;p&gt;I learned this the hard way. But once I started treating iteration as something that needs &lt;strong&gt;clear feedback loops, not gut feeling&lt;/strong&gt;, everything changed.&lt;/p&gt;

&lt;p&gt;In a following article, I'll break down &lt;strong&gt;how to actually measure AI improvement without getting trapped by misleading metrics.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Follow to get notified when it's out.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📌 In the meantime, if you want to &lt;strong&gt;go deeper&lt;/strong&gt; on AI iteration and continuous improvement, check out my &lt;strong&gt;&lt;a href="https://louis-dupont.github.io/Blog/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=tech-ai&amp;amp;utm_content=article_001" rel="noopener noreferrer"&gt;Blog&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>rag</category>
      <category>llm</category>
    </item>
    <item>
      <title>Evaluate your LLM! Ok, but what's next? 🤷‍♂️</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Sun, 16 Feb 2025 13:23:00 +0000</pubDate>
      <link>https://dev.to/louis-dupont/evaluate-your-llm-ok-but-whats-next-3mk3</link>
      <guid>https://dev.to/louis-dupont/evaluate-your-llm-ok-but-whats-next-3mk3</guid>
      <description>&lt;p&gt;&lt;strong&gt;Everyone say you need to Evaluate your LLM. You just did it. Now what? 🤷‍♂️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You got a score. Great. Now, here’s the trap:  &lt;/p&gt;

&lt;p&gt;You either:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trust it.&lt;/strong&gt; (&lt;em&gt;"Nice, let's ship!"&lt;/em&gt;)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chase a better one.&lt;/strong&gt; (&lt;em&gt;"Tweak some stuff and re-run!"&lt;/em&gt;)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are &lt;strong&gt;horrible ideas.&lt;/strong&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 1: Stop staring at numbers.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Numbers feel scientific, but &lt;strong&gt;they lie all the time.&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Before doing anything, look at actual examples. &lt;strong&gt;What’s failing?&lt;/strong&gt;   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bad output? &lt;strong&gt;Fix the model.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Good output but bad score? &lt;strong&gt;Fix the eval.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Both wrong? &lt;strong&gt;You’ve got bigger problems.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 2: Solve the right problem.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your &lt;strong&gt;model sucks&lt;/strong&gt;, tweak:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompts
&lt;/li&gt;
&lt;li&gt;Data retrieval
&lt;/li&gt;
&lt;li&gt;Edge cases
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your &lt;strong&gt;eval sucks&lt;/strong&gt;, rethink:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your scoring function
&lt;/li&gt;
&lt;li&gt;What “good” even means
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 3: Iterate like a maniac.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Change something → Run eval → Learn → Repeat.  &lt;/p&gt;

&lt;p&gt;Basically, do &lt;a href="https://dev.to/louis-dupont/error-analysis-stop-guessing-start-fixing-ai-models-338n"&gt;Error Analysis&lt;/a&gt; on your Evals (instead of on your LLM)!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chasing numbers isn’t progress.&lt;/strong&gt; Chasing the right insights is.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>DO NOT use these LLM Metrics ⛔ And what to do instead!</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Sat, 15 Feb 2025 16:08:54 +0000</pubDate>
      <link>https://dev.to/louis-dupont/do-not-use-these-llm-metrics-and-what-to-do-instead-4b95</link>
      <guid>https://dev.to/louis-dupont/do-not-use-these-llm-metrics-and-what-to-do-instead-4b95</guid>
      <description>&lt;p&gt;In two words: &lt;strong&gt;Generalist LLM metrics are more of a danger than an opportunity.&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NEVER&lt;/strong&gt; start with them.
&lt;/li&gt;
&lt;li&gt;Use them only as a &lt;strong&gt;last resort&lt;/strong&gt;—and even then, with strict guidelines!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  So what are these vague, generic metrics?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Helpfulness
&lt;/li&gt;
&lt;li&gt;Conciseness
&lt;/li&gt;
&lt;li&gt;Tone
&lt;/li&gt;
&lt;li&gt;Personalisation
&lt;/li&gt;
&lt;li&gt;… and more!
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But what’s so wrong with them?  &lt;/p&gt;

&lt;h2&gt;
  
  
  These Metrics Lack Real Meaning
&lt;/h2&gt;

&lt;p&gt;The biggest problem? They’re designed to evaluate an &lt;strong&gt;LLM in general&lt;/strong&gt;, not a &lt;strong&gt;specific use case&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;By definition, they apply broadly—but do they truly matter? More often than not, they have &lt;strong&gt;weak correlations with user satisfaction&lt;/strong&gt; and even &lt;strong&gt;weaker ties to actual ROI&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;And what do they really measure?  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conciseness?&lt;/strong&gt; What does "concise" even mean? It depends on your use case - and &lt;strong&gt;your&lt;/strong&gt; definition.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Helpfulness?&lt;/strong&gt; How do you objectively assess that?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At best, these metrics provide vague direction. At worst, they &lt;strong&gt;create the illusion that we’re measuring something meaningful&lt;/strong&gt; -when we’re not.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the Problem, Not the Solution
&lt;/h2&gt;

&lt;p&gt;In the startup world, everyone preaches this - but few apply it when developing AI.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every metric should start with a strong "why."&lt;/strong&gt; The best way to get this right?&lt;br&gt;
👉 &lt;a href="https://dev.to/louis-dupont/error-analysis-stop-guessing-start-fixing-ai-models-338n"&gt;&lt;strong&gt;Do error analysis on your data.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let real-world failures guide you to the right metrics - &lt;strong&gt;not the other way around.&lt;/strong&gt;  &lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>openai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Error Analysis 🔧 Stop Guessing, Start Fixing AI Models</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Fri, 14 Feb 2025 11:10:50 +0000</pubDate>
      <link>https://dev.to/louis-dupont/error-analysis-stop-guessing-start-fixing-ai-models-338n</link>
      <guid>https://dev.to/louis-dupont/error-analysis-stop-guessing-start-fixing-ai-models-338n</guid>
      <description>&lt;p&gt;Error analysis is about digging deep into &lt;em&gt;why&lt;/em&gt; something isn’t working - to learn from it. It might sound obvious, but it's shockingly underused, especially where it matters most: AI development.&lt;/p&gt;

&lt;p&gt;Let's explore what it is through an example&lt;/p&gt;

&lt;h2&gt;
  
  
  Cats or Dogs ?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I'm skipping many details that may hurt Data Scientists for the sake of simplicity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Say you have 200 images to classify as either cats or dogs. You build an AI and get &lt;strong&gt;78% accuracy&lt;/strong&gt; - not great. We need to do better. But how?&lt;/p&gt;

&lt;p&gt;The typical response? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Let's try another model"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;"Let's tweak the (hyper)parameters and hope for the best."&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, this means blindly exploring different solutions to see what sticks. Then, we &lt;em&gt;hope&lt;/em&gt; to learn something and slowly converge on a better solution.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But what if you could already learn what you want with this very first run?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's do error analysis!
&lt;/h3&gt;

&lt;p&gt;You dig into your data and realize:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Some puppies were classified as cats.&lt;/li&gt;
&lt;li&gt;Some images are completely dark - even you can't tell if it's a cat or a dog!&lt;/li&gt;
&lt;li&gt;Finally, some were actually mislabeled!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After removing these irrelevant samples (&lt;em&gt;points 2 &amp;amp; 3&lt;/em&gt;), your model actually achieves &lt;strong&gt;97% accuracy&lt;/strong&gt;! The remaining 3% error comes from puppies being misclassified as cats.&lt;/p&gt;

&lt;p&gt;The problem was not your model, but the data it was given.&lt;/p&gt;

&lt;p&gt;Well, &lt;em&gt;almost.&lt;/em&gt; There's still the issue of puppies being misclassified - this is a &lt;strong&gt;failure mode&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does this actually mean?
&lt;/h3&gt;

&lt;p&gt;In this case, we have 3 clear action items:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correct the mislabeled samples.&lt;/li&gt;
&lt;li&gt;Find a way to make to model better on puppy images (there are many!).&lt;/li&gt;
&lt;li&gt;Ensure proper lighting for production cameras 🤷‍♂️&lt;/li&gt;
&lt;li&gt;... and plenty more!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, next iteration, do the same, you may find out new problems!&lt;/p&gt;

&lt;p&gt;Basically, &lt;strong&gt;error analysis is what moves you past blindly tweaking solutions in hopes of improvement&lt;/strong&gt;. Instead, it shifts the focus to understanding the root causes of failure and addressing them directly. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>machinelearning</category>
      <category>llm</category>
    </item>
    <item>
      <title>LLM Evals - The Trap No One’s Telling You 🐔</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Thu, 02 Jan 2025 20:34:33 +0000</pubDate>
      <link>https://dev.to/louis-dupont/llm-evals-the-trap-no-ones-telling-you-1p2e</link>
      <guid>https://dev.to/louis-dupont/llm-evals-the-trap-no-ones-telling-you-1p2e</guid>
      <description>&lt;p&gt;We hear it more and more: ‘Use LLM Evaluations to guide your AI project.’ And for a good reason—metrics are essential. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yet, there’s a trap nobody talks about...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s say you have a chatbot and want to introduce metrics. You find tools that compute metrics like 'Helpfulness', 'Conciseness', and 'Completeness'. &lt;br&gt;
Sounds great—they promise to optimise your user’s experience. Right?&lt;/p&gt;

&lt;p&gt;Truth is, their correlation to real business value is often unclear. Is this really what your user cares about ? Will this increase adoption ?&lt;/p&gt;

&lt;p&gt;Many teams end up measuring the wrong thing, thinking they’re being data-driven, while forgetting about what really matters.&lt;/p&gt;

&lt;p&gt;Metrics aren’t inherently good. They’re only as useful as the questions they help you answer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you don’t ask ‘What does success look like?’ or ‘What is the goal I want to measure?’ your metrics aren’t leading you—they’re misleading you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, the next time you set metrics, ask yourself: Are you measuring what impacts your business goals—or just what’s easy to quantify?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The difference might explain why your AI project feels stuck.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Because chasing the wrong metrics isn’t progress. It’s running in circles—like a headless chicken.&lt;/em&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.amazonaws.com%2Fuploads%2Farticles%2Fnu3m9w2k4jie443v2085.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.amazonaws.com%2Fuploads%2Farticles%2Fnu3m9w2k4jie443v2085.jpg" alt="Evaluation Trap" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rag</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
    </item>
    <item>
      <title>📉 Why Improving Your AI Model Is Killing Your Project’s Success</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Wed, 01 Jan 2025 15:41:57 +0000</pubDate>
      <link>https://dev.to/louis-dupont/why-improving-your-ai-model-is-killing-your-projects-success-4kkn</link>
      <guid>https://dev.to/louis-dupont/why-improving-your-ai-model-is-killing-your-projects-success-4kkn</guid>
      <description>&lt;p&gt;&lt;em&gt;What if improving your AI model is the very thing holding your project back?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You’ve spent weeks fine-tuning it—polishing every detail, boosting accuracy, solving edge cases. Yet, adoption hasn’t moved. &lt;em&gt;Frustrating?&lt;/em&gt; You’re not alone—&lt;strong&gt;this is a trap many AI teams fall into.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The problem isn’t that AI isn’t ready. It’s that the way we approach AI makes us feel productive while ignoring the real challenge: solving critical user needs.&lt;/p&gt;

&lt;p&gt;Let’s break down why this happens—and how you can escape the trap.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Metrics Make You Feel Safe—But Keep You Stuck
&lt;/h3&gt;

&lt;p&gt;AI metrics like accuracy, precision, and recall feel reassuring. They’re tangible. They give you a clear sense of progress.&lt;/p&gt;

&lt;p&gt;But here’s the uncomfortable truth: &lt;strong&gt;metrics create the illusion of progress.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Teams rely on metrics because they’re easier to measure than user success. A 5% boost in accuracy feels like a win—even if it doesn’t move the needle on user adoption.&lt;/p&gt;

&lt;p&gt;One team I worked with spent months improving a model to handle nuanced queries. Accuracy jumped, but user engagement didn’t. Why? Users didn’t care about nuance—they wanted instant answers. When we pivoted to a simpler Q&amp;amp;A database, adoption skyrocketed. The problem wasn’t the model. It was what we thought the model should solve.&lt;/p&gt;

&lt;p&gt;Metrics are a comfort zone. &lt;strong&gt;They distract from the harder, messier question&lt;/strong&gt;: &lt;em&gt;What do my users actually need?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why “Listening to Feedback” Is a Dangerous Half-Truth
&lt;/h3&gt;

&lt;p&gt;Most teams think they’re user-focused because they collect feedback. They track adoption metrics. They tweak features based on what users ask for. But here’s the trap: &lt;strong&gt;listening to users isn’t the same as solving their problems.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Feedback reflects what users think they want&lt;/strong&gt;—not necessarily what they’ll use.
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adoption metrics only show you the symptoms, not the causes.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One team built a highly sophisticated recommendation system based on user requests. It worked beautifully—on paper. But users didn’t engage because it added complexity to a process they already found overwhelming.&lt;/p&gt;

&lt;p&gt;The takeaway? User feedback is a starting point, not a roadmap. Solving user problems requires going beyond what they say to understand what they actually do.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Complexity Is Killing Your Adoption Rates
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;More features, smarter models, and cutting-edge techniques don’t equal better solutions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The more you refine your AI model, the more complex it becomes—making it harder for users to trust and adopt. This creates a vicious cycle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Users struggle to engage.&lt;/li&gt;
&lt;li&gt;Teams assume the tool isn’t good enough.&lt;/li&gt;
&lt;li&gt;They add more features or refine the model further.&lt;/li&gt;
&lt;li&gt;Complexity increases, adoption stalls, and the cycle repeats.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s the cost of complexity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Harder to maintain and iterate on.&lt;/li&gt;
&lt;li&gt;Higher cognitive load for users.&lt;/li&gt;
&lt;li&gt;Increased risk of failure in real-world scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To break the cycle, you need to &lt;strong&gt;focus on clarity and simplicity.&lt;/strong&gt; Not because they’re easier, but because they’re harder to achieve—and far more valuable.&lt;/p&gt;




&lt;h3&gt;
  
  
  How to Stop Building Smarter Models and Start Solving Real Problems
&lt;/h3&gt;

&lt;p&gt;If your project feels stuck, it’s time to redefine what progress means. Progress isn’t about improving the tool—it’s about solving the user’s problem.&lt;/p&gt;

&lt;p&gt;Here’s how:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Write Down What You Think Progress Looks Like
&lt;/h4&gt;

&lt;p&gt;Before making your next improvement, write down the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What’s the specific user problem I’m solving?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Does this change directly impact user outcomes?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;If I stopped improving the model today, could I still deliver value?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you’re answering “no” to any of these, step back. Refining the tool isn’t the solution.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Replace Metrics With User Outcomes
&lt;/h4&gt;

&lt;p&gt;Metrics like accuracy and precision are helpful—but they’re supporting indicators, not success metrics. True progress comes from measurable user outcomes.&lt;/p&gt;

&lt;p&gt;Focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adoption: Are users consistently engaging with the tool?
&lt;/li&gt;
&lt;li&gt;Efficiency: Are tasks faster or easier for users?
&lt;/li&gt;
&lt;li&gt;Satisfaction: Are users returning or recommending the tool?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If your changes don’t improve these outcomes, they aren’t real progress.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Simplify Like Your Users’ Success Depends On It
&lt;/h4&gt;

&lt;p&gt;Simplification isn’t a shortcut—it’s a strategy for delivering faster, more meaningful results.  &lt;/p&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What’s the simplest way to solve my users’ most critical problem?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What features or complexities can I remove to increase clarity and trust?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simplifying doesn’t mean doing less—it means doing what matters most.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Shift That Will Make or Break Your AI Project
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AI projects don’t fail because teams lack ambition or expertise&lt;/strong&gt;. They fail because they mistake technical progress for success. Tutorials, metrics, and frameworks create momentum—but without a clear connection to user outcomes, they lead you in circles.&lt;/p&gt;

&lt;p&gt;By focusing on user problems over technical improvements, you’ll stop building for the sake of the tool and start building for the people who use it.&lt;/p&gt;

&lt;h3&gt;
  
  
  A New Definition of Progress
&lt;/h3&gt;

&lt;p&gt;Next time you’re tempted to tweak your model, ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Am I solving the right problem—or just improving the tool?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;What’s the simplest way to deliver value today?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;If I removed complexity, would it improve adoption?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The best AI solutions aren’t the most advanced. They’re the ones users can’t imagine working without. Build for that.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Does this resonate with your AI journey? I’d love to hear your thoughts or challenges in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>💬 How Intent-Driven Interfaces Will Transform the Way Users Interact with Software</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Mon, 30 Dec 2024 22:04:58 +0000</pubDate>
      <link>https://dev.to/louis-dupont/how-intent-driven-interfaces-will-transform-the-way-users-interact-with-software-3fdo</link>
      <guid>https://dev.to/louis-dupont/how-intent-driven-interfaces-will-transform-the-way-users-interact-with-software-3fdo</guid>
      <description>&lt;p&gt;Most software interfaces are frustrating. Users are forced to navigate complex menus, follow rigid workflows, and adapt to systems that weren’t built with their needs in mind.&lt;/p&gt;

&lt;p&gt;But what if software could adapt to &lt;strong&gt;you&lt;/strong&gt;? What if it could understand your intent and deliver outcomes without friction?&lt;/p&gt;

&lt;p&gt;This is the promise of &lt;strong&gt;intent-driven interfaces&lt;/strong&gt;—a transformative shift that empowers software to act on user intent seamlessly. By leveraging techniques like tool calling, these interfaces eliminate unnecessary complexity and focus on what truly matters: delivering results.&lt;/p&gt;

&lt;p&gt;In this article, I’ll explore:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Why traditional software design creates friction.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How intent-driven interfaces solve these challenges.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How you can start building them today.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Problem: Traditional Software Forces Users to Adapt
&lt;/h2&gt;

&lt;p&gt;Most software systems prioritize &lt;strong&gt;processes over people.&lt;/strong&gt; They assume users will adapt to the system’s structure—learning workflows, navigating menus, and performing repetitive actions. While this approach has worked historically, it creates unnecessary friction in modern workflows.&lt;/p&gt;

&lt;p&gt;Here’s what this looks like in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;E-commerce:&lt;/strong&gt; Customers struggle to find order details or update delivery addresses.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Field Services:&lt;/strong&gt; Technicians lose time inputting data into clunky systems.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logistics:&lt;/strong&gt; Workers manually search for shipment information, delaying operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These inefficiencies stem from a fundamental flaw: software is designed to operate like a machine, not like a human assistant. Users don’t want to “figure out” a system. They want results.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: Make Software Understand Intent
&lt;/h2&gt;

&lt;p&gt;Intent-driven interfaces change everything. Instead of requiring users to navigate and adapt, they let users express their intent in natural language. The system handles the rest.&lt;/p&gt;

&lt;p&gt;Here’s how this works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Users describe what they need.&lt;/strong&gt; No menus or forms—just a simple request.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The system interprets intent.&lt;/strong&gt; Using technologies like Large Language Models (LLMs), the system identifies the appropriate action.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It delivers the outcome.&lt;/strong&gt; The system executes the required function and provides the result in real time.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Imagine you’re a customer interacting with an e-commerce system. Instead of navigating menus, you type:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Where’s my latest order?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The system identifies your intent (check order status), calls the appropriate function (&lt;code&gt;check_order_status&lt;/code&gt;), and returns a clear response:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Your order is out for delivery and will arrive tomorrow.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No complexity. No friction. Just results.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Are Intent-Driven Interfaces?
&lt;/h2&gt;

&lt;p&gt;At their core, intent-driven interfaces rely on &lt;strong&gt;tool calling&lt;/strong&gt;—a technique that connects natural language processing with actionable software functions.&lt;/p&gt;

&lt;p&gt;Here’s how tool calling works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;User Input:&lt;/strong&gt; The user provides a request in natural language (e.g., “Update my delivery address to 123 Elm Street”).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intent Matching:&lt;/strong&gt; The system identifies the most relevant function to execute.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parameter Mapping:&lt;/strong&gt; The system generates structured input for the function (e.g., JSON):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
       &lt;/span&gt;&lt;span class="nl"&gt;"function"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"update_address"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
       &lt;/span&gt;&lt;span class="nl"&gt;"parameters"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
           &lt;/span&gt;&lt;span class="nl"&gt;"order_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
           &lt;/span&gt;&lt;span class="nl"&gt;"new_address"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123 Elm Street"&lt;/span&gt;&lt;span class="w"&gt;
       &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Function Execution:&lt;/strong&gt; The function runs, returning the result.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Response:&lt;/strong&gt; The system translates the result into a user-friendly response.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This seamless interaction transforms complex workflows into effortless exchanges.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Intent-Driven Interfaces Matter for Your Business
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Faster Task Completion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With intent-driven systems, users spend less time navigating and more time achieving. This efficiency reduces operational costs and improves satisfaction.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Simpler Onboarding&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Forget training manuals. Natural language interactions mean users can start using the system immediately, without a steep learning curve.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Better ROI on AI Investments&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Many AI projects fail because they focus on complexity instead of outcomes. Intent-driven interfaces prioritize measurable results, ensuring your AI delivers real value.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Enhanced Retention&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When systems adapt to users, rather than the other way around, they create positive experiences that keep customers and employees engaged.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building Intent-Driven Interfaces: A Practical Guide
&lt;/h2&gt;

&lt;p&gt;Ready to make the shift? Here’s how to get started:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Identify High-Impact Use Cases
&lt;/h3&gt;

&lt;p&gt;Ask: &lt;em&gt;What are the most frequent or frustrating tasks users need to perform?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
Examples:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checking order statuses.
&lt;/li&gt;
&lt;li&gt;Updating delivery information.
&lt;/li&gt;
&lt;li&gt;Logging job updates.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Build Modular APIs
&lt;/h3&gt;

&lt;p&gt;Each action needs a corresponding function. Design these with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clear input/output structures&lt;/strong&gt; (e.g., JSON).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security measures&lt;/strong&gt; to prevent unauthorized use.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity:&lt;/strong&gt; Focus on one action per function.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Integrate With an LLM
&lt;/h3&gt;

&lt;p&gt;Choose a Large Language Model that supports function calling. Connect it to your APIs using a controller that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maps user queries to the correct function.
&lt;/li&gt;
&lt;li&gt;Handles ambiguous requests gracefully.
&lt;/li&gt;
&lt;li&gt;Returns actionable results.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Test and Optimize
&lt;/h3&gt;

&lt;p&gt;Run extensive tests to ensure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functions are invoked correctly.
&lt;/li&gt;
&lt;li&gt;Outputs are accurate and user-friendly.
&lt;/li&gt;
&lt;li&gt;Edge cases (e.g., vague inputs) are handled smoothly.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Overcoming Common Challenges
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ambiguous User Requests&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Users don’t always phrase requests clearly.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Build fallback mechanisms to ask clarifying questions when intent is unclear.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;API Security&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Allowing systems to execute functions introduces risks.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Implement strict authentication and input validation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Complex Workflows&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Complex workflows can overwhelm the system.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Start small—focus on high-value, low-complexity tasks first.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Future of User Interfaces
&lt;/h2&gt;

&lt;p&gt;Intent-driven interfaces aren’t just about better user experiences—they’re about transforming how software delivers value. By focusing on outcomes and eliminating unnecessary friction, these systems create a future where interacting with software feels effortless.&lt;/p&gt;

&lt;p&gt;If your systems are frustrating users—or if your AI initiatives aren’t delivering ROI—it’s time to rethink your approach. Intent-driven interfaces might just be the solution you need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Whether you’re starting from scratch or looking to improve an existing AI solution, let’s connect!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>rag</category>
    </item>
    <item>
      <title>Turn Your Broken Chatbot 🚧 - Into Your Biggest Asset 📈</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Sat, 28 Dec 2024 11:49:07 +0000</pubDate>
      <link>https://dev.to/louis-dupont/turn-your-broken-chatbot-into-your-biggest-asset-6c6</link>
      <guid>https://dev.to/louis-dupont/turn-your-broken-chatbot-into-your-biggest-asset-6c6</guid>
      <description>&lt;p&gt;You launched your chatbot, and… well, it’s not going as planned. Users are confused, workflows feel disjointed, and your team’s enthusiasm is quickly waning. Sound familiar?&lt;/p&gt;

&lt;p&gt;Here’s the good news: your chatbot isn’t just failing—it’s revealing what matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every awkward interaction or frustrated user is a clue&lt;/strong&gt;. The gaps in your bot’s performance mirror the gaps in your understanding of user needs. And those gaps? They’re opportunities.&lt;/p&gt;

&lt;p&gt;In my &lt;a href="https://dev.to/louis-dupont/the-chatbot-trap-why-your-llm-project-is-stuck-after-the-wow-moment-39mg"&gt;recent post&lt;/a&gt;, I explained why so many AI projects fall short—teams jump straight into building chatbots without asking whether they’re the right solution for the problem at hand. Often, they’re not. But even a “failing” chatbot can become a powerful diagnostic tool for understanding user needs more deeply.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instead of rushing to fix your chatbot, pause and listen. Your bot might be the discovery tool you didn’t know you had.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;The Opportunity in Frustration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When your chatbot misses the mark, it’s tempting to see it as a failure. But every misstep is packed with lessons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Unclear Questions:&lt;/strong&gt; Where users struggle to articulate their needs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Misunderstood Intents:&lt;/strong&gt; When the bot interprets queries incorrectly.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unsupported Workflows:&lt;/strong&gt; When the bot misses critical scenarios.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key is reframing failure as feedback. These points of friction highlight what matters most to your users. Let’s explore how to extract actionable insights and make your bot a tool for growth.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;1. Friction Is Your Best Friend&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The more your chatbot struggles, the more it teaches you about your users. Friction isn’t a bug—it’s a signal. The trick is knowing how to prioritize what matters.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Prioritize Smartly&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Use this simple framework to categorize issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Severity:&lt;/strong&gt; Does this problem block users from achieving their goals?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frequency:&lt;/strong&gt; How often do users encounter this issue?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Value:&lt;/strong&gt; What’s the ROI of solving it?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Focus on high-severity, high-frequency problems first. These are the bottlenecks that, when removed, unlock the biggest wins.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Go Beyond Features: Design for Scenarios&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Users don’t care what your chatbot can do—they care what it helps them achieve. Shift your mindset from features to outcomes.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;The Scenario Shift&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Feature Thinking:&lt;/strong&gt; “The bot summarizes reports.”
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scenario Thinking:&lt;/strong&gt; “The bot compares two contracts and highlights key differences in seconds.”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anchor every bot capability in a real-world scenario. Start by asking: &lt;em&gt;What does success look like for the user?&lt;/em&gt; Then, design your bot to deliver that outcome seamlessly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Treat Data Like a Discovery Engine&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Your chatbot’s data isn’t just a performance report—it’s a map of user needs. Each query, complaint, or abandoned session points to something valuable.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;What to Look For&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recurring Queries:&lt;/strong&gt; What are users asking most frequently?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abandonment Points:&lt;/strong&gt; Where do users give up?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Gaps:&lt;/strong&gt; What tasks are users trying to complete that the bot doesn’t support?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, if users repeatedly ask the same follow-up question, it’s a sign they need clearer answers upfront. Patterns like this reveal where to focus your efforts.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Know When to Pivot&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Not every problem needs a chatbot solution. Sometimes, the smartest move is to shift gears entirely.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;When to Pivot&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Highly Specific Outputs:&lt;/strong&gt; If users repeatedly request precise, formatted results (like reports or comparisons), a dashboard might be a better fit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguous Queries:&lt;/strong&gt; If users struggle to phrase questions, structured workflows or forms could reduce friction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pivoting doesn’t mean failure—it means aligning the solution to the problem. Your goal isn’t to save the chatbot; it’s to deliver the best user outcome.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Reframe Frustration as Opportunity&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Your chatbot’s struggles aren’t an ending—they’re a beginning. Here’s your roadmap to turn challenges into breakthroughs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Focus on friction points to identify critical user needs.
&lt;/li&gt;
&lt;li&gt;Shift from feature-building to scenario design.
&lt;/li&gt;
&lt;li&gt;Treat user data as a lens into behavior and workflows.
&lt;/li&gt;
&lt;li&gt;Pivot when necessary to ensure the right solution for the right problem.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Your chatbot isn’t just a tool—it’s a feedback loop&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The insights it provides can guide you to solutions that truly resonate with users. Whether that means refining the bot or pivoting entirely, the real value lies in what you learn along the way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Ready to turn your chatbot’s struggles into strategic wins? Let’s talk.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rag</category>
      <category>llm</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>🤷‍♂️ ModernBERT Is Here - and It’s Not Just Another LLM Update</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Fri, 20 Dec 2024 13:20:09 +0000</pubDate>
      <link>https://dev.to/louis-dupont/modernbert-is-here-and-its-not-just-another-llm-update-3fo6</link>
      <guid>https://dev.to/louis-dupont/modernbert-is-here-and-its-not-just-another-llm-update-3fo6</guid>
      <description>&lt;p&gt;BERT is back - and this time, it’s &lt;strong&gt;faster, smarter, and built for the tasks that matter.&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;If you’re working on &lt;strong&gt;retrieval&lt;/strong&gt;, &lt;strong&gt;classification&lt;/strong&gt;, or &lt;strong&gt;code search&lt;/strong&gt;, encoder models like BERT have likely been your go-to. Generative LLMs may grab headlines, but &lt;strong&gt;when it comes to focused, production-ready AI tasks, BERT still shines&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Earlier this year, I ran an experiment comparing models on a real-world task—analyzing product reviews. The results were eye-opening:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-4o hit 91% accuracy with a cost of $1.40 per 1,000 reviews.
&lt;/li&gt;
&lt;li&gt;After fine-tuning, Phi-3 mini matched GPT’s accuracy but ran locally, with 2.7 seconds per review.
&lt;/li&gt;
&lt;li&gt;But the real surprise? &lt;strong&gt;6-year-old BERT&lt;/strong&gt; hit &lt;strong&gt;97% accuracy&lt;/strong&gt;, with processing speeds of just 0.03 seconds per review.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This showed me that while LLMs excel at text generation and versatility, &lt;strong&gt;BERT dominates when you need precision and speed.&lt;/strong&gt;  &lt;/p&gt;

&lt;h3&gt;
  
  
  Why ModernBERT Is a Big Deal
&lt;/h3&gt;

&lt;p&gt;ModernBERT takes everything that made the original BERT great and levels it up:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;3x faster inference speeds.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;8k token context length&lt;/strong&gt; (vs. 512)—perfect for full-document retrieval.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trained on code&lt;/strong&gt;, unlocking large-scale code search and smarter IDE tools.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Generative models won’t replace what encoder models like BERT do best. If you’re building systems that need structured outputs, retrieval pipelines, or highly targeted classification, this release is worth your attention.  &lt;/p&gt;

&lt;p&gt;And for the full details on ModernBERT: &lt;a href="https://huggingface.co/blog/modernbert" rel="noopener noreferrer"&gt;https://huggingface.co/blog/modernbert&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>rag</category>
      <category>genai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>🪤 The Chatbot Trap - Why Your LLM Project Is Stuck After the “Wow Moment"</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Thu, 19 Dec 2024 15:38:03 +0000</pubDate>
      <link>https://dev.to/louis-dupont/the-chatbot-trap-why-your-llm-project-is-stuck-after-the-wow-moment-39mg</link>
      <guid>https://dev.to/louis-dupont/the-chatbot-trap-why-your-llm-project-is-stuck-after-the-wow-moment-39mg</guid>
      <description>&lt;p&gt;&lt;em&gt;Your LLM prototype amazed everyone—until it didn’t. Now it’s stuck, and no one’s using it. Here’s why.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When most companies experiment with AI, &lt;strong&gt;the go-to application is a chatbot&lt;/strong&gt;. It’s intuitive, it looks impressive, and it feels like magic. But here’s the cold, hard truth: &lt;strong&gt;chatbots are why most LLM projects fail.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve seen it happen countless times. The team builds a chatbot to “harness AI,” and at first, it wows everyone. But then the cracks start to show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users are frustrated. The chatbot gives incomplete answers or none at all.&lt;/li&gt;
&lt;li&gt;Adoption stalls. People revert to their old workflows.&lt;/li&gt;
&lt;li&gt;The project drags on, with no measurable impact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually, the chatbot gets shelved. The technology gets blamed. The lesson learned? &lt;em&gt;“AI isn’t ready yet.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;The problem isn’t AI. The problem is that you’ve fallen into &lt;strong&gt;the chatbot trap.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s break down what’s going wrong—and how to finally get your LLM project unstuck.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Most LLM Projects Fail After the Prototype&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. You’re Building a Tool, Not Solving a Problem&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think about it: Why did your team decide to build a chatbot? Chances are, the conversation started with, &lt;em&gt;“We need to use AI,”&lt;/em&gt; instead of, &lt;em&gt;“What pain point are we solving?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s the truth: &lt;strong&gt;users don’t care about chatbots.&lt;/strong&gt; They care about results. They want outcomes that make their work easier, faster, or less frustrating.&lt;/p&gt;

&lt;p&gt;Take this example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A consulting team is buried under a mountain of documents. They want to retrieve information faster.&lt;/li&gt;
&lt;li&gt;Someone suggests, &lt;em&gt;“Let’s build a chatbot so they can ask questions and get answers!”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;A prototype is built. It kind of works, but it’s clunky. Users struggle to phrase questions correctly, and the answers aren’t specific enough.&lt;/li&gt;
&lt;li&gt;After months of iteration, the chatbot fizzles out. Users move on. The team is back to square one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What went wrong? No one stopped to ask, &lt;em&gt;“What outcome does the user actually want?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this case, the consultants didn’t want to chat—they wanted &lt;strong&gt;structured, actionable insights.&lt;/strong&gt; Imagine if the AI automatically generated a report with key information upfront:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No back-and-forth.&lt;/li&gt;
&lt;li&gt;No guessing how to phrase the question.&lt;/li&gt;
&lt;li&gt;Just the answers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suddenly, the AI is solving the real problem. And as a bonus, it’s much simpler to build and measure.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Open Systems Create Chaos&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Chatbots let users ask anything. Sounds great, right? Until you realize the chaos it creates.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What questions will users ask?&lt;/li&gt;
&lt;li&gt;How will they phrase them?&lt;/li&gt;
&lt;li&gt;What edge cases will they uncover?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This lack of constraints makes chatbots an &lt;strong&gt;open system&lt;/strong&gt;—and open systems are a nightmare to measure or improve. How do you evaluate success when the scope is infinite?&lt;/p&gt;

&lt;p&gt;You can’t.&lt;/p&gt;

&lt;p&gt;Compare that to a &lt;strong&gt;closed system&lt;/strong&gt;, like generating a predefined report or extracting specific data. In a closed system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You know exactly what the output should be.&lt;/li&gt;
&lt;li&gt;You can measure accuracy, recall, and completeness.&lt;/li&gt;
&lt;li&gt;And because you can measure it, you can improve it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the rub: Chatbots feel magical, but from an engineering perspective, they’re chaos.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Chatbots Set Users Up for Disappointment&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When you give someone a chatbot, you’re promising: &lt;em&gt;“Ask me anything, and I’ll give you the perfect answer.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But what happens when the chatbot responds with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;“I’m sorry, I don’t understand that.”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;“I can’t help with that.”&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users get frustrated. Trust is destroyed.&lt;/p&gt;

&lt;p&gt;Now imagine a &lt;strong&gt;simpler, clearer solution&lt;/strong&gt;—a button labeled &lt;em&gt;“Generate Report”&lt;/em&gt; or a dashboard that delivers exactly what the user needs. Expectations are set upfront, and the experience feels seamless.&lt;/p&gt;

&lt;p&gt;Here’s the rule: &lt;strong&gt;The simpler the solution, the clearer the expectations—and the better the user experience.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to Escape the Chatbot Trap&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your LLM project is stuck, it’s time to rethink your approach. The key? &lt;strong&gt;Shift your mindset from “build something impressive” to “deliver outcomes that matter.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s how:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Start with the Problem&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What pain point are we solving?&lt;/li&gt;
&lt;li&gt;What outcome does the user actually need?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your answer starts with, &lt;em&gt;“We’re building a chatbot,”&lt;/em&gt; stop. Chatbots are tools, not outcomes.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Constrain the Scope&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Avoid the temptation to build something that can “do it all.” Narrow your focus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What specific task will the AI handle?&lt;/li&gt;
&lt;li&gt;What won’t it handle?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Smaller scope = less complexity = faster success.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Build Closed, Measurable Systems&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Focus on systems with clear boundaries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically summarize documents.&lt;/li&gt;
&lt;li&gt;Generate predefined reports.&lt;/li&gt;
&lt;li&gt;Extract specific data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Closed systems are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easier to measure.&lt;/li&gt;
&lt;li&gt;Faster to improve.&lt;/li&gt;
&lt;li&gt;More likely to deliver value.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;When Is a Chatbot the Right Solution?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Let’s be clear: Chatbots aren’t useless. In &lt;strong&gt;narrow, well-defined use cases&lt;/strong&gt;, they can work brilliantly. But those use cases are the exception, not the rule.&lt;/p&gt;

&lt;p&gt;Before building a chatbot, ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What’s the scope?&lt;/strong&gt; Can we define clear boundaries?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What’s the expectation?&lt;/strong&gt; Will users understand its limitations?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What’s the outcome?&lt;/strong&gt; Are we solving a real, measurable problem?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In most cases, a &lt;strong&gt;simpler, structured solution&lt;/strong&gt; will deliver more value, faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Bottom Line: Users Want Outcomes, Not Tools&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your team is stuck in the chatbot trap, here’s the harsh truth: &lt;strong&gt;people don’t care about your chatbot.&lt;/strong&gt; They care about getting the information they need—quickly, easily, and with zero friction.&lt;/p&gt;

&lt;p&gt;So, instead of chasing flashy, complex tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deliver a report with exactly what they need.&lt;/li&gt;
&lt;li&gt;Build a dashboard that surfaces key insights in seconds.&lt;/li&gt;
&lt;li&gt;Focus on outcomes, not interfaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you do this, two things happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Users love it.&lt;/strong&gt; They trust the solution because it delivers value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can measure success.&lt;/strong&gt; And if you can measure it, you can improve it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AI doesn’t need to feel magical to be valuable. The best AI solutions often feel simple—like they “just work.”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If your LLM is stuck in the chatbot trap, let’s get it back on track. I’ve helped teams rethink their AI strategy and deliver real, measurable results. Drop me a message, and let’s talk.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>genai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>rag</category>
    </item>
    <item>
      <title>Why it's time to re-examine the quick vs. clean code debate</title>
      <dc:creator>Louis Dupont</dc:creator>
      <pubDate>Thu, 19 Dec 2024 15:11:18 +0000</pubDate>
      <link>https://dev.to/louis-dupont/the-quick-code-controversy-why-its-time-to-re-examine-the-quick-vs-clean-code-debate-4dmj</link>
      <guid>https://dev.to/louis-dupont/the-quick-code-controversy-why-its-time-to-re-examine-the-quick-vs-clean-code-debate-4dmj</guid>
      <description>&lt;p&gt;The quick code controversy: Why it's time to re-examine the quick vs. clean code debate&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding what strategy to follow based on the context.
&lt;/h2&gt;

&lt;p&gt;As developers, we often find ourselves faced with the dilemma of choosing between writing quick code or taking the time to write clean, maintainable code. This decision can be especially tricky when it comes to one-off scripts, prototypes, or internal tools that may not have a long lifespan. On the one hand, we want to get the job done as efficiently as possible. On the other hand, we don't want to create a mess that will be difficult to maintain or understand in the future.&lt;/p&gt;

&lt;p&gt;In this article, we will explore the trade-offs between quick code and good code in different contexts, and provide strategies for striking the right balance. We'll cover topics such as prototyping, production code, libraries, and standalone scripts, and provide examples of when to prioritize speed, readability, testability, and other important considerations.&lt;br&gt;
 &lt;br&gt;
Whether you're writing code for a short-term project or building something that will be used for years to come, this article will provide you with valuable insights and strategies for writing good code in any context.&lt;/p&gt;

&lt;h2&gt;
  
  
  I. Prototyping code
&lt;/h2&gt;

&lt;p&gt;Prototyping code is an essential tool for developers, allowing them to quickly test and validate ideas before committing to a full implementation. When writing prototyping code, it's important to prioritize speed and flexibility over maintainability and robustness.&lt;br&gt;
Strategy&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Focus on speed&lt;/strong&gt; - Prototyping code is typically written quickly, so it's important to prioritize speed over perfection. Don't worry too much about code quality or architecture - the goal is to get something working as quickly as possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep it simple and flexible&lt;/strong&gt; - Prototyping code is often used to explore different approaches to a problem, so it's important to keep your code flexible and open to change. This means avoiding rigid or complex architectures and focusing on simplicity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't worry too much about testing&lt;/strong&gt; - While testing is important, it's not a top priority when it comes to prototyping code. You should still perform some basic testing to ensure your code is working as expected, but don't spend too much time on it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  II. Production code
&lt;/h2&gt;

&lt;p&gt;When it comes to production code, the focus shifts from speed and flexibility to reliability, maintainability, and robustness. Production code is the code that powers your applications and services, so it's important to make sure it is of high quality and can handle the demands of a production environment.&lt;br&gt;
Strategy&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Make it reliable&lt;/strong&gt; - Production code needs to be reliable, with minimal downtime and minimal errors. This includes thorough testing, error handling, and performance optimization to ensure the code is stable and can handle a high volume of requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it maintainable&lt;/strong&gt; - Production code needs to be easy to maintain, with clear and concise code, well-documented functions and modules, and a consistent coding style. This helps other developers understand and work with the code, and makes it easier to update and improve over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it scalable&lt;/strong&gt; - Production code needs to be scalable, with the ability to handle a high volume of requests and a large number of users. This includes optimization techniques, such as caching and load balancing, to ensure the code can handle the demands of a live environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  III. Libraries
&lt;/h2&gt;

&lt;p&gt;When it comes to writing code for libraries, the focus is on maintainability, readability, and usability. Libraries are reusable pieces of code that are used by other developers in their own projects, so it's important to make sure they are easy to understand and use.&lt;br&gt;
Strategy&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Make it reliable&lt;/strong&gt; - Libraries code needs to be reliable, with minimal downtime and minimal errors. This includes thorough testing, error handling, and performance optimization to ensure the code is stable and can be used in a variety of different projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document it well&lt;/strong&gt; - Libraries code needs to be well-documented, with clear and concise documentation that explains how to use the code and any specific requirements or dependencies. This helps other developers understand and use the code, and makes it easier to integrate into their projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it easy to use&lt;/strong&gt; - Libraries code needs to be easy to use, with a clear and intuitive interface that makes it easy for other developers to incorporate into their projects. This includes providing clear and concise documentation and examples, and ensuring the code is well-structured and easy to understand.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  IV. Standalone Script
&lt;/h2&gt;

&lt;p&gt;Standalone scripts are a type of code that is written to perform a specific task or set of tasks on demand, and are typically designed to be run once or a few times, rather than being continuously executed. These scripts are often used in a variety of contexts, such as automating data processing or generating reports. When writing a standalone script, it's important to consider the following guidelines to ensure it is efficient, reliable, and easy to use.&lt;br&gt;
Strategy&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep it simple and flexible&lt;/strong&gt; - Standalone scripts should be simple as they are usually meant to be run quickly and accomplish a specific task. Keeping the code clean and easy to understand will make it easier to maintain and modify in the future. It's also important to consider the potential future use cases for the script, and to design it in a way that allows for easy modification or expansion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document it&lt;/strong&gt; -  Standalone scripts should be well-documented, with clear comments explaining how the code works and why certain design decisions were made. This helps other developers understand and use the code, if needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it easy to run&lt;/strong&gt; - Standalone scripts should be easy to run, with clear instructions and minimal setup requirements. This includes automated installation scripts and clear documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  TDLR
&lt;/h2&gt;

&lt;p&gt;It is essential to consider the purpose and context of the code being written in order to effectively balance the trade-off between quick and good code. By carefully considering the specific goals of the code, developers can create efficient and reliable solutions that meet the needs of their project.&lt;br&gt;
For prototyping code, it's important to prioritize exploration and learning, rather than creating production-ready solutions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Production code&lt;/strong&gt; should be stable and scalable to handle the demands of a production environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Library code&lt;/strong&gt; should be reusable and reliable, and easily integrable into other projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standalone scripts&lt;/strong&gt; should be simple, flexible, and easy to use, and should be designed to accomplish a specific task.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>cleancode</category>
      <category>mvp</category>
    </item>
  </channel>
</rss>
