<?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: Shlomo Friman</title>
    <description>The latest articles on DEV Community by Shlomo Friman (@shlomofr).</description>
    <link>https://dev.to/shlomofr</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%2F3913778%2F4635353d-57f5-4025-be4a-1ac773339572.jpg</url>
      <title>DEV Community: Shlomo Friman</title>
      <link>https://dev.to/shlomofr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shlomofr"/>
    <language>en</language>
    <item>
      <title>Your AI Search Is Only as Smart as What Your Codebase Forgot to Document</title>
      <dc:creator>Shlomo Friman</dc:creator>
      <pubDate>Fri, 08 May 2026 11:08:13 +0000</pubDate>
      <link>https://dev.to/shlomofr/your-ai-search-is-only-as-smart-as-what-your-codebase-forgot-to-document-584g</link>
      <guid>https://dev.to/shlomofr/your-ai-search-is-only-as-smart-as-what-your-codebase-forgot-to-document-584g</guid>
      <description>&lt;p&gt;Everyone deploying enterprise AI search is running into the same wall, and blaming the wrong thing.&lt;/p&gt;

&lt;p&gt;The model isn't the problem. The retrieval pipeline isn't the problem. The embedding strategy isn't the problem. The problem is what you're asking the AI to search through, and how much of the knowledge that actually runs your organization was never written down anywhere the AI can find it.&lt;/p&gt;

&lt;p&gt;It lives in the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Knowledge That Never Made It Into a Document
&lt;/h2&gt;

&lt;p&gt;When you deploy a RAG-based search layer over your enterprise systems, the standard assumption is that your knowledge lives somewhere retrievable: wikis, runbooks, Confluence pages, ticket histories, README files. The AI retrieves the relevant chunks, grounds its answers in them, and gives you something useful.&lt;/p&gt;

&lt;p&gt;That assumption holds for maybe 30% of the knowledge that actually matters in an enterprise system.&lt;/p&gt;

&lt;p&gt;The rest is implicit. It's baked into the logic of applications that have been running for a decade or more. It's in the field names that made sense in 2003 when the original team named them. It's in the hardcoded values that represent business rules nobody wrote a ticket for, because at the time there was no need: everyone knew. It's in the conditional branches that encode compliance requirements from a regulatory environment that has since changed, where the code was updated but the documentation wasn't.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gosearch.ai/blog/why-ai-agents-underperform-rag-retrieval-gartner/" rel="noopener noreferrer"&gt;Gartner's 2025 Market Guide&lt;/a&gt; for Enterprise AI Search identified the knowledge layer, not the generation model, as the primary bottleneck in failing deployments. The most common failure mode isn't a bad LLM. It's a retrieval layer that can't surface what's needed because what's needed was never put anywhere retrievable.&lt;/p&gt;

&lt;p&gt;That's not a retrieval problem. It's a documentation problem that predates AI by twenty years.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "Undocumented" Actually Means in a Codebase
&lt;/h2&gt;

&lt;p&gt;When developers say a system is undocumented, they usually mean there are no comments, no architecture docs, no wikis. That's part of it.&lt;/p&gt;

&lt;p&gt;But the deeper problem is subtler. Even well-maintained systems have a class of knowledge that is structurally impossible to capture in conventional documentation: the knowledge that was so obvious at the time that nobody thought to write it down.&lt;/p&gt;

&lt;p&gt;Consider a few examples.&lt;/p&gt;

&lt;p&gt;A field called &lt;code&gt;ACCT-TYPE&lt;/code&gt; in a COBOL program has twelve possible values. Seven of them are used in active logic paths. The other five exist in the data but are never referenced by the application, because the business processes they represented were retired in 2009. An AI search tool has no way of knowing that. It sees twelve values. It doesn't know that five of them are artifacts of a world that no longer exists.&lt;/p&gt;

&lt;p&gt;A batch job runs nightly. Its processing sequence matters: module B must run after module A because module A writes an intermediate file that module B reads. That dependency is not in any document. It's in a JCL script that nobody has looked at in six years. If someone asks the AI "what does this system do overnight," the answer will be technically incomplete in ways that matter.&lt;/p&gt;

&lt;p&gt;A customer record field called &lt;code&gt;STATUS&lt;/code&gt; has a value of &lt;code&gt;7&lt;/code&gt;. What does &lt;code&gt;7&lt;/code&gt; mean? The answer is probably in the code that processes it. It might be in a comment. It might be in neither. It might be in the memory of someone who retired in 2017. The AI can retrieve the word "STATUS" from a dozen documents. It cannot tell you what &lt;code&gt;7&lt;/code&gt; means unless something, somewhere, says so.&lt;/p&gt;

&lt;p&gt;This is what &lt;a href="https://www.in-com.com/blog/how-cross-system-data-alignment-improves-data-consistency-across-enterprise-platforms/" rel="noopener noreferrer"&gt;cross-system data alignment&lt;/a&gt; breaks down to at its most fundamental level: different parts of the organization operating with divergent interpretations of the same data, because the shared context that would unify those interpretations was never codified.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Breaks AI Search Specifically
&lt;/h2&gt;

&lt;p&gt;Traditional keyword search fails at this problem gracefully. It doesn't know what it doesn't know, and it doesn't pretend to. You search for "STATUS field values," you get whatever documents mention those words, and you accept that you might need to dig further.&lt;/p&gt;

&lt;p&gt;AI search fails at this problem ungracefully. It generates confident, fluent answers from whatever it retrieves. If what it retrieves is incomplete, the answer is incomplete in a way that sounds complete. The system will tell you what &lt;code&gt;STATUS 7&lt;/code&gt; means if there is anything anywhere that describes it. If there isn't, it may interpolate from context, from similar patterns in other documents, from general knowledge about enterprise systems. The answer will sound plausible. It may be wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@tobias_pfuetze/the-rag-renaissance-that-never-happened-b589199567c6" rel="noopener noreferrer"&gt;Industry surveys from 2025&lt;/a&gt; found that 72% of enterprise RAG implementations either failed outright or significantly underperformed in their first year. The most cited root cause was not model quality. It was data quality and retrieval relevance, which is a polite way of saying: the knowledge needed to answer the questions wasn't in the knowledge base.&lt;/p&gt;

&lt;p&gt;What nobody says clearly enough is that for enterprise systems with history, a large share of that knowledge was never in any document. It was in the people who built the system, and when they left, it went into the code. The code still runs. The explanation of why it works the way it does is gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Archaeology Step Nobody Is Doing
&lt;/h2&gt;

&lt;p&gt;There is a step that should come before any enterprise AI search deployment. Most organizations skip it entirely, because it is slow, unglamorous, and has no vendor selling it.&lt;/p&gt;

&lt;p&gt;That step is codebase archaeology: systematically reconstructing the implicit knowledge embedded in the applications themselves before building a retrieval layer on top of them.&lt;/p&gt;

&lt;p&gt;What does that look like in practice?&lt;/p&gt;

&lt;p&gt;It means tracing every field from definition through every place it is read, written, and transformed, building a map of what the data actually means in context. It means inventorying every hardcoded value and asking: is this a constant, or is this a business rule that was never parameterized? It means identifying every conditional branch where a missing &lt;code&gt;else&lt;/code&gt; clause represents an implicit assumption. It means mapping the dependencies between modules that exist in execution order but not in documentation.&lt;/p&gt;

&lt;p&gt;None of this is AI work. It is reading work. It requires treating the codebase as a primary source, the way a historian treats a primary source: not as executable instructions, but as evidence of decisions made by people who had context you no longer have.&lt;/p&gt;

&lt;p&gt;The output of that work is something that can actually go into a knowledge base. Field definitions with business context. Value code glossaries. Dependency maps. Process flows with the implicit steps made explicit. Annotated logic explanations for the branches that would otherwise be opaque.&lt;/p&gt;

&lt;p&gt;That is the knowledge layer an enterprise AI search needs to work. And in most organizations that have been running on the same core systems for ten or twenty years, most of it does not exist yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Compounding Problem of System Fragmentation
&lt;/h2&gt;

&lt;p&gt;The challenge gets harder as enterprise systems grow more fragmented. Most organizations operate not on a single legacy platform but on a constellation of systems that evolved independently and were later integrated through interfaces, APIs, and batch transfers that nobody fully documented either.&lt;/p&gt;

&lt;p&gt;Each of those systems has its own implicit knowledge layer. Each integration point between them represents an additional layer of context that may never have been written down: why this field maps to that field, why the transformation applies in this direction but not the other, why the timing of the transfer matters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ibm.com/new/announcements/new-enterprise-data-tools-for-enterprise-ai" rel="noopener noreferrer"&gt;IBM has estimated&lt;/a&gt; that 90% of data generated by enterprises is unstructured, but even that framing understates the problem for organizations with long-running legacy systems. It is not just that the data is unstructured. It is that significant portions of it are context-free: values and records whose meaning is only recoverable by reading the code that processes them.&lt;/p&gt;

&lt;p&gt;An AI search layer deployed over that environment is working with a fractured, context-stripped knowledge base. It can retrieve. It cannot understand, because the understanding was never externalized.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Do Before You Deploy
&lt;/h2&gt;

&lt;p&gt;None of this is an argument against enterprise AI search. The capability is real, and the demand is legitimate. Organizations need better ways to navigate the accumulated knowledge in their systems, and AI-assisted search can provide that.&lt;/p&gt;

&lt;p&gt;The argument is about sequencing.&lt;/p&gt;

&lt;p&gt;Before the retrieval layer, there needs to be a documentation layer. Before the documentation layer, there needs to be an extraction layer: a systematic effort to pull the implicit knowledge out of the codebase and make it explicit. That work requires tools that can parse code structure, &lt;a href="https://www.in-com.com/blog/research-execution-dependency-structure-tracing-data-flow-and-execution-paths/" rel="noopener noreferrer"&gt;trace execution paths&lt;/a&gt;, and surface the dependencies and logic patterns that human readers would miss in a manual pass.&lt;/p&gt;

&lt;p&gt;The organizations that will get durable value from enterprise AI search are the ones that treat this as a data preparation problem first. Not a model selection problem. Not a pipeline architecture problem. A knowledge extraction problem that starts with the oldest, least-documented, most business-critical systems in their portfolio.&lt;/p&gt;

&lt;p&gt;The AI can search what is there. The work is making sure what needs to be there, is.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>legacy</category>
      <category>data</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
