<?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: Vaibhav Tekam</title>
    <description>The latest articles on DEV Community by Vaibhav Tekam (@vaibhav_tech4biz).</description>
    <link>https://dev.to/vaibhav_tech4biz</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%2Fuser%2Fprofile_image%2F4016442%2F55a694c7-300d-4290-a397-c6d1d2161c68.jpeg</url>
      <title>DEV Community: Vaibhav Tekam</title>
      <link>https://dev.to/vaibhav_tech4biz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vaibhav_tech4biz"/>
    <language>en</language>
    <item>
      <title>When Fine-Tuning Stops Working: The Architecture Lesson That Took Our Healthcare AI From 60% to 92% Recall</title>
      <dc:creator>Vaibhav Tekam</dc:creator>
      <pubDate>Wed, 08 Jul 2026 16:16:22 +0000</pubDate>
      <link>https://dev.to/vaibhav_tech4biz/when-fine-tuning-stops-working-the-architecture-lesson-that-took-our-healthcare-ai-from-60-to-92-bok</link>
      <guid>https://dev.to/vaibhav_tech4biz/when-fine-tuning-stops-working-the-architecture-lesson-that-took-our-healthcare-ai-from-60-to-92-bok</guid>
      <description>&lt;p&gt;We had a healthcare claims platform stuck at 45% recall on medical coding. Not 45% on a benchmark. 45% recall on CPT and ICD code assignment, in a system whose job is getting those codes right before a claim goes out. Get it wrong, and a claim gets denied. A billing team spends an afternoon on the phone with a payer instead of doing their actual job.&lt;/p&gt;

&lt;p&gt;This post is about the architectural decision that moved CPT recall from 45% to 92%, and why no amount of prompt engineering or fine-tuning could have produced the same result on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why fine-tuning stopped working
&lt;/h2&gt;

&lt;p&gt;When a number is low, the obvious move is a bigger model. We made that move too, and it wasn't a bad instinct, at least at first.&lt;/p&gt;

&lt;p&gt;We spent real weeks on it: sharper prompts, more examples, better retrieval so the right context sat in front of the model when it made a call. Recall climbed out of the 40s into the high 50s, low 60s. Genuine progress.&lt;/p&gt;

&lt;p&gt;Then, somewhere in the low 60s, it stopped. More examples didn't move it. Sharper prompts didn't move it. The usual levers had stopped answering.&lt;/p&gt;

&lt;p&gt;That's the moment worth paying attention to: not when something fails outright, but when it quietly stops responding to the thing that used to work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the LLM could never solve this alone
&lt;/h2&gt;

&lt;p&gt;A language model doesn't return an answer. It returns a best guess from a distribution of plausible ones. Ask it the same claim twice, worded slightly differently, and it can produce two different codes. For a chatbot, that variance is harmless. For a system deciding whether a claim gets paid, it's a serious problem, and it's not a problem a bigger model fixes, because it's not a knowledge gap. It's what a probabilistic system fundamentally is.&lt;/p&gt;

&lt;p&gt;A large part of "getting the code right" turned out not to be a judgment call at all. It was already a solved, published, deterministic rule. NCCI, the National Correct Coding Initiative, is a set of edits from CMS stating plainly which procedure code pairs cannot be billed together, full stop, unless a specific modifier applies.&lt;/p&gt;

&lt;p&gt;We were asking a model to guess its way toward an answer that already existed as a lookup table.&lt;/p&gt;

&lt;p&gt;Here's a concrete version of the failure, details altered but the shape real. A clinical note describes a procedure and, in the same visit, a closely related diagnostic test. The model proposes codes for both, and it's a reasonable read of the note. A careful human coder might make the same call on a first pass.&lt;/p&gt;

&lt;p&gt;NCCI disallows the pairing. Not because the clinical reasoning is wrong, but because CMS has already ruled that one procedure is, by definition, a component of the other when performed in the same session. The model has no way to know this from the note, because the constraint isn't in the note. It's in a separate regulatory table with no relationship to what the sentence says.&lt;/p&gt;

&lt;p&gt;Multiply that one example by every plausible-looking pair across a real coding surface, and the plateau makes sense. The model wasn't getting worse at reading. It had run out of room to improve on a problem that was never primarily a reading problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a deterministic validation layer
&lt;/h2&gt;

&lt;p&gt;Once the shape of the problem was clear, the fix stopped being about the model and became about building the layer next to it.&lt;/p&gt;

&lt;p&gt;We loaded the full NCCI edit set. All 1.73 million pairs, not a representative sample, because the value of a deterministic check is that it has no blind spots. A rule that catches 90% of bad pairs and misses the rest hasn't solved the problem, it's relocated the failure to wherever nobody's watching.&lt;/p&gt;

&lt;p&gt;The resulting pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The model proposes candidate codes. It's genuinely good at this: reading unstructured clinical documentation and surfacing plausible candidates is a real strength, and there's no deterministic substitute for it.&lt;/li&gt;
&lt;li&gt;Every candidate pair is checked against the NCCI table before it reaches a claim.&lt;/li&gt;
&lt;li&gt;Only pairs that clear the table ship. A candidate the model favored but the table rejects doesn't go through, no exceptions, because exceptions quietly rebuild the guessing problem the check was meant to remove.
The model proposes. The table proves. Once we stopped treating this as one system to keep tuning and started treating it as two systems doing two different jobs, the remaining work was engineering, not research.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  It didn't ship clean
&lt;/h2&gt;

&lt;p&gt;The first version of the lookup was a linear scan through all 1.73 million rows per candidate pair. In a demo with one or two claims, it felt instant. In production, with a dozen candidate codes per claim and every pairwise combination needing a check, it visibly lagged. We rebuilt it as a proper index keyed on the pairs themselves. Unglamorous, and the difference between a check that's correct in principle and one that's usable in a real-time pipeline.&lt;/p&gt;

&lt;p&gt;The second issue we found before it became an incident, not after. CMS updates the NCCI edit set every quarter. A static, load-once table is a stale table waiting to happen. Rather than wait for a batch of claims to quietly clear an outdated check, we went looking for the failure mode on our own schedule: what happens to a "deterministic" layer when the thing it's being deterministic about changes underneath it. The fix was a scheduled refresh and a version stamp on every verdict, so any decision can be traced back to exactly which edit set produced it. Finding that gap by design, rather than by incident report, is the same principle as the rest of this build: check before you're forced to.&lt;/p&gt;

&lt;p&gt;Recall on CPT went from the low 60s to 92%. ICD landed lower, at 76.8%, and that gap is worth explaining rather than smoothing over. NCCI's rules live on the procedure-code side; that's the layer with a clean, published table. ICD diagnosis coding runs on a different kind of logic, driven by clinical specificity and payer documentation requirements, much of which is a genuine judgment call rather than a lookup. Judgment calls are exactly where a probabilistic system should be doing the work, not where a rulebook should be forced onto it that doesn't exist. Read side by side, the two numbers aren't "better here, worse there." CPT had more of the kind of problem a table solves. ICD has more of the kind that needs judgment. The recall gap is largely a measurement of that ratio.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real lesson
&lt;/h2&gt;

&lt;p&gt;Model accuracy has a ceiling, and the ceiling usually has nothing to do with the model.&lt;/p&gt;

&lt;p&gt;Some percentage of what a system needs to get right isn't a pattern to learn. It's a rule that already exists, published and unambiguous, waiting to be wired in rather than rediscovered through enough training examples.&lt;/p&gt;

&lt;p&gt;The climb from 45% to the low 60s was a model problem, and the standard tools solved it. The climb from the low 60s to 92% was an architecture problem, and no amount of prompting was ever going to close it. On a dashboard, the two climbs look identical. They are not the same problem, and the second one doesn't yield to more of what fixed the first.&lt;/p&gt;

&lt;p&gt;So before reaching for a bigger model on a number that won't move: is this a guessing problem, or is it a problem that already has a correct answer sitting somewhere, waiting for someone to stop asking a probabilistic system to guess at it.&lt;/p&gt;

&lt;p&gt;More often than expected, it's the second one.&lt;/p&gt;

&lt;p&gt;Production AI systems become reliable when probabilistic models and deterministic systems each do the job they were designed to do.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>architecture</category>
      <category>healthtech</category>
    </item>
    <item>
      <title>Most Engineering Blogs Show You What Worked. We're Going to Show You What Broke.</title>
      <dc:creator>Vaibhav Tekam</dc:creator>
      <pubDate>Wed, 08 Jul 2026 07:18:23 +0000</pubDate>
      <link>https://dev.to/vaibhav_tech4biz/most-engineering-blogs-show-you-what-worked-were-going-to-show-you-what-broke-2h4e</link>
      <guid>https://dev.to/vaibhav_tech4biz/most-engineering-blogs-show-you-what-worked-were-going-to-show-you-what-broke-2h4e</guid>
      <description>&lt;p&gt;Most engineering blogs focus on the outcome. They present clean architectures, successful deployments, and polished case studies that make complex systems appear simpler than they really were.&lt;/p&gt;

&lt;p&gt;What they rarely document is the engineering journey that produced those outcomes. They seldom discuss the migration that stalled halfway through, the production incident that forced a redesign, or the assumptions that proved to be wrong once the system met real users and real workloads.&lt;/p&gt;

&lt;p&gt;Those experiences contain the lessons that matter most.&lt;/p&gt;

&lt;p&gt;At &lt;strong&gt;Tech4Biz Solutions&lt;/strong&gt;, we have spent years designing, building, and restoring production systems across artificial intelligence, cloud infrastructure, enterprise software, embedded hardware, industrial automation, and observability. Regardless of the technology involved, we have reached the same conclusion time and again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliable systems are rarely the result of perfect technology. They are the result of thoughtful engineering, continuous iteration, careful trade-offs, and decisions made under real-world constraints.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We're Writing
&lt;/h2&gt;

&lt;p&gt;We started writing because the most valuable engineering lessons rarely appear in traditional case studies.&lt;/p&gt;

&lt;p&gt;Case studies usually explain what worked. They seldom explain what failed, what assumptions proved to be incorrect, what designs had to be abandoned, or why the final system looked very different from the original plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We're less interested in presenting finished architectures than in explaining how those architectures evolved into reliable production systems.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We'll Write About
&lt;/h2&gt;

&lt;p&gt;Every article will be grounded in engineering work we've actually done, systems we've actually built, or production problems we've actually solved.&lt;/p&gt;

&lt;p&gt;We'll write about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Production AI systems&lt;/li&gt;
&lt;li&gt;Cloud architecture and distributed systems&lt;/li&gt;
&lt;li&gt;Platform engineering and observability&lt;/li&gt;
&lt;li&gt;Embedded systems and hardware integration&lt;/li&gt;
&lt;li&gt;Industrial software and automation&lt;/li&gt;
&lt;li&gt;Performance, scalability, reliability, and security&lt;/li&gt;
&lt;li&gt;Engineering decisions made under real deadlines and real business constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We'll explain not only &lt;strong&gt;what&lt;/strong&gt; we built, but also &lt;strong&gt;why&lt;/strong&gt; we built it that way, what alternatives we considered, and what we learned in the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Won't Find
&lt;/h2&gt;

&lt;p&gt;You won't find toy projects designed to demonstrate a framework.&lt;/p&gt;

&lt;p&gt;You won't find success stories with the difficult parts edited out.&lt;/p&gt;

&lt;p&gt;You won't find articles written simply because a technology happens to be trending.&lt;/p&gt;

&lt;p&gt;You won't find sales pitches disguised as engineering articles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good engineering earns trust through transparency, not marketing.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Coming Next
&lt;/h2&gt;

&lt;p&gt;Over the coming weeks, we'll share deep dives into production systems we've built and stabilized across cloud infrastructure, enterprise AI, observability, embedded hardware, and industrial software.&lt;/p&gt;

&lt;p&gt;We'll also share the engineering behind &lt;strong&gt;Suryamon&lt;/strong&gt;, our open-source solar plant monitoring platform, along with the architectural decisions, trade-offs, and lessons that shaped it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The finished system is only part of the story. We're here to document everything that happened before it became reliable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If these are the kinds of engineering problems you enjoy solving, we hope you'll follow along.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>devops</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
