<?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: Paulo Eremita</title>
    <description>The latest articles on DEV Community by Paulo Eremita (@eremitaio79).</description>
    <link>https://dev.to/eremitaio79</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%2F3916520%2F3d0274bb-22d8-4b4a-bbb7-bbf92fbd7411.jpeg</url>
      <title>DEV Community: Paulo Eremita</title>
      <link>https://dev.to/eremitaio79</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eremitaio79"/>
    <language>en</language>
    <item>
      <title>From Documentation to Delivery System: How I’m Evolving SDD Into a Personal Engineering Framework</title>
      <dc:creator>Paulo Eremita</dc:creator>
      <pubDate>Wed, 06 May 2026 18:46:04 +0000</pubDate>
      <link>https://dev.to/eremitaio79/from-documentation-to-delivery-system-how-im-evolving-sdd-into-a-personal-engineering-framework-2jpj</link>
      <guid>https://dev.to/eremitaio79/from-documentation-to-delivery-system-how-im-evolving-sdd-into-a-personal-engineering-framework-2jpj</guid>
      <description>&lt;p&gt;For a long time, I treated software documentation the way many teams do:&lt;/p&gt;

&lt;p&gt;as something useful, important, and almost always weaker than the code it was supposed to support.&lt;/p&gt;

&lt;p&gt;It helped a little.&lt;br&gt;&lt;br&gt;
It organized a few ideas.&lt;br&gt;&lt;br&gt;
It improved communication when people had the patience to keep it alive.&lt;/p&gt;

&lt;p&gt;But it was not enough.&lt;/p&gt;

&lt;p&gt;So I started pushing my SDD further.&lt;/p&gt;

&lt;p&gt;What began as structured documentation gradually turned into something else:&lt;/p&gt;

&lt;p&gt;a personal engineering framework for delivery.&lt;/p&gt;

&lt;p&gt;Not a framework in the “library” sense.&lt;br&gt;&lt;br&gt;
A framework in the “system for building systems” sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  The original frustration
&lt;/h2&gt;

&lt;p&gt;The problem was familiar.&lt;/p&gt;

&lt;p&gt;Projects often fail long before implementation quality becomes the main issue.&lt;/p&gt;

&lt;p&gt;They fail because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ambiguity&lt;/li&gt;
&lt;li&gt;fragmented decisions&lt;/li&gt;
&lt;li&gt;weak context transfer&lt;/li&gt;
&lt;li&gt;invisible assumptions&lt;/li&gt;
&lt;li&gt;inconsistent execution across sessions, contributors, and tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code is only one part of the story.&lt;/p&gt;

&lt;p&gt;What breaks first is usually the path toward the code.&lt;/p&gt;

&lt;p&gt;That is where I started paying closer attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I kept evolving the SDD
&lt;/h2&gt;

&lt;p&gt;At first, the SDD was just a way to structure thinking before implementation.&lt;/p&gt;

&lt;p&gt;But over time, I realized that the real value was not in the document itself.&lt;/p&gt;

&lt;p&gt;The real value was in the repeatability it created.&lt;/p&gt;

&lt;p&gt;A good SDD was doing more than describing a solution.&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;constraining ambiguity&lt;/li&gt;
&lt;li&gt;making tradeoffs visible&lt;/li&gt;
&lt;li&gt;preserving context&lt;/li&gt;
&lt;li&gt;guiding execution order&lt;/li&gt;
&lt;li&gt;helping both humans and AI stay aligned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is when I stopped seeing it as “documentation” and started seeing it as an operating model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is becoming
&lt;/h2&gt;

&lt;p&gt;Today, I think of it less as a static artifact and more as a delivery framework.&lt;/p&gt;

&lt;p&gt;A practical one.&lt;/p&gt;

&lt;p&gt;Its purpose is not to produce pretty documents.&lt;br&gt;&lt;br&gt;
Its purpose is to improve how software gets built.&lt;/p&gt;

&lt;p&gt;That means the SDD has to support things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture definition&lt;/li&gt;
&lt;li&gt;rule organization&lt;/li&gt;
&lt;li&gt;implementation sequencing&lt;/li&gt;
&lt;li&gt;decision traceability&lt;/li&gt;
&lt;li&gt;reusable structure across projects&lt;/li&gt;
&lt;li&gt;compatibility with AI-assisted workflows&lt;/li&gt;
&lt;li&gt;validation through real shipped systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, calling it “just documentation” feels misleading.&lt;/p&gt;

&lt;p&gt;It is closer to an internal blueprint system.&lt;/p&gt;

&lt;h2&gt;
  
  
  A shift that mattered
&lt;/h2&gt;

&lt;p&gt;One of the most important mental shifts for me was this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;a strong engineering artifact should not only explain a project&lt;br&gt;&lt;br&gt;
it should actively shape how the project is delivered&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That changed how I structured the work.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what should this document contain?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I started asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what should this system make easier, safer, and more repeatable?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That leads to a very different kind of artifact.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the framework is trying to solve
&lt;/h2&gt;

&lt;p&gt;The SDD framework is my way of reducing the gap between intent and execution.&lt;/p&gt;

&lt;p&gt;Especially in projects where there is a lot of complexity, moving parts, or risk of drift.&lt;/p&gt;

&lt;p&gt;The framework is trying to make these things more reliable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understanding what is being built&lt;/li&gt;
&lt;li&gt;deciding what matters first&lt;/li&gt;
&lt;li&gt;preserving why decisions were made&lt;/li&gt;
&lt;li&gt;helping new contributors enter with less confusion&lt;/li&gt;
&lt;li&gt;making AI collaboration more grounded and less improvisational&lt;/li&gt;
&lt;li&gt;turning a one-project success into a reusable way of working&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why AI made this even more important
&lt;/h2&gt;

&lt;p&gt;AI did not make structure less important.&lt;/p&gt;

&lt;p&gt;It made structure more important.&lt;/p&gt;

&lt;p&gt;If you want AI to be genuinely useful in software delivery, you need more than prompts.&lt;/p&gt;

&lt;p&gt;You need context discipline.&lt;/p&gt;

&lt;p&gt;You need stable rules, explicit intent, clear boundaries, and enough scaffolding to prevent the workflow from collapsing into guesswork.&lt;/p&gt;

&lt;p&gt;That is one of the reasons I kept evolving the SDD.&lt;/p&gt;

&lt;p&gt;I wanted something that could support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;human reasoning&lt;/li&gt;
&lt;li&gt;machine-assisted execution&lt;/li&gt;
&lt;li&gt;continuity across sessions&lt;/li&gt;
&lt;li&gt;repeatable delivery patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In that sense, the framework is not anti-AI at all.&lt;/p&gt;

&lt;p&gt;It is what makes AI collaboration more serious.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real validation changed everything
&lt;/h2&gt;

&lt;p&gt;The framework became much more interesting once it stopped being theoretical.&lt;/p&gt;

&lt;p&gt;I began using it in real projects.&lt;/p&gt;

&lt;p&gt;That included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a deployed psychology research application&lt;/li&gt;
&lt;li&gt;migration-oriented Python tools&lt;/li&gt;
&lt;li&gt;internal engineering tools for legacy analysis and structured diagnostics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That real usage mattered.&lt;/p&gt;

&lt;p&gt;Because now the question is no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;is this an interesting idea?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now the question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;does this actually improve delivery in practice?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much better question.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m learning
&lt;/h2&gt;

&lt;p&gt;A few things have become clearer as I keep pushing this work forward.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Documentation is too small a word
&lt;/h3&gt;

&lt;p&gt;Some artifacts are doing operational work, not just descriptive work.&lt;/p&gt;

&lt;p&gt;When that happens, they need to be versioned, governed, and treated like part of the engineering system.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Reuse is a design signal
&lt;/h3&gt;

&lt;p&gt;If the same structure keeps helping across different projects, it probably wants to become a framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Delivery quality depends on pre-code clarity
&lt;/h3&gt;

&lt;p&gt;A lot of engineering pain is not caused by bad syntax.&lt;/p&gt;

&lt;p&gt;It is caused by weak framing.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI works better inside disciplined systems
&lt;/h3&gt;

&lt;p&gt;Loose prompting can generate motion.&lt;/p&gt;

&lt;p&gt;Structured context can generate leverage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this is going
&lt;/h2&gt;

&lt;p&gt;I’m still evolving this framework.&lt;/p&gt;

&lt;p&gt;It is not “finished,” and I’m not especially interested in pretending otherwise.&lt;/p&gt;

&lt;p&gt;What interests me is pushing it further as a practical system for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;spec-driven execution&lt;/li&gt;
&lt;li&gt;AI-assisted development&lt;/li&gt;
&lt;li&gt;repeatable engineering workflows&lt;/li&gt;
&lt;li&gt;stronger context continuity across real projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I want it to keep moving from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;folder of rules&lt;/li&gt;
&lt;li&gt;to reusable blueprint&lt;/li&gt;
&lt;li&gt;to internal delivery framework&lt;/li&gt;
&lt;li&gt;to something robust enough to support broader platform thinking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;A lot of people ask whether documentation is still worth investing in.&lt;/p&gt;

&lt;p&gt;I think that is the wrong question.&lt;/p&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;can your documentation evolve into an execution system?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is what I’m exploring with my SDD.&lt;/p&gt;

&lt;p&gt;And the more I work on real projects with it, the more I believe this is where some of the most interesting engineering leverage lives.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>ai</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Structured Context Before AI: The Rule That Made My Legacy Analysis Tool Useful</title>
      <dc:creator>Paulo Eremita</dc:creator>
      <pubDate>Wed, 06 May 2026 18:42:29 +0000</pubDate>
      <link>https://dev.to/eremitaio79/structured-context-before-ai-the-rule-that-made-my-legacy-analysis-tool-useful-4h7o</link>
      <guid>https://dev.to/eremitaio79/structured-context-before-ai-the-rule-that-made-my-legacy-analysis-tool-useful-4h7o</guid>
      <description>&lt;p&gt;A lot of AI-assisted coding tools fail for a simple reason:&lt;/p&gt;

&lt;p&gt;they ask the model to think before the system has done enough work.&lt;/p&gt;

&lt;p&gt;That usually leads to one of two outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vague summaries that sound smart but don’t help much&lt;/li&gt;
&lt;li&gt;confident mistakes wrapped in beautiful prose&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While building my legacy analysis tool, I kept running into the same conclusion:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;if you want useful AI output, you need structured context first&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That rule changed the whole design of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The temptation
&lt;/h2&gt;

&lt;p&gt;When working with a legacy codebase, it is very tempting to do this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;grab a file&lt;/li&gt;
&lt;li&gt;send it to an LLM&lt;/li&gt;
&lt;li&gt;ask: "what does this do?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes that works.&lt;/p&gt;

&lt;p&gt;But legacy systems are rarely understandable from a single file.&lt;/p&gt;

&lt;p&gt;A method may look innocent until you discover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it depends on includes&lt;/li&gt;
&lt;li&gt;it calls another class indirectly&lt;/li&gt;
&lt;li&gt;it builds SQL dynamically&lt;/li&gt;
&lt;li&gt;it is triggered by a UI flow you haven't seen yet&lt;/li&gt;
&lt;li&gt;the real business meaning lives in the database schema, not the method body&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you ask AI too early, it will often fill the gaps with plausible fiction.&lt;/p&gt;

&lt;p&gt;That is not intelligence. That is autocomplete wearing a tie.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I changed
&lt;/h2&gt;

&lt;p&gt;Instead of starting with AI, I designed the workflow to start with extraction.&lt;/p&gt;

&lt;p&gt;The tool tries to collect structure before asking for commentary.&lt;/p&gt;

&lt;p&gt;Depending on the analysis path, that may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;file path and class/method identity&lt;/li&gt;
&lt;li&gt;dependency chains&lt;/li&gt;
&lt;li&gt;include resolution&lt;/li&gt;
&lt;li&gt;SQL blocks&lt;/li&gt;
&lt;li&gt;tables touched&lt;/li&gt;
&lt;li&gt;UI actions and endpoints&lt;/li&gt;
&lt;li&gt;schema metadata&lt;/li&gt;
&lt;li&gt;procedure summaries&lt;/li&gt;
&lt;li&gt;domain map hints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only after that does AI step in.&lt;/p&gt;

&lt;p&gt;So the prompt is no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"please explain this mysterious code"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It becomes closer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"here is the method, here are its dependencies, here are the SQL fragments, here are the tables, here is the path it came from, now explain what is actually happening"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That difference is enormous.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this works better
&lt;/h2&gt;

&lt;p&gt;Structured context improves AI output in at least four ways.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. It reduces hallucination pressure
&lt;/h3&gt;

&lt;p&gt;When the model has actual extracted signals, it does not need to invent as much missing context.&lt;/p&gt;

&lt;p&gt;That does not eliminate mistakes, but it lowers the odds of polished nonsense.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. It makes answers more specific
&lt;/h3&gt;

&lt;p&gt;Instead of generic observations like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"this appears to handle business logic"&lt;/li&gt;
&lt;li&gt;"it may interact with the database"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;you start getting analysis grounded in real technical evidence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which tables are involved&lt;/li&gt;
&lt;li&gt;which dependencies were resolved&lt;/li&gt;
&lt;li&gt;which flow the UI suggests&lt;/li&gt;
&lt;li&gt;where the risk points actually are&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. It makes reports reusable
&lt;/h3&gt;

&lt;p&gt;If the context is structured, it can be cached, compared, regenerated, and reused.&lt;/p&gt;

&lt;p&gt;That matters a lot in real engineering work, where you often revisit the same area multiple times.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. It makes AI part of a system, not a gimmick
&lt;/h3&gt;

&lt;p&gt;This is the most important one.&lt;/p&gt;

&lt;p&gt;AI becomes one stage in a pipeline.&lt;/p&gt;

&lt;p&gt;Not the whole pipeline.&lt;/p&gt;

&lt;p&gt;That means the tool still has value even before the model speaks.&lt;/p&gt;

&lt;p&gt;And that is a good test of whether your design is serious.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical example
&lt;/h2&gt;

&lt;p&gt;Let’s say you are trying to understand a legacy backend action.&lt;/p&gt;

&lt;p&gt;A weak workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;open one PHP file&lt;/li&gt;
&lt;li&gt;paste it into an LLM&lt;/li&gt;
&lt;li&gt;ask for a summary&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A stronger workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;identify the real method or action&lt;/li&gt;
&lt;li&gt;resolve related includes&lt;/li&gt;
&lt;li&gt;extract SQL fragments&lt;/li&gt;
&lt;li&gt;detect external class calls&lt;/li&gt;
&lt;li&gt;identify likely tables involved&lt;/li&gt;
&lt;li&gt;inspect schema when needed&lt;/li&gt;
&lt;li&gt;only then generate AI commentary&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first workflow gives you a guess.&lt;/p&gt;

&lt;p&gt;The second gives you a technical briefing.&lt;/p&gt;

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

&lt;p&gt;This idea goes beyond legacy analysis.&lt;/p&gt;

&lt;p&gt;I think it applies to almost every serious AI engineering workflow.&lt;/p&gt;

&lt;p&gt;If you want reliable AI assistance, you usually need some combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;preprocessing&lt;/li&gt;
&lt;li&gt;structure extraction&lt;/li&gt;
&lt;li&gt;constrained prompting&lt;/li&gt;
&lt;li&gt;typed outputs&lt;/li&gt;
&lt;li&gt;caching&lt;/li&gt;
&lt;li&gt;human-readable artifacts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;the quality of the AI output often depends more on the surrounding system than on the model itself.&lt;/p&gt;

&lt;p&gt;That is not as flashy as saying "I built an AI tool."&lt;/p&gt;

&lt;p&gt;But it is much closer to the truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I believe now
&lt;/h2&gt;

&lt;p&gt;I no longer think the most valuable AI tools are the ones that "do everything."&lt;/p&gt;

&lt;p&gt;I think the valuable ones are the ones that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;collect the right context&lt;/li&gt;
&lt;li&gt;shape the right questions&lt;/li&gt;
&lt;li&gt;constrain the right outputs&lt;/li&gt;
&lt;li&gt;fit into real workflows engineers already need&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Models matter.&lt;/p&gt;

&lt;p&gt;But scaffolding matters more than people want to admit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;One of the most useful engineering habits I’m developing is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;never ask AI to infer what your system could have extracted first&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That rule made my tool better.&lt;/p&gt;

&lt;p&gt;It also made my trust in the output more rational.&lt;/p&gt;

&lt;p&gt;And in applied AI, rational trust is worth a lot more than impressive demos.&lt;/p&gt;

&lt;p&gt;If you’re building AI-assisted engineering tools, I’d love to know:&lt;/p&gt;

&lt;p&gt;how much of your result comes from the model, and how much comes from the structure around it?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>legacy</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Legacy systems are rarely hard because of syntax</title>
      <dc:creator>Paulo Eremita</dc:creator>
      <pubDate>Wed, 06 May 2026 18:38:48 +0000</pubDate>
      <link>https://dev.to/eremitaio79/legacy-systems-are-rarely-hard-because-of-syntax-j8e</link>
      <guid>https://dev.to/eremitaio79/legacy-systems-are-rarely-hard-because-of-syntax-j8e</guid>
      <description>&lt;p&gt;Legacy systems are rarely hard because of syntax.&lt;/p&gt;

&lt;p&gt;They are hard because knowledge is fragmented.&lt;/p&gt;

&lt;p&gt;A controller points to a facade.&lt;br&gt;&lt;br&gt;
A facade touches a model.&lt;br&gt;&lt;br&gt;
A model hides SQL.&lt;br&gt;&lt;br&gt;
A UI action triggers behavior through includes, query strings, and conventions nobody fully documented.&lt;br&gt;&lt;br&gt;
The database has its own story.&lt;br&gt;&lt;br&gt;
The team has another one.&lt;br&gt;&lt;br&gt;
And the code sits there like an archaeological site pretending to be an application.&lt;/p&gt;

&lt;p&gt;I wanted a better way to understand systems like that.&lt;/p&gt;

&lt;p&gt;So I built an AI-assisted workbench for legacy system analysis.&lt;/p&gt;

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

&lt;p&gt;When engineers talk about "understanding a legacy system", the usual tools are often too weak for the job:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manual grep is fast but shallow&lt;/li&gt;
&lt;li&gt;one-off scripts solve one question at a time&lt;/li&gt;
&lt;li&gt;raw LLM prompting without structure can sound smart while being operationally unreliable&lt;/li&gt;
&lt;li&gt;database inspection is often disconnected from code inspection&lt;/li&gt;
&lt;li&gt;UI behavior, backend flow, and schema meaning are rarely analyzed together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In real maintenance and modernization work, that gap hurts.&lt;/p&gt;

&lt;p&gt;You are not just trying to read code.&lt;br&gt;&lt;br&gt;
You are trying to reconstruct intent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;The project became a Python-based analysis workbench focused on legacy systems, especially codebases where behavior is spread across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PHP files&lt;/li&gt;
&lt;li&gt;includes&lt;/li&gt;
&lt;li&gt;facades and models&lt;/li&gt;
&lt;li&gt;SQL Server schemas and procedures&lt;/li&gt;
&lt;li&gt;UI-triggered backend flows&lt;/li&gt;
&lt;li&gt;structural artifacts like GraphML and domain maps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;don't ask AI to guess the system&lt;br&gt;&lt;br&gt;
first extract structure, then let AI comment on something real&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That principle shaped the whole tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core capabilities
&lt;/h2&gt;

&lt;p&gt;The workbench combines multiple analysis layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;static code scanning for risky and suspicious patterns&lt;/li&gt;
&lt;li&gt;method and dependency tracing&lt;/li&gt;
&lt;li&gt;include resolution&lt;/li&gt;
&lt;li&gt;SQL Server schema inspection&lt;/li&gt;
&lt;li&gt;stored procedure analysis&lt;/li&gt;
&lt;li&gt;UI flow analysis from HTML and JavaScript surfaces&lt;/li&gt;
&lt;li&gt;domain map generation from structural artifacts&lt;/li&gt;
&lt;li&gt;AI commentary with prompt templates and response caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of running isolated scripts, I can move through the system with a more connected workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI is in the loop
&lt;/h2&gt;

&lt;p&gt;I did not want AI to replace analysis.&lt;/p&gt;

&lt;p&gt;I wanted it to amplify analysis.&lt;/p&gt;

&lt;p&gt;The difference matters.&lt;/p&gt;

&lt;p&gt;If you throw raw code at an LLM and ask "explain this system", you may get polished nonsense.&lt;br&gt;&lt;br&gt;
If you first extract methods, dependencies, SQL blocks, tables, actions, and context, then AI has something solid to work with.&lt;/p&gt;

&lt;p&gt;In this project, AI becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a technical commentator&lt;/li&gt;
&lt;li&gt;a summarizer of structured findings&lt;/li&gt;
&lt;li&gt;a helper for generating readable reports&lt;/li&gt;
&lt;li&gt;an assistant for identifying risks and improvement opportunities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not an oracle.&lt;br&gt;&lt;br&gt;
A tool.&lt;/p&gt;

&lt;p&gt;That distinction is one of the most important lessons I keep learning in applied AI engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some design decisions I care about
&lt;/h2&gt;

&lt;p&gt;A few things made this project much better than a simple "LLM + code" experiment.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Structured before generative
&lt;/h3&gt;

&lt;p&gt;The system extracts real artifacts before asking for commentary.&lt;/p&gt;

&lt;p&gt;That includes things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;method signatures&lt;/li&gt;
&lt;li&gt;dependency trees&lt;/li&gt;
&lt;li&gt;SQL fragments&lt;/li&gt;
&lt;li&gt;table metadata&lt;/li&gt;
&lt;li&gt;UI actions&lt;/li&gt;
&lt;li&gt;procedure summaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduces hallucination risk and improves signal quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Caching AI outputs
&lt;/h3&gt;

&lt;p&gt;If an analysis has already been generated for the same structured input, the tool can reuse it.&lt;/p&gt;

&lt;p&gt;That saves cost, reduces latency, and makes the workflow more practical during repeated investigation.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Multiple analysis surfaces
&lt;/h3&gt;

&lt;p&gt;Legacy understanding is not only about code files.&lt;/p&gt;

&lt;p&gt;Sometimes the truth is in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a table relationship&lt;/li&gt;
&lt;li&gt;a stored procedure&lt;/li&gt;
&lt;li&gt;an include chain&lt;/li&gt;
&lt;li&gt;a UI event&lt;/li&gt;
&lt;li&gt;naming patterns in domain entities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool had to support that reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Markdown-first outputs
&lt;/h3&gt;

&lt;p&gt;I wanted outputs that humans could read, share, compare, and refine.&lt;/p&gt;

&lt;p&gt;So a lot of the workflow is oriented around report generation instead of opaque internal state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised me
&lt;/h2&gt;

&lt;p&gt;The most interesting part was realizing that legacy analysis itself can be treated as a product problem.&lt;/p&gt;

&lt;p&gt;Not a script problem.&lt;br&gt;&lt;br&gt;
Not a one-time debugging problem.&lt;/p&gt;

&lt;p&gt;A product problem.&lt;/p&gt;

&lt;p&gt;Because the real value is not just "finding a file".&lt;br&gt;&lt;br&gt;
It is building a repeatable way to turn unknown systems into understandable systems.&lt;/p&gt;

&lt;p&gt;That changes how you think about tooling.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this project is not
&lt;/h2&gt;

&lt;p&gt;It is not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a fully autonomous agent&lt;/li&gt;
&lt;li&gt;a universal code intelligence platform&lt;/li&gt;
&lt;li&gt;a replacement for engineers with domain knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is a workbench.&lt;/p&gt;

&lt;p&gt;A serious one, I hope.&lt;/p&gt;

&lt;p&gt;Its job is to help engineers think better and move faster in ugly, under-documented systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I made a public version
&lt;/h2&gt;

&lt;p&gt;The original tool came from a real internal context, so the public repository is a sanitized case study.&lt;/p&gt;

&lt;p&gt;I removed environment-specific paths, generated artifacts, internal identifiers, and project-specific traces.&lt;br&gt;&lt;br&gt;
But I kept the architecture, the workflow ideas, and the engineering intent.&lt;/p&gt;

&lt;p&gt;Because I think this is a problem many teams have:&lt;/p&gt;

&lt;p&gt;how do we understand legacy systems with more rigor and less guesswork?&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;I like building applications.&lt;/p&gt;

&lt;p&gt;But more and more, I also like building the tools that help engineers understand, migrate, and modernize complex systems.&lt;/p&gt;

&lt;p&gt;This project sits right in that space.&lt;/p&gt;

&lt;p&gt;If you work with legacy code, reverse engineering, modernization, or AI-assisted development, I’d love to hear how you approach this problem.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/eremitaio79/legacy-analysis-workbench" rel="noopener noreferrer"&gt;legacy-analysis-workbench&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>showdev</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
