<?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: Dan-Cristian Podina</title>
    <description>The latest articles on DEV Community by Dan-Cristian Podina (@dancristian_podina_0b537).</description>
    <link>https://dev.to/dancristian_podina_0b537</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%2F1823882%2Ff6fbfaf2-a29a-4abc-8632-12ab2df1b4c0.png</url>
      <title>DEV Community: Dan-Cristian Podina</title>
      <link>https://dev.to/dancristian_podina_0b537</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dancristian_podina_0b537"/>
    <language>en</language>
    <item>
      <title>Is my AI-built codebase well designed? Count the files each change touches (2026)</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Tue, 01 Sep 2026 14:46:31 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/is-my-ai-built-codebase-well-designed-count-the-files-each-change-touches-2026-480k</link>
      <guid>https://dev.to/dancristian_podina_0b537/is-my-ai-built-codebase-well-designed-count-the-files-each-change-touches-2026-480k</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/files-touched-per-change-ai-built-codebase/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Count how many files each small change touches. That number, already in your git history, is the one design signal a non-engineer can read without reading code: if a one-sentence change (rename a field, change a price, add a column) touches three or four files, the parts of your app are still separable; if it touches fifteen, everything is wired to everything, and every future change costs more. Lines of code tell you how much was written. Files per change tells you how well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The measurement, why it works, and what to do with it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run&lt;/strong&gt; &lt;code&gt;git log --shortstat&lt;/code&gt; on the last ten changes and read the "files changed" number&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three or four&lt;/strong&gt; per small change: parts are separable. &lt;strong&gt;Ten or more&lt;/strong&gt;, routinely: tangled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is the artifact, not the agent&lt;/strong&gt;: the one number a coding tool cannot grade for itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Research since 1998&lt;/strong&gt; ties files that change together to design decay and to defects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-built code trends the wrong way&lt;/strong&gt;: duplication up, refactoring down (GitClear, January 2026)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High number is a fix pass&lt;/strong&gt;, not a rebuild: consolidate one feature at a time&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The question, and why "lines" cannot answer it
&lt;/h2&gt;

&lt;p&gt;A founder building an agentic app asked his network in public this summer: can an AI-built app be well architected, and how would a non-engineer know? He could inspect tests, modules and latency, but every inspection meant asking an agent to grade its own homework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The answer is a measurement of the artifact, not a report from the agent.&lt;/strong&gt; Lines of code fail because AI tools inflate them. GitClear's &lt;a href="https://www.gitclear.com/the_ai_code_quality_maintainability_gap" rel="noopener noreferrer"&gt;Maintainability Gap study, January 2026&lt;/a&gt;, across 623 million changes, found duplicated lines per thousand changes rose from 40.3 in 2023 to 73.0 in 2026, moved (refactored) code fell from 21% of changed lines in 2022 to 3.8%, and cross-file function calls dropped 35%. A codebase can triple in size and get worse.&lt;/p&gt;

&lt;p&gt;Files touched per change captures what those trends do to you: when logic is duplicated, one business change has to be made in every copy.&lt;/p&gt;

&lt;h2&gt;
  
  
  The measurement
&lt;/h2&gt;

&lt;p&gt;If the app is on Lovable, Replit or Bolt, connect or export the project to GitHub first; the history is then a terminal command away. Four numbers are worth reading, and none requires understanding the code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Files per change
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git log --shortstat -20&lt;/code&gt; prints one "N files changed" line per commit. Read the N for changes that were small in business terms. This is the headline number.&lt;/p&gt;

&lt;h3&gt;
  
  
  The file in every commit
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git log --name-only --pretty=format: | sort | uniq -c | sort -rn | head&lt;/code&gt; lists the most-changed files. One file at the top of every commit is the God File from &lt;a href="https://systemtrails.com/resources/audited-50-ai-codebases/" rel="noopener noreferrer"&gt;the five patterns&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Files that travel together
&lt;/h3&gt;

&lt;p&gt;Two files that appear in the same commits 70% of the time have a dependency nobody drew. CodeScene calls this &lt;a href="https://docs.enterprise.codescene.io/versions/3.4.0/guides/technical/temporal-coupling.html" rel="noopener noreferrer"&gt;temporal coupling&lt;/a&gt; and reports it as a percentage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lines per change
&lt;/h3&gt;

&lt;p&gt;Google's guide calls &lt;a href="https://google.github.io/eng-practices/review/developer/small-cls.html" rel="noopener noreferrer"&gt;100 lines a reasonable change and 1,000 usually too large&lt;/a&gt;. GitGuardian found Claude Code commits are often &lt;a href="https://blog.gitguardian.com/the-state-of-secrets-sprawl-2026/" rel="noopener noreferrer"&gt;twice the size of human-only ones&lt;/a&gt;, which is where secrets slip in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this number has held up since 1998
&lt;/h2&gt;

&lt;p&gt;John Ousterhout named the symptom in &lt;em&gt;A Philosophy of Software Design&lt;/em&gt;: &lt;strong&gt;change amplification&lt;/strong&gt;, when &lt;a href="https://en.wikiversity.org/wiki/Software_Design/Change_amplification" rel="noopener noreferrer"&gt;"a seemingly simple change requires code modifications in many different places"&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The research is older than the book. Gall, Hajek and Jazayeri showed in &lt;a href="https://www.ifi.uzh.ch/dam/jcr:00000000-2f41-7b40-ffff-fffff06866e1/gall03.pdf" rel="noopener noreferrer"&gt;1998&lt;/a&gt; that release history alone, across 20 releases of a telecom switching system, reveals logical coupling between modules that the source code does not declare, and that this coupling points to structural shortcomings. D'Ambros, Lanza and Robbes followed in &lt;a href="https://www.semanticscholar.org/paper/On-the-Relationship-Between-Change-Coupling-and-D'Ambros-Lanza/937b72f93fe2cb74549b08f1f984c0b9e723e580" rel="noopener noreferrer"&gt;2009&lt;/a&gt; by testing, on three large systems, whether change coupling correlates with defects and whether it improves bug prediction models.&lt;/p&gt;

&lt;p&gt;CodeScene turned it into a product: it flags file pairs by the percentage of commits in which they change together, requires at least 10 commits before trusting the trend, and &lt;strong&gt;ignores any commit touching more than 50 files&lt;/strong&gt; so a one-time reorganization does not count. That last rule is also your caveat: one big cleanup commit is fine; ten routine commits that each touch fifteen files are the signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the number looks like in an AI-built app
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; 14 files changed: the price is a literal in the pricing page, the checkout, the email template, two Edge Functions, the admin table, the marketing banner, and seven tests that each hardcode $49. Miss one and customers see two prices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; 2 files changed: one config entry and one test. Every screen and function reads the price from the same place. A new hire ships this on day one without asking anyone.&lt;/p&gt;

&lt;p&gt;The first version is what an AI tool produces when each feature was requested in a separate session: it re-creates what it needs rather than reusing what exists, the copy-paste-over-refactor shift GitClear measured.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you see in git&lt;/th&gt;
&lt;th&gt;What it usually means&lt;/th&gt;
&lt;th&gt;What to ask&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Small changes touch 10+ files&lt;/td&gt;
&lt;td&gt;the same logic lives in several copies&lt;/td&gt;
&lt;td&gt;"Which single file should own this?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One file in almost every commit&lt;/td&gt;
&lt;td&gt;one file runs everything&lt;/td&gt;
&lt;td&gt;"What does this file not do?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Two files always change together&lt;/td&gt;
&lt;td&gt;an undeclared dependency&lt;/td&gt;
&lt;td&gt;"Why does A need to know about B?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commits of 1,000+ lines for small features&lt;/td&gt;
&lt;td&gt;generated in bulk, never reviewed&lt;/td&gt;
&lt;td&gt;"What in here is not needed for this feature?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A change touches only tests, then only code&lt;/td&gt;
&lt;td&gt;the tests describe the app's promises&lt;/td&gt;
&lt;td&gt;good sign, keep it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The number does not tell you what to fix. It tells you where to look, and whether it is getting better.&lt;/strong&gt; Run it again after each fix pass; it should fall.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this number decides something
&lt;/h2&gt;

&lt;p&gt;The five trigger moments each ask this question in their own words. An investor's engineer in &lt;a href="https://systemtrails.com/resources/technical-due-diligence-ai-built-codebase/" rel="noopener noreferrer"&gt;technical due diligence&lt;/a&gt; checks maintainability by exactly this signal. A &lt;strong&gt;first hire&lt;/strong&gt; experiences it directly: a fifteen-file change on day three is why they leave in month two. An &lt;strong&gt;enterprise buyer's&lt;/strong&gt; security review asks how a fix would be rolled out without touching payment code. After an &lt;strong&gt;incident&lt;/strong&gt;, the fix that touched twelve files is the fix that introduced the second incident. Under &lt;strong&gt;load&lt;/strong&gt;, the file in every commit is the one that cannot be scaled independently.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The one thing to do today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open a terminal in the repo (or in the GitHub codespace) and run &lt;code&gt;git log --shortstat -10&lt;/code&gt;. Write down the ten "files changed" numbers next to a one-line description of what each change was for. If most small changes sit at three or four, keep building. If they sit at ten or more, that list is the first page of your fix plan, and the &lt;a href="https://systemtrails.com/resources/cost-to-make-ai-built-app-production-ready-2026/" rel="noopener noreferrer"&gt;cost of the pass&lt;/a&gt; is now easier to estimate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What to do with a high number
&lt;/h2&gt;

&lt;p&gt;Nothing drastic. The fix is consolidation, one feature at a time: pick the change that touched the most files, ask which single file should own the logic, move it there, and delete the copies. This is a two to three week fix pass on most AI-built apps, and the trail it leaves, one place per fact and a test that proves it, is what your first hire inherits.&lt;/p&gt;

&lt;p&gt;If you would like a senior architect to read your last ten changes and say where the tangle is, that is what the &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free teardown&lt;/a&gt; does: three findings and a verdict, recorded, within 72 hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitClear, &lt;a href="https://www.gitclear.com/the_ai_code_quality_maintainability_gap" rel="noopener noreferrer"&gt;The Maintainability Gap: 2026 AI Code Quality Research&lt;/a&gt;, January 2026 (623M changes; duplication 40.3 to 73.0 per thousand changes; moved code 21% to 3.8%; cross-file calls down 35%)&lt;/li&gt;
&lt;li&gt;GitClear, &lt;a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research" rel="noopener noreferrer"&gt;AI Copilot Code Quality: 2025 research&lt;/a&gt;, January 2025 (211M lines; copy/paste exceeded moved code for the first time in 2024)&lt;/li&gt;
&lt;li&gt;GitGuardian, &lt;a href="https://blog.gitguardian.com/the-state-of-secrets-sprawl-2026/" rel="noopener noreferrer"&gt;The State of Secrets Sprawl 2026&lt;/a&gt;, March 2026 (Claude Code commits about 2x the lines of human-only commits)&lt;/li&gt;
&lt;li&gt;John Ousterhout, &lt;em&gt;A Philosophy of Software Design&lt;/em&gt;, change amplification as summarized on &lt;a href="https://en.wikiversity.org/wiki/Software_Design/Change_amplification" rel="noopener noreferrer"&gt;Wikiversity&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gall, Hajek, Jazayeri, &lt;a href="https://www.ifi.uzh.ch/dam/jcr:00000000-2f41-7b40-ffff-fffff06866e1/gall03.pdf" rel="noopener noreferrer"&gt;Detection of Logical Coupling Based on Product Release History&lt;/a&gt;, ICSM 1998&lt;/li&gt;
&lt;li&gt;D'Ambros, Lanza, Robbes, &lt;a href="https://www.semanticscholar.org/paper/On-the-Relationship-Between-Change-Coupling-and-D'Ambros-Lanza/937b72f93fe2cb74549b08f1f984c0b9e723e580" rel="noopener noreferrer"&gt;On the Relationship Between Change Coupling and Software Defects&lt;/a&gt;, WCRE 2009&lt;/li&gt;
&lt;li&gt;CodeScene docs, &lt;a href="https://docs.enterprise.codescene.io/versions/3.4.0/guides/technical/temporal-coupling.html" rel="noopener noreferrer"&gt;Temporal Coupling&lt;/a&gt;, version 3.4.0, accessed August 31, 2026&lt;/li&gt;
&lt;li&gt;Google engineering practices, &lt;a href="https://google.github.io/eng-practices/review/developer/small-cls.html" rel="noopener noreferrer"&gt;Small CLs&lt;/a&gt;, accessed August 31, 2026&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Want this checked on your actual code? &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Free teardown&lt;/a&gt;: 3 concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>codequality</category>
      <category>aimvp</category>
      <category>git</category>
    </item>
    <item>
      <title>What does it cost to make an AI-built app production-ready in 2026?</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Tue, 01 Sep 2026 14:46:29 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/what-does-it-cost-to-make-an-ai-built-app-production-ready-in-2026-2o4f</link>
      <guid>https://dev.to/dancristian_podina_0b537/what-does-it-cost-to-make-an-ai-built-app-production-ready-in-2026-2o4f</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/cost-to-make-ai-built-app-production-ready-2026/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In 2026, making a working AI-built app production-ready costs three things: a diagnosis, which runs from $0 to about $1,500; a fixed-scope fix pass of two to three weeks, which the market prices between $2,500 and $8,000; and, if you keep a senior architect around, a retainer between $2,000 and $15,000 a month. A rebuild is quoted at $5,000 to $30,000 and is almost never the right purchase for an app that already has users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The 2026 price sheet for making an AI-built app hold, with sources dated below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Diagnosis&lt;/strong&gt;: $0 (SystemTrails teardown, 72 hours) to $199 scans to $1,500 full reviews&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix pass&lt;/strong&gt;: $2,500 to $8,000 fixed, two to three weeks; freelancer invoices average about $7,200&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Senior oversight&lt;/strong&gt;: $2,000 (SystemTrails) to $15,000 a month; fractional CTO median far above&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rebuild&lt;/strong&gt;: $5,000 to $30,000, and usually the wrong verdict&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hourly instead&lt;/strong&gt;: senior US freelancers at $95 to $150 an hour, with the estimate risk on you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why now&lt;/strong&gt;: demand for Claude Code specialists up 938% in six months, 2,000+ apps found leaking&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this price list exists now
&lt;/h2&gt;

&lt;p&gt;Three dated facts explain the market. Fiverr's &lt;a href="https://www.fiverr.com/news/business-trends-index-ai-2026" rel="noopener noreferrer"&gt;Business Trends Index, published June 9, 2026&lt;/a&gt;, shows searches for &lt;strong&gt;Claude Code specialists up 938%&lt;/strong&gt; between November 2025 and April 2026, with "vibe coding" up 61%. &lt;a href="https://thehackernews.com/2026/05/what-2000-exposed-vibe-coded-apps.html" rel="noopener noreferrer"&gt;Red Access, May 29, 2026&lt;/a&gt;, scanned 380,000 public assets on vibe-coding platforms and found 2,000+ holding sensitive corporate or personal data. And GitGuardian's &lt;a href="https://blog.gitguardian.com/the-state-of-secrets-sprawl-2026/" rel="noopener noreferrer"&gt;State of Secrets Sprawl 2026&lt;/a&gt; counted 29 million new hardcoded secrets on public GitHub in 2025, up 34%, with commits co-authored by Claude Code leaking at &lt;strong&gt;3.2% against a 1.5% human baseline&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More people built more, and more of it is now reaching the moment where it has to hold.&lt;/strong&gt; That moment has five shapes: an enterprise pilot with a security questionnaire, an investor's due diligence, a first engineering hire, an incident, or real load. Each one turns "it works" into a budget line.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three purchases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Diagnosis
&lt;/h3&gt;

&lt;p&gt;Someone senior reads the code and tells you what is wrong, in what order. Market: $199 fixed-fee scans (&lt;a href="https://vallettasoftware.com/vibe-audit" rel="noopener noreferrer"&gt;Valletta&lt;/a&gt;, 48 hours), $500 quick checks, $1,500 full reviews (&lt;a href="https://vibecoding.app/blog/vibe-coding-cleanup-cost" rel="noopener noreferrer"&gt;vibecoding.app, March 24, 2026&lt;/a&gt;). SystemTrails: &lt;strong&gt;$0, recorded, within 72 hours&lt;/strong&gt;, capped at 2 per week.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix pass
&lt;/h3&gt;

&lt;p&gt;The findings get fixed and documented. Market: $3,000 to $5,000 for review plus remediation in two to three weeks, $5,000 to $8,000 with architecture fixes and docs; agencies $3,000 to $15,000+. SystemTrails' Hardening Sprint: &lt;strong&gt;from $2,500, fixed, quoted after the teardown&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Senior oversight
&lt;/h3&gt;

&lt;p&gt;A named architect stays on to review what the AI ships next. Market: fractional CTO advisory $3,000 to $6,000 a month, embedded $8,000 to $15,000 (&lt;a href="https://www.groovyweb.co/blog/fractional-cto-cost-2026-pricing-guide" rel="noopener noreferrer"&gt;Groovyweb, April 30, 2026&lt;/a&gt;). SystemTrails' Senior Oversight Retainer: &lt;strong&gt;$2,000 a month&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 2026 numbers side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you buy&lt;/th&gt;
&lt;th&gt;Market range, 2026&lt;/th&gt;
&lt;th&gt;Source and date&lt;/th&gt;
&lt;th&gt;SystemTrails&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scan with report&lt;/td&gt;
&lt;td&gt;from $199, findings in 48 hours&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://vallettasoftware.com/vibe-audit" rel="noopener noreferrer"&gt;Valletta&lt;/a&gt;, page current July 2026&lt;/td&gt;
&lt;td&gt;Free teardown, 72 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quick security check&lt;/td&gt;
&lt;td&gt;$500, 1 to 3 days&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://vibecoding.app/blog/vibe-coding-cleanup-cost" rel="noopener noreferrer"&gt;vibecoding.app&lt;/a&gt;, March 24, 2026&lt;/td&gt;
&lt;td&gt;included in the teardown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full review with priorities&lt;/td&gt;
&lt;td&gt;$1,500, 5 to 7 business days&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;Free teardown: 3 ranked findings plus verdict&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Review plus hands-on fixes&lt;/td&gt;
&lt;td&gt;$3,000 to $5,000, 2 to 3 weeks&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;Hardening Sprint from $2,500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cleanup with architecture and docs&lt;/td&gt;
&lt;td&gt;$5,000 to $8,000, 3 to 6 weeks&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;Hardening Sprint, scoped after teardown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Senior agency, 12-page report, 18 checks&lt;/td&gt;
&lt;td&gt;from $2,500&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://vibecoding.app/blog/best-vibe-code-audit-agencies" rel="noopener noreferrer"&gt;Beesoul via vibecoding.app roundup&lt;/a&gt;, 2026&lt;/td&gt;
&lt;td&gt;comparable tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise security firm&lt;/td&gt;
&lt;td&gt;$8,000 to $15,000+&lt;/td&gt;
&lt;td&gt;vibecoding.app, March 24, 2026&lt;/td&gt;
&lt;td&gt;not the same product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rebuild&lt;/td&gt;
&lt;td&gt;$5,000 to $30,000&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://hatchworks.com/blog/gendd/cost-of-vibe-coding/" rel="noopener noreferrer"&gt;HatchWorks&lt;/a&gt;, April 13, 2026&lt;/td&gt;
&lt;td&gt;we do not pitch rebuilds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fractional CTO, advisory&lt;/td&gt;
&lt;td&gt;$3,000 to $6,000 a month&lt;/td&gt;
&lt;td&gt;Groovyweb, April 30, 2026&lt;/td&gt;
&lt;td&gt;Retainer $2,000 a month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fractional CTO, embedded&lt;/td&gt;
&lt;td&gt;$8,000 to $15,000 a month&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;Retainer $2,000 a month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Senior US freelancer&lt;/td&gt;
&lt;td&gt;$95 to $150 an hour&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://arc.dev/employer-blog/freelance-developers-cost/" rel="noopener noreferrer"&gt;Arc&lt;/a&gt;, May 26, 2026&lt;/td&gt;
&lt;td&gt;fixed prices only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The same March 2026 pricing guide puts the &lt;strong&gt;typical solo founder spend at $1,500 to $5,000&lt;/strong&gt; and the average completed freelancer invoice for a full project at about $7,200. Read those two numbers together: the founder who buys a scan and then fixes things one at a time often ends up at the higher figure.&lt;/p&gt;

&lt;h2&gt;
  
  
  What moves the price inside the range
&lt;/h2&gt;

&lt;p&gt;The quote for a fix pass depends on what the teardown finds, not on the size of the app. Four things move it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Secrets and keys
&lt;/h3&gt;

&lt;p&gt;A leaked Supabase secret key or Stripe key means rotation, an incident note, and a search of the git history. Cheap to do, expensive to skip. The &lt;a href="https://systemtrails.com/resources/lovable-app-secure-six-checks-before-launch/" rel="noopener noreferrer"&gt;Lovable pre-launch checks&lt;/a&gt; cover the 60-second test.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data isolation
&lt;/h3&gt;

&lt;p&gt;Missing or permissive row-level security across many tables is the single largest line item, because each policy has to be read against what the product actually promises.&lt;/p&gt;

&lt;h3&gt;
  
  
  Structure
&lt;/h3&gt;

&lt;p&gt;One giant file and no tests raise the cost of every other fix, since nothing can be changed safely until the first tests exist. This is where the "3x technical debt rate" HatchWorks cites for ungoverned AI development shows up as hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evidence required
&lt;/h3&gt;

&lt;p&gt;A security questionnaire or a due-diligence data room needs written artifacts: architecture map, restore log, dependency scan. Producing them is part of the pass, not an extra.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixed price or hourly
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; $95 to $150 an hour. Estimating a hardening pass on code nobody has read is guesswork, so the overrun is yours. 20 hours becomes 60, and the first invoice arrives before the first finding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; The person quoting has already recorded a walkthrough of your code. The number is published, the scope is written, and the deliverable includes the trail: tests, runbook, map. Overruns are the architect's problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The teardown exists so the fixed price is honest.&lt;/strong&gt; A scope written before anyone has seen the code is either padded or wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the money goes by trigger
&lt;/h2&gt;

&lt;p&gt;Each trigger moment buys a different slice of the same work. An &lt;strong&gt;enterprise pilot&lt;/strong&gt; needs the questionnaire answered with evidence in weeks, so the fix pass front-loads security and the documents. &lt;strong&gt;Due diligence&lt;/strong&gt; needs the &lt;a href="https://systemtrails.com/resources/technical-due-diligence-ai-built-codebase/" rel="noopener noreferrer"&gt;five things a 2026 reviewer asks for&lt;/a&gt;, and investors can buy their own read at $1,500. A &lt;strong&gt;first hire&lt;/strong&gt; needs the map and the tests, or the hire leaves. An &lt;strong&gt;incident&lt;/strong&gt; needs the key rotated today and the cause fixed this week. &lt;strong&gt;Scale pain&lt;/strong&gt; needs the smallest performance pass that makes the app hold at ten times the load.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The one thing to do today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do not buy a fix pass from anyone who has not seen the code. Get a diagnosis with a written fix-or-rebuild verdict first; the market prices that at $0 to $1,500 and it takes days, not weeks. If the verdict says rebuild, ask for the specific requirement the current platform cannot meet. If nobody can name one, it is a fix.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What "production-ready" buys you
&lt;/h2&gt;

&lt;p&gt;The money is not spent on making the app work; it already works. It is spent on making it hold when someone else looks: the buyer's security team, the investor's engineer, your first hire, or the traffic spike. The trail they find, tests, policies, a restore date, a map, is what the price above pays for.&lt;/p&gt;

&lt;p&gt;If you want the diagnosis first, the &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free teardown&lt;/a&gt; is three ranked findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fiverr, &lt;a href="https://www.fiverr.com/news/business-trends-index-ai-2026" rel="noopener noreferrer"&gt;Business Trends Index: Businesses Race to Hire Claude Code Specialists As Demand Surges 938%&lt;/a&gt;, June 9, 2026&lt;/li&gt;
&lt;li&gt;The Hacker News on Red Access, &lt;a href="https://thehackernews.com/2026/05/what-2000-exposed-vibe-coded-apps.html" rel="noopener noreferrer"&gt;"The Shadow Builders"&lt;/a&gt;, May 29, 2026&lt;/li&gt;
&lt;li&gt;GitGuardian, &lt;a href="https://blog.gitguardian.com/the-state-of-secrets-sprawl-2026/" rel="noopener noreferrer"&gt;The State of Secrets Sprawl 2026&lt;/a&gt;, March 2026&lt;/li&gt;
&lt;li&gt;vibecoding.app, &lt;a href="https://vibecoding.app/blog/vibe-coding-cleanup-cost" rel="noopener noreferrer"&gt;Vibe Code Cleanup Cost: Real Pricing for 2026&lt;/a&gt;, March 24, 2026&lt;/li&gt;
&lt;li&gt;vibecoding.app, &lt;a href="https://vibecoding.app/blog/best-vibe-code-audit-agencies" rel="noopener noreferrer"&gt;Best Vibe Code Audit Agencies (2026)&lt;/a&gt;, 2026 (Beesoul: from $2,500, 18 checks, 8 to 14 issues per app)&lt;/li&gt;
&lt;li&gt;Valletta Software, &lt;a href="https://vallettasoftware.com/vibe-audit" rel="noopener noreferrer"&gt;Vibe Coding Audit&lt;/a&gt;, page references July 2026 (from $199, 48 hours, remediation 6 to 8 weeks typical)&lt;/li&gt;
&lt;li&gt;HatchWorks, &lt;a href="https://hatchworks.com/blog/gendd/cost-of-vibe-coding/" rel="noopener noreferrer"&gt;The Real Cost of Vibe Coding in 2026&lt;/a&gt;, April 13, 2026&lt;/li&gt;
&lt;li&gt;Groovyweb, &lt;a href="https://www.groovyweb.co/blog/fractional-cto-cost-2026-pricing-guide" rel="noopener noreferrer"&gt;Fractional CTO Cost in 2026&lt;/a&gt;, April 30, 2026&lt;/li&gt;
&lt;li&gt;Arc, &lt;a href="https://arc.dev/employer-blog/freelance-developers-cost/" rel="noopener noreferrer"&gt;Freelance Developer Rates in 2026&lt;/a&gt;, May 26, 2026&lt;/li&gt;
&lt;li&gt;SystemTrails prices: &lt;a href="https://systemtrails.com/pricing/" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;, current August 31, 2026&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Want this checked on your actual code? &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Free teardown&lt;/a&gt;: 3 concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

</description>
      <category>pricing</category>
      <category>aimvp</category>
      <category>hardening</category>
      <category>fractionalcto</category>
    </item>
    <item>
      <title>Before you raise: what technical due diligence asks of an AI-built codebase (2026)</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Fri, 28 Aug 2026 13:11:03 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/before-you-raise-what-technical-due-diligence-asks-of-an-ai-built-codebase-2026-59bl</link>
      <guid>https://dev.to/dancristian_podina_0b537/before-you-raise-what-technical-due-diligence-asks-of-an-ai-built-codebase-2026-59bl</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/technical-due-diligence-ai-built-codebase/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Technical due diligence on an AI-built codebase in 2026 asks five questions: does anyone on the team understand the code, is it secure today, can it be restored after a bad day, can it be maintained by someone who did not write it, and what breaks if the founder leaves. Reviewers no longer ask whether AI wrote it. They ask for evidence that a human made it hold, and that evidence takes two to three weeks to prepare.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Five questions a 2026 review asks of an AI-built product, and the evidence that answers each:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Comprehension over provenance&lt;/strong&gt;: someone walks the reviewer through auth, payments and data access from the code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security posture&lt;/strong&gt;: row-level security, secrets out of the bundle, a dependency scan, findings already fixed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separation and recoverability&lt;/strong&gt;: staging and production are different databases, and a restore has a date&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintainability&lt;/strong&gt;: tests, CI, low duplication, changes that touch a few files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key-person risk&lt;/strong&gt;: a new senior engineer could ship in week one from the docs alone&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How a reviewer walks your codebase
&lt;/h2&gt;

&lt;p&gt;The review is a sequence, not a scan. Each step opens the next; a "no" at any step becomes a finding in the memo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the question changed
&lt;/h2&gt;

&lt;p&gt;In March 2025, Y Combinator managing partner Jared Friedman said that for a quarter of the W25 batch, &lt;strong&gt;95% of the codebase was AI-generated&lt;/strong&gt;, and that those founders were technically capable of writing it themselves (&lt;a href="https://techcrunch.com/2025/03/06/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated/" rel="noopener noreferrer"&gt;TechCrunch, 6 March 2025&lt;/a&gt;). Eighteen months later that is the default, and reviewers have adjusted.&lt;/p&gt;

&lt;p&gt;The current framing from due-diligence practitioners is blunt: the first question is no longer "is the code good?" but &lt;strong&gt;"does anyone here understand it?"&lt;/strong&gt; A two-person team can now ship a codebase with the surface area of a fifty-person organization, which breaks the old assumption that team quality predicts code quality (&lt;a href="https://justinmckelvey.com/blog/technical-due-diligence" rel="noopener noreferrer"&gt;Justin McKelvey, Technical Due Diligence in 2026, 10 August 2026&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  The five questions, and the evidence for each
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Comprehension over provenance
&lt;/h3&gt;

&lt;p&gt;Who can explain the auth, payment and data-access paths from the code, without the AI chat history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence:&lt;/strong&gt; an architecture map and a 20-minute recorded walkthrough of the three paths.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security posture
&lt;/h3&gt;

&lt;p&gt;What the app does when nobody is logged in. Row-level security, secrets, dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence:&lt;/strong&gt; RLS proven by a test, service-role key absent from the bundle, a dated scan, and the findings you already fixed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Separation and recoverability
&lt;/h3&gt;

&lt;p&gt;Whether staging and production share a database, who holds production write access, and when you last restored.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence:&lt;/strong&gt; an environment diagram with credential boundaries and a restore log with a date and a duration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Maintainability
&lt;/h3&gt;

&lt;p&gt;How expensive the next change is: tests, CI, duplication, files touched per change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence:&lt;/strong&gt; CI green on main, a tenant-isolation test, and the duplication you already consolidated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key-person risk
&lt;/h3&gt;

&lt;p&gt;What happens if the founder leaves. The tools do not remember why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence:&lt;/strong&gt; a README that is true, the map, a deploy-and-restore runbook, a decisions log.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time to prepare
&lt;/h3&gt;

&lt;p&gt;Two to three weeks for a product that already works and has users. No rewrite. Every step produces a document the reviewer asks for anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Comprehension: can you walk me through it?
&lt;/h2&gt;

&lt;p&gt;The first hour of a good technical review is a conversation. The reviewer picks three paths, typically sign-in, the money path, and "show me how user A cannot see user B's data," and asks the person who built it to explain them &lt;strong&gt;from the code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI-built codebases fail this in a specific way. McKelvey's list of tells is exact: five different patterns solving one problem, comments that describe rather than explain, and authentication that "works until two people log in."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; The founder explains what the app does and opens the AI chat to find how. Three patterns for one problem, no map, nobody can say where the session is validated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; The founder opens the repo, points at the middleware that validates the session, the query that scopes by tenant, and the webhook that reconciles payments. One page architecture map on the table.&lt;/p&gt;

&lt;p&gt;Dan's &lt;a href="https://systemtrails.com/resources/architecture-map-template/" rel="noopener noreferrer"&gt;free architecture map template&lt;/a&gt; is a format reviewers accept.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Security posture: what does the code do when nobody is logged in?
&lt;/h2&gt;

&lt;p&gt;The base rate is not on your side. Veracode's 2025 GenAI Code Security Report tested more than 100 large language models in four languages and found that &lt;strong&gt;45% of generated code samples introduced an OWASP Top 10 vulnerability&lt;/strong&gt;; for cross-site scripting the failure rate was 86%, and Java samples failed 72% of the time (&lt;a href="https://www.veracode.com/blog/genai-code-security-report/" rel="noopener noreferrer"&gt;Veracode, 30 July 2025&lt;/a&gt;). A reviewer therefore assumes generated code was not secure by default and looks for proof that someone checked.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The reference incident: CVE-2025-48757&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lovable-generated apps called Supabase directly from the browser and relied entirely on row-level security, which was often missing. Researcher Matt Palmer found &lt;strong&gt;303 endpoints across 170 projects&lt;/strong&gt; exposing usernames, emails, phone numbers, payment status and API keys. Discovered 20 March 2025, disclosed 29 May 2025 (&lt;a href="https://mattpalmer.io/posts/2025/05/CVE-2025-48757/" rel="noopener noreferrer"&gt;disclosure&lt;/a&gt;, &lt;a href="https://www.superblocks.com/blog/lovable-vulnerabilities" rel="noopener noreferrer"&gt;Superblocks write-up&lt;/a&gt;). Reviewers know this case. The first thing they try on a Supabase-backed app is a read with the anonymous key.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What the reviewer tries&lt;/th&gt;
&lt;th&gt;What proves you are fine&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reads a table with the anonymous key&lt;/td&gt;
&lt;td&gt;RLS enabled on every table, and a test that fails if it is not&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Searches the client bundle for &lt;code&gt;service_role&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;The key is server-side only; the bundle search comes back empty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Asks for the last dependency scan&lt;/td&gt;
&lt;td&gt;A scan output with a date, and the fixes committed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Asks what you found yourselves&lt;/td&gt;
&lt;td&gt;A short list of three real findings you already fixed, with commits&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A team that found and fixed three real issues reads as competent. A clean scan with no history reads as untested.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Separation and recoverability: what happens on the bad day?
&lt;/h2&gt;

&lt;p&gt;On 18 July 2025, during a documented code freeze, Replit's agent deleted the production database of a SaaStr application holding records on about 1,200 executives and companies, then reported that rollback was impossible when it was not (&lt;a href="https://www.theregister.com/2025/07/21/replit_saastr_vibe_coding_incident/" rel="noopener noreferrer"&gt;The Register, 21 July 2025&lt;/a&gt;). The founder's own diagnosis afterwards is the one a reviewer gives: &lt;strong&gt;nothing may overwrite a production database&lt;/strong&gt;, and preview, staging and production must be cleanly separated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; One database for preview and production. The AI tool and the deploy pipeline both hold production write credentials. Backups exist in theory; nobody has restored one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; Staging and production are different databases with different credentials. No agent holds production write access. A restore was run on a known date and took a known number of minutes.&lt;/p&gt;

&lt;p&gt;If you have never restored, do it once before the data room opens: half a day of work that turns the most uncomfortable question in the review into a paragraph.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Maintainability: how expensive is the next change?
&lt;/h2&gt;

&lt;p&gt;Investors price the next twelve months of engineering, and AI-generated code has a measurable signature. GitClear's analysis of 211 million changed lines from 2020 to 2024 found copy-pasted code rising from &lt;strong&gt;8.3% to 12.3%&lt;/strong&gt; of changed lines while refactored code fell from &lt;strong&gt;25% to under 10%&lt;/strong&gt; (&lt;a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research" rel="noopener noreferrer"&gt;GitClear, 2025&lt;/a&gt;). In practice: the same validation logic in six places, and one rule change touches all of them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal the reviewer checks&lt;/th&gt;
&lt;th&gt;Weak&lt;/th&gt;
&lt;th&gt;Strong&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tests&lt;/td&gt;
&lt;td&gt;None, or not run anywhere&lt;/td&gt;
&lt;td&gt;Run in CI on every push, cover the money path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Files touched by a small change&lt;/td&gt;
&lt;td&gt;Ten to fifteen&lt;/td&gt;
&lt;td&gt;Two or three&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ways to do one thing&lt;/td&gt;
&lt;td&gt;Five patterns for validation&lt;/td&gt;
&lt;td&gt;One, reused&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duplication&lt;/td&gt;
&lt;td&gt;Same logic copy-pasted across modules&lt;/td&gt;
&lt;td&gt;Consolidated, with the commits that did it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;An enterprise security questionnaire and a new engineer's first week fail on exactly the same missing pieces.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Key-person risk: what if you leave?
&lt;/h2&gt;

&lt;p&gt;The team is usually one or two people, and the tools do not remember why. Developers themselves are cautious here: Stack Overflow's 2025 survey of over 49,000 developers found &lt;strong&gt;84% using or planning to use AI tools, while 46% distrust the accuracy&lt;/strong&gt; of the output and 66% name "almost right, but not quite" solutions as their top frustration (&lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;Stack Overflow Developer Survey 2025&lt;/a&gt;). Reviewers apply the same caution to a codebase whose only documentation is a chat transcript.&lt;/p&gt;

&lt;p&gt;The question is simple: &lt;strong&gt;could a senior engineer you hire next month ship a real change in week one using only what is in the repo?&lt;/strong&gt; If the answer depends on you being in the room, that is the finding.&lt;/p&gt;

&lt;h3&gt;
  
  
  A README that is true
&lt;/h3&gt;

&lt;p&gt;How to run it, how to deploy it, where the secrets live, what is deliberately not done yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  The architecture map
&lt;/h3&gt;

&lt;p&gt;Systems, data stores, external services, and the boundaries between them, on one page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy and restore runbook
&lt;/h3&gt;

&lt;p&gt;The exact steps, the last time each was run, and how long it took.&lt;/p&gt;

&lt;h3&gt;
  
  
  The decisions log
&lt;/h3&gt;

&lt;p&gt;Why Supabase, why this auth provider, what you skipped and why. The part no chat transcript keeps.&lt;/p&gt;

&lt;p&gt;This is the trail a senior architect leaves after a hardening pass, and the same trail that keeps your first hire.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three weeks before the data room
&lt;/h2&gt;

&lt;p&gt;Nothing above requires a rewrite. For an AI-built product that already works, the preparation is a fixed-scope hardening pass:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Work&lt;/th&gt;
&lt;th&gt;Document it produces&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Fix the top security findings; prove isolation with a test; get the service-role key out of the client&lt;/td&gt;
&lt;td&gt;Findings-and-fixes list with commits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Separate staging from production; rotate credentials; run and time a restore&lt;/td&gt;
&lt;td&gt;Environment diagram, restore log&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Consolidate the worst duplication; get CI green; write the map, README and runbook&lt;/td&gt;
&lt;td&gt;Architecture map, runbook, decisions log&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you do one thing today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run a restore from your most recent backup into a scratch database and write down the date and how long it took. It is the cheapest sentence in the whole data room, and almost nobody has it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The same preparation answers the other four trigger moments: the enterprise pilot's security questionnaire, the first engineering hire, the first real incident, and the first week of scale pain all ask for this evidence in a different order.&lt;/p&gt;

&lt;p&gt;If you want senior eyes on your actual code before an investor's, that is what the &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free teardown&lt;/a&gt; is: three concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TechCrunch, "A quarter of startups in YC's current cohort have codebases that are almost entirely AI-generated", 6 March 2025: &lt;a href="https://techcrunch.com/2025/03/06/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated/" rel="noopener noreferrer"&gt;https://techcrunch.com/2025/03/06/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Justin McKelvey, "Technical Due Diligence in 2026: Checklist + the AI-Code Question", 10 August 2026: &lt;a href="https://justinmckelvey.com/blog/technical-due-diligence" rel="noopener noreferrer"&gt;https://justinmckelvey.com/blog/technical-due-diligence&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Veracode, "2025 GenAI Code Security Report", 30 July 2025: &lt;a href="https://www.veracode.com/blog/genai-code-security-report/" rel="noopener noreferrer"&gt;https://www.veracode.com/blog/genai-code-security-report/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Matt Palmer, "CVE-2025-48757" disclosure, 29 May 2025: &lt;a href="https://mattpalmer.io/posts/2025/05/CVE-2025-48757/" rel="noopener noreferrer"&gt;https://mattpalmer.io/posts/2025/05/CVE-2025-48757/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Superblocks, "Lovable Vulnerability Explained: How 170+ Apps Were Exposed": &lt;a href="https://www.superblocks.com/blog/lovable-vulnerabilities" rel="noopener noreferrer"&gt;https://www.superblocks.com/blog/lovable-vulnerabilities&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Register, "Vibe coding service Replit deleted user's production database", 21 July 2025: &lt;a href="https://www.theregister.com/2025/07/21/replit_saastr_vibe_coding_incident/" rel="noopener noreferrer"&gt;https://www.theregister.com/2025/07/21/replit_saastr_vibe_coding_incident/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitClear, "AI Copilot Code Quality: 2025 Data Suggests 4x Growth in Code Clones" (211M changed lines, 2020 to 2024): &lt;a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research" rel="noopener noreferrer"&gt;https://www.gitclear.com/ai_assistant_code_quality_2025_research&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stack Overflow, "2025 Developer Survey: AI": &lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;https://survey.stackoverflow.co/2025/ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SystemTrails, "The Architecture Map Every AI-Built Startup Needs": /resources/architecture-map-template/&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Want this checked on your actual code? &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Free teardown&lt;/a&gt;: 3 concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

</description>
      <category>duediligence</category>
      <category>fundraising</category>
      <category>aimvp</category>
      <category>security</category>
    </item>
    <item>
      <title>What Is a Vibe Code Audit? (And What a Real One Should Cover)</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Fri, 28 Aug 2026 12:53:13 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/what-is-a-vibe-code-audit-and-what-a-real-one-should-cover-4enn</link>
      <guid>https://dev.to/dancristian_podina_0b537/what-is-a-vibe-code-audit-and-what-a-real-one-should-cover-4enn</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/what-is-a-vibe-code-audit/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;vibe code audit&lt;/strong&gt; is a review of an app built with AI coding tools (Cursor, Claude Code, Copilot, Bolt, Lovable...) by someone who reads the actual code and tells you, in plain English:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What you actually have&lt;/strong&gt; — a map of the system the AI built for you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What's risky&lt;/strong&gt; — security holes, silent failures, things that break under load&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What to fix first&lt;/strong&gt; — a ranked list, not a 40-page dump&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A real audit covers security, architecture, data handling, and handover-readiness. Automated scans catch some of the first category and none of the rest.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this is suddenly a thing
&lt;/h2&gt;

&lt;p&gt;AI coding tools made it possible to build a working product without knowing how it works. That's genuinely great — until the first moment you need to &lt;em&gt;trust&lt;/em&gt; the thing: real users, real payments, real data, a first hire, an investor's due-diligence call.&lt;/p&gt;

&lt;p&gt;At that moment founders discover an uncomfortable truth: &lt;strong&gt;"it works" and "it's sound" are different claims.&lt;/strong&gt; The app demos beautifully. Whether it leaks API keys, loses data on a failed payment, or collapses at 500 users — nobody knows, because nobody ever looked.&lt;/p&gt;

&lt;p&gt;A vibe code audit is somebody looking.&lt;/p&gt;




&lt;h2&gt;
  
  
  What a real audit covers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;Exposed API keys, missing input validation, unprotected routes, auth shortcuts the AI took to make the demo work. This is the category that can hurt you &lt;strong&gt;today&lt;/strong&gt;, not at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;What the pieces are, how they connect, and where the God Files and mystery couplings live. This is what decides whether change #50 takes an afternoon or a week.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data handling
&lt;/h3&gt;

&lt;p&gt;Where user data lives, what happens when a write fails halfway, whether there are backups, and what you're sending to third parties without realizing it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Handover-readiness
&lt;/h3&gt;

&lt;p&gt;Could a developer you hire tomorrow understand this system? Is there a map, or is the only entity that understands your app an AI session that no longer exists?&lt;/p&gt;

&lt;p&gt;If an "audit" only covers the first box, it's a security scan. Useful — but it won't tell you why your app got slower, why every change breaks something else, or why the senior developer you tried to hire noped out after seeing the repo.&lt;/p&gt;




&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Rough shape of the market:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated scanners&lt;/strong&gt; — free to low cost. They pattern-match known vulnerability shapes. Good hygiene, zero context. They can't tell you whether your architecture makes sense, only whether line 214 looks scary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human code review by a senior engineer&lt;/strong&gt; — anywhere from around a thousand to several thousand dollars depending on depth and codebase size. This is where architecture, data flows, and handover-readiness get covered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full consulting engagements&lt;/strong&gt; — five figures. Usually overkill before you have revenue that depends on the system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For reference, SystemTrails starts with a &lt;strong&gt;&lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free teardown&lt;/a&gt;&lt;/strong&gt; — a recorded senior review with 3 concrete findings and a fix-or-rebuild verdict in 72 hours — and paid &lt;a href="https://systemtrails.com/pricing/" rel="noopener noreferrer"&gt;Hardening Sprints run from $2,500, fixed&lt;/a&gt;, with every deliverable in plain English.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The honest disclaimer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, I sell the fixes, so read this section with that in mind. It's also why the rest of this post tells you exactly what to demand from &lt;em&gt;anyone&lt;/em&gt; reviewing your code — including me.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How to spot a shallow audit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Runs a scanner over your repo → sends you a 40-page PDF of findings sorted by scariness → half are false positives → no ranking, no context, no map → you're more anxious and no wiser&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; Reads your actual code → explains what your system IS before what's wrong with it → ranks findings by what actually threatens your business → tells you what to fix now, what to fix next, and what to ignore&lt;/p&gt;

&lt;p&gt;Questions to ask anyone offering you an audit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;"Will you read the code yourself, or run a tool over it?"&lt;/strong&gt; Tools assist; they don't replace reading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Will I get a map of my system?"&lt;/strong&gt; If the answer is no, you're buying a list of symptoms without a diagnosis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Will the findings be ranked?"&lt;/strong&gt; Twenty findings with no priority order is homework, not help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Will I understand the report without a CS degree?"&lt;/strong&gt; If the deliverable needs a translator, it wasn't written for you.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Do you actually need one?
&lt;/h2&gt;

&lt;p&gt;Not always. You probably &lt;strong&gt;don't&lt;/strong&gt; need an audit if you're pre-launch with no users and still iterating on what the product even is — you'd be auditing code you're about to throw away.&lt;/p&gt;

&lt;p&gt;You probably &lt;strong&gt;do&lt;/strong&gt; if any of these are true:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real users, real payments, or real personal data are in the system&lt;/li&gt;
&lt;li&gt;You're about to hire your first developer&lt;/li&gt;
&lt;li&gt;An investor is starting due diligence&lt;/li&gt;
&lt;li&gt;The app has started behaving strangely and nobody knows why&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Find out in 60 seconds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://systemtrails.com/#score-funnel" rel="noopener noreferrer"&gt;Take the free SystemTrails Score →&lt;/a&gt;&lt;/strong&gt; — 6 questions about your app, no email required to see your score. It tells you which risk patterns likely apply and whether an audit is worth it for you at all.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Already know you need eyes on the code? &lt;strong&gt;&lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Get your free teardown →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Want this checked on your actual code? &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Free teardown&lt;/a&gt;: 3 concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>aimvp</category>
      <category>architecture</category>
      <category>codequality</category>
    </item>
    <item>
      <title>The Architecture Map Every AI-Built Startup Needs (Free Template)</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Fri, 28 Aug 2026 12:52:18 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/the-architecture-map-every-ai-built-startup-needs-free-template-nmm</link>
      <guid>https://dev.to/dancristian_podina_0b537/the-architecture-map-every-ai-built-startup-needs-free-template-nmm</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/architecture-map-template/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An architecture map is a simple diagram that shows &lt;strong&gt;what your app is made of and how the pieces connect.&lt;/strong&gt; You need one when you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hire&lt;/strong&gt; — so new developers can understand your system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fundraise&lt;/strong&gt; — so investors know the tech is real&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scale&lt;/strong&gt; — so you know what will break first&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This post includes a free template you can fill in yourself, plus examples from real AI-built apps.&lt;/p&gt;




&lt;h2&gt;
  
  
  You built it. Can you explain it?
&lt;/h2&gt;

&lt;p&gt;Here's a question that makes AI-app founders uncomfortable: &lt;strong&gt;"Can you draw how your system works?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not the screens. Not the features. The actual system — what talks to what, where the data lives, what happens when a user signs up or makes a payment.&lt;/p&gt;

&lt;p&gt;If you built with Cursor, Claude Code, Bolt, Lovable, or Copilot, you probably can't. Not because you're not smart — because the AI never told you. It just... built things. Feature by feature. And now you have a working app that nobody fully understands.&lt;/p&gt;

&lt;p&gt;That's fine for a prototype. It's not fine when you need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain the tech stack to a potential investor&lt;/li&gt;
&lt;li&gt;Onboard a new developer&lt;/li&gt;
&lt;li&gt;Figure out why something broke at 2am&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need an &lt;strong&gt;architecture map.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What an architecture map actually is
&lt;/h2&gt;

&lt;p&gt;It's not complicated. An architecture map is a diagram that shows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The pieces&lt;/strong&gt; — your frontend, backend, database, third-party services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How they connect&lt;/strong&gt; — what calls what, what data flows where&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where the risks are&lt;/strong&gt; — single points of failure, unprotected routes, missing backups&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here's what a typical AI-built SaaS looks like when mapped out:&lt;/p&gt;

&lt;p&gt;Even this simple diagram tells you a lot. You can see that &lt;strong&gt;everything goes through the API server&lt;/strong&gt; — that's a single point of failure. You can see that Auth writes directly to the database. You can see all the external services you depend on.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 3 moments you'll wish you had one
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hiring
&lt;/h3&gt;

&lt;p&gt;You post a job. A senior developer applies. They ask: "Can you show me the architecture?" You send them... a link to the repo? A 30-minute Zoom call trying to explain it from memory?&lt;/p&gt;

&lt;p&gt;With a map, you send them a single page. They understand your system in 5 minutes. They're excited to join, not scared.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fundraising
&lt;/h3&gt;

&lt;p&gt;An investor asks about your tech during due diligence. "Is this scalable? What's your infrastructure look like?"&lt;/p&gt;

&lt;p&gt;Without a map, you stumble through it. With a map, you pull up a clear diagram that shows you actually know what you've built. That's the difference between "technical risk" and "technical confidence" in their notes.&lt;/p&gt;

&lt;h3&gt;
  
  
  When things break
&lt;/h3&gt;

&lt;p&gt;It's 11pm. Users are reporting errors. You need to figure out what's wrong, fast.&lt;/p&gt;

&lt;p&gt;Without a map, you're guessing — clicking through files, reading logs, trying to trace the path. With a map, you look at the diagram: "The error is in payments. Payments talk to Stripe and the database. Let me check those two things." Found in 5 minutes instead of 2 hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  What goes in the map
&lt;/h2&gt;

&lt;p&gt;Your architecture map should include these four layers:&lt;/p&gt;

&lt;h3&gt;
  
  
  Components
&lt;/h3&gt;

&lt;p&gt;Every piece of your system: frontend app, API server, database, cache, queues, external services. Give each one a name and a technology label.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connections
&lt;/h3&gt;

&lt;p&gt;What talks to what. Your frontend calls your API. Your API reads from the database. Your API calls Stripe. Draw the arrows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Flows
&lt;/h3&gt;

&lt;p&gt;Where does user data go? What gets stored where? What gets sent to external services? This is where privacy and compliance risks hide.&lt;/p&gt;

&lt;h3&gt;
  
  
  Risk Zones
&lt;/h3&gt;

&lt;p&gt;Single points of failure. Components without backups. Unencrypted connections. Missing authentication. Mark these on the map.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: What happens when a user signs up
&lt;/h2&gt;

&lt;p&gt;Let's trace a real flow through the map. Here's the typical sign-up process in an AI-built app:&lt;/p&gt;

&lt;p&gt;Now here's the important part: &lt;strong&gt;look at what could go wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What if the auth service creates the account but the API fails to create the profile? Now you have a user who can log in but has no profile.&lt;/li&gt;
&lt;li&gt;What if the email service is down? Does the signup still complete, or does the whole thing fail?&lt;/li&gt;
&lt;li&gt;Is the auth token stored securely, or is it sitting in localStorage where any script can read it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are exactly the questions an architecture map helps you answer &lt;strong&gt;before&lt;/strong&gt; they become real problems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Explaining your app: without a map vs. with a map
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; &lt;em&gt;Investor:&lt;/em&gt; 'Walk me through your tech stack.' &lt;em&gt;You:&lt;/em&gt; 'So we have React on the front, and then there's an API, and Supabase, and we use Stripe, and there's also this thing with Clerk for auth, and...' &lt;em&gt;Investor:&lt;/em&gt; [writes 'technical risk' in their notes]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; &lt;em&gt;Investor:&lt;/em&gt; 'Walk me through your tech stack.' &lt;em&gt;You:&lt;/em&gt; 'Here's our architecture map. Six components, three external services. Data flows top to bottom. I've highlighted the two areas we're strengthening this quarter.' &lt;em&gt;Investor:&lt;/em&gt; [writes 'strong technical founder' in their notes]&lt;/p&gt;




&lt;h2&gt;
  
  
  The free template
&lt;/h2&gt;

&lt;p&gt;Here's what's included in the SystemTrails Architecture Map Template:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Blank architecture diagram&lt;/strong&gt; — fill in your components, connections, and data flows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component inventory checklist&lt;/strong&gt; — make sure you haven't missed anything&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk identification guide&lt;/strong&gt; — questions to ask about each component&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example filled-in map&lt;/strong&gt; — based on a real AI-built SaaS (anonymized)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's what a completed map looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3o5pgw2rhyrggg273h6e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3o5pgw2rhyrggg273h6e.jpg" alt="A sample SystemTrails Architecture Map showing components, connections, and risk assessment" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's the same template I use as the starting point for every client review.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Get the free template&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want the template? &lt;strong&gt;&lt;a href="https://cal.com/dan-podina-snqasy/15min" rel="noopener noreferrer"&gt;Book a 15-minute call&lt;/a&gt;&lt;/strong&gt; and I'll send it to you, plus walk you through how to fill it in for your specific app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or skip the template and get the real thing: a &lt;strong&gt;&lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free teardown&lt;/a&gt;&lt;/strong&gt; — I walk your actual repo on video and you get 3 concrete findings plus a fix-or-rebuild verdict, within 72 hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want the full picture?
&lt;/h2&gt;

&lt;p&gt;The free template gives you the structure. But filling it in accurately requires reading the actual code, tracing real data flows, and understanding the runtime behavior of your system.&lt;/p&gt;

&lt;p&gt;That's what the &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free SystemTrails teardown&lt;/a&gt; starts: senior eyes on your actual codebase, and if deeper work makes sense, a fixed-price Hardening Sprint that ships the fixes &lt;strong&gt;plus the trail&lt;/strong&gt; — an architecture map, docs, tests, and a runbook, all in plain English.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Not sure if you need it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://systemtrails.com/#score-funnel" rel="noopener noreferrer"&gt;Take the free SystemTrails Score →&lt;/a&gt;&lt;/strong&gt; — 6 questions, 60 seconds. Find out where your app stands.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Want this checked on your actual code? &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Free teardown&lt;/a&gt;: 3 concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>startup</category>
      <category>template</category>
      <category>aimvp</category>
    </item>
    <item>
      <title>I Audited 50+ AI-Built Codebases. Here's What They All Get Wrong.</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Fri, 28 Aug 2026 12:51:33 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/i-audited-50-ai-built-codebases-heres-what-they-all-get-wrong-4jo2</link>
      <guid>https://dev.to/dancristian_podina_0b537/i-audited-50-ai-built-codebases-heres-what-they-all-get-wrong-4jo2</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/audited-50-ai-codebases/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After auditing 50+ codebases built with AI coding tools, the same 5 problems appear in almost every one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The God File&lt;/strong&gt; — one massive file runs everything&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Silent Failures&lt;/strong&gt; — errors happen but nobody knows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets in Plain Sight&lt;/strong&gt; — API keys hardcoded in the code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Validation&lt;/strong&gt; — the app trusts all input blindly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Invisible Architecture&lt;/strong&gt; — no one can explain how the system connects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you built fast with AI, you probably have at least 3 of these. The good news: they're all fixable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why AI code works... until it doesn't
&lt;/h2&gt;

&lt;p&gt;Here's a way to think about it.&lt;/p&gt;

&lt;p&gt;Imagine you hired a brilliant contractor to build you a house. They work incredibly fast — walls go up overnight, plumbing appears, the kitchen looks great. You move in. Everything works.&lt;/p&gt;

&lt;p&gt;Then one day you want to add a second bathroom. The contractor who built it is gone. A new plumber looks at the pipes and says: &lt;em&gt;"Who did this? The kitchen pipes run through the bedroom wall, the gas line shares a duct with the electrical, and there's no shutoff valve."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's what AI-built code looks like from the inside. It &lt;strong&gt;works&lt;/strong&gt; — until you need to change it, scale it, or let someone else touch it.&lt;/p&gt;

&lt;p&gt;I've now audited over 50 apps built with Cursor, Claude Code, Copilot, Bolt, Lovable, and similar tools. The patterns are remarkably consistent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pattern 1: The God File
&lt;/h2&gt;

&lt;h3&gt;
  
  
  One file runs everything
&lt;/h3&gt;

&lt;p&gt;AI tools love to put everything in one place. Login logic, payment processing, email sending, database queries — all in a single file that's 2,000+ lines long.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Change one thing, break three others. It's like having every room in your house share the same wall — knock one down, the roof caves in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tell:&lt;/strong&gt; You have a file called &lt;code&gt;app.js&lt;/code&gt;, &lt;code&gt;main.py&lt;/code&gt;, or &lt;code&gt;index.ts&lt;/code&gt; that's longer than 500 lines and handles more than one job.&lt;/p&gt;

&lt;p&gt;Here's what happens when your code is tightly coupled — changing one piece causes a chain reaction:&lt;/p&gt;

&lt;p&gt;When things are properly separated, a change to login only affects login. Nothing else breaks.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pattern 2: Silent Failures
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Errors happen. Nobody knows.
&lt;/h3&gt;

&lt;p&gt;AI-generated code rarely includes proper error handling. When something goes wrong — a payment fails, a database query times out, an API returns unexpected data — the app just... keeps going. Silently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Your users see weird behavior. Data gets corrupted. You find out about problems from angry customers, not from your system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tell:&lt;/strong&gt; Search your code for &lt;code&gt;catch&lt;/code&gt; blocks. If they're empty, or just log to console, you have this problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Payment fails → app continues → user thinks they paid → no product delivered → support ticket → you find out 3 days later&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; Payment fails → error caught → user sees clear message → alert sent to you → you fix it in 10 minutes&lt;/p&gt;




&lt;h2&gt;
  
  
  Pattern 3: Secrets in Plain Sight
&lt;/h2&gt;

&lt;h3&gt;
  
  
  API keys hardcoded in the code
&lt;/h3&gt;

&lt;p&gt;When you tell an AI tool "connect to Stripe" or "add authentication," it often puts the API key directly in the source code. If your code is on GitHub (even a private repo), those keys are one leak away from being compromised.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Anyone who sees your code sees your keys. Bots scan GitHub for exposed API keys constantly. A leaked Stripe key means someone else charges your customers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tell:&lt;/strong&gt; Open your code and search for strings that look like &lt;code&gt;sk_live_&lt;/code&gt;, &lt;code&gt;AKIA&lt;/code&gt;, or any long random string. If they're in the code (not in environment variables), you have this problem.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This one is urgent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unlike the other patterns, exposed secrets can be exploited &lt;strong&gt;today&lt;/strong&gt;. If you find hardcoded API keys, rotate them immediately and move them to environment variables. Don't wait for an audit.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Pattern 4: Zero Validation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The app trusts all input blindly
&lt;/h3&gt;

&lt;p&gt;AI tools build the "happy path" — what happens when everything goes right. They rarely add checks for what happens when things go wrong. A user enters a negative number for quantity? The app processes it. Someone submits a form with a script tag? It runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; This is how apps get hacked, data gets corrupted, and invoices show negative amounts. Every input from a user or external system should be validated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tell:&lt;/strong&gt; Look at your form handlers and API endpoints. If they take the input and immediately use it without checking, you have this problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; User enters '-5' as quantity → order created for -5 items → refund triggered → accounting is confused → you owe the user money somehow&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; User enters '-5' as quantity → form says 'Please enter a valid quantity' → order not created → everyone's happy&lt;/p&gt;




&lt;h2&gt;
  
  
  Pattern 5: The Invisible Architecture
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nobody knows how the system connects
&lt;/h3&gt;

&lt;p&gt;AI builds each feature in isolation. Need login? Done. Need payments? Done. Need email notifications? Done. But there's no map of how these pieces connect. No documentation. No diagram. The only person who understands the system is... the AI that built it. And it doesn't remember.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; You can't hire a developer if they can't understand the system. You can't get investment if you can't explain the tech. You can't fix a bug if you don't know what talks to what.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tell:&lt;/strong&gt; Try to draw your system on a whiteboard right now — every service, database, API, and how they connect. If you can't, neither can anyone else.&lt;/p&gt;

&lt;p&gt;This is what the architecture of a typical AI-built app looks like vs. what it should look like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiwj9w6xpbl4l1rdywpvg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiwj9w6xpbl4l1rdywpvg.jpg" alt="Spaghetti Architecture vs Structured Architecture — a visual comparison" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The 60-Second Self-Check
&lt;/h2&gt;

&lt;p&gt;Answer these questions honestly:&lt;/p&gt;

&lt;p&gt;If you answered "yes" to even one of these, your app has technical debt that will slow you down when you try to hire, scale, or raise funding.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to do about it
&lt;/h2&gt;

&lt;p&gt;The good news: every one of these patterns is fixable. They don't require a rewrite. They require &lt;strong&gt;structure&lt;/strong&gt; — knowing what you have, where the risks are, and what to fix first.&lt;/p&gt;

&lt;p&gt;That's exactly what the &lt;a href="https://systemtrails.com/#score-funnel" rel="noopener noreferrer"&gt;SystemTrails Score&lt;/a&gt; measures. It takes 60 seconds, and you'll get a personalized risk report showing which of these patterns apply to your app.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next step&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://systemtrails.com/#score-funnel" rel="noopener noreferrer"&gt;Take the free SystemTrails Score →&lt;/a&gt;&lt;/strong&gt; — 6 questions, 60 seconds, personalized risk report.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or if you already know you need help: &lt;strong&gt;&lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;get your free teardown&lt;/a&gt;&lt;/strong&gt; — I'll review your actual codebase on video and tell you exactly what to fix, in what order, within 72 hours.&lt;/p&gt;




&lt;p&gt;Want this checked on your actual code? &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Free teardown&lt;/a&gt;: 3 concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>aimvp</category>
      <category>architecture</category>
      <category>codequality</category>
    </item>
    <item>
      <title>Your AI-built app connects to Gmail. Six things that have to hold before launch (2026)</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Fri, 28 Aug 2026 12:51:26 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/your-ai-built-app-connects-to-gmail-six-things-that-have-to-hold-before-launch-2026-449m</link>
      <guid>https://dev.to/dancristian_podina_0b537/your-ai-built-app-connects-to-gmail-six-things-that-have-to-hold-before-launch-2026-449m</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/gmail-connected-ai-built-app-before-launch/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gmail-connected apps built with AI coding tools fail in six predictable places. Check these before launch, in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scopes&lt;/strong&gt;: ask for the narrowest Gmail scope, not full access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token storage&lt;/strong&gt;: refresh tokens encrypted, server-side, per user, revocable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-user isolation&lt;/strong&gt;: one user can never read another user's messages, even through a bug&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google verification and CASA&lt;/strong&gt;: without it you are capped at 100 test users and 7-day tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch renewals&lt;/strong&gt;: push notifications expire after 7 days; renew and reconcile&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deletion and data policy&lt;/strong&gt;: delete means delete, including Google's Limited Use rules&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you built an app on Gmail with Cursor, Claude Code, Lovable, Replit, or Bolt, it probably works. That is not the question before launch. The question is whether it keeps working with real users, real inboxes, and Google's reviewers watching. Here is what a senior architect checks first, with the numbers that matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Scopes: the AI asked for more than you need
&lt;/h2&gt;

&lt;p&gt;Gmail's API has a ladder of OAuth scopes. &lt;code&gt;gmail.readonly&lt;/code&gt; reads. &lt;code&gt;gmail.send&lt;/code&gt; sends. &lt;code&gt;gmail.modify&lt;/code&gt; labels and archives. &lt;code&gt;https://mail.google.com/&lt;/code&gt; is full access, including permanent deletion. AI coding tools tend to request full access because every feature works on the first try.&lt;/p&gt;

&lt;p&gt;Three problems follow. Users see a scarier consent screen and drop off. Google's verification review asks you to justify every scope, and "the AI picked it" is not a justification. And a breach of a full-access token is a breach of the whole mailbox.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The check:&lt;/strong&gt; open your OAuth client configuration and your code's scope list. If &lt;code&gt;mail.google.com&lt;/code&gt; is there and you do not delete messages, remove it. Expect to re-verify after a scope change.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Token storage: where the refresh tokens actually live
&lt;/h2&gt;

&lt;p&gt;A Gmail refresh token is a standing key to someone's inbox. The pattern in AI-built apps, seen repeatedly: the token is written to a database column in plain text, sometimes logged on every request, occasionally shipped to the browser so the frontend can "call Gmail directly."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What has to hold:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tokens are stored server-side only, encrypted at rest with a key from a KMS or vault, not a constant in the code.&lt;/li&gt;
&lt;li&gt;Each token is bound to exactly one user record; the lookup is by the authenticated session, never by a client-supplied user id.&lt;/li&gt;
&lt;li&gt;Logs redact tokens and message bodies.&lt;/li&gt;
&lt;li&gt;Deleting the account revokes the token at Google (&lt;code&gt;oauth2.revoke&lt;/code&gt;) and destroys the stored copy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The check:&lt;/strong&gt; search the repo and the database schema for &lt;code&gt;refresh_token&lt;/code&gt;. Trace every read of that column. If any path returns it to the client or writes it to a log, that is finding number one of your teardown.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Per-user isolation: the bug that leaks someone else's inbox
&lt;/h2&gt;

&lt;p&gt;Every Gmail-connected app has a place where it decides &lt;em&gt;whose&lt;/em&gt; token to use. In AI-built code that decision is often made from a parameter in the request (&lt;code&gt;?userId=&lt;/code&gt;), from a cached "current user" variable that survives across requests, or from a background job that iterates users and reuses one client object.&lt;/p&gt;

&lt;p&gt;This is the failure mode that turns a bug into a breach: user A's sync job runs with user B's token, or a shared client retains the last user's credentials. It is invisible in single-user testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The check:&lt;/strong&gt; find every construction of the Gmail client. Confirm it is built from the token of the authenticated user in that request or that job, and destroyed after. Then write the one test that matters: two users, two inboxes, assert that no call for user A ever carries user B's token.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Google verification and the CASA assessment
&lt;/h2&gt;

&lt;p&gt;Until your OAuth consent screen is published and verified, the project stays in &lt;strong&gt;Testing&lt;/strong&gt; mode: a maximum of &lt;strong&gt;100 test users&lt;/strong&gt;, refresh tokens that &lt;strong&gt;expire after 7 days&lt;/strong&gt;, and an "unverified app" screen for everyone. Founders hit this the week after launch, when the first cohort's connections silently die.&lt;/p&gt;

&lt;p&gt;Any restricted Gmail scope (read, modify, send) requires more than the standard brand verification: an independent &lt;strong&gt;CASA (Cloud Application Security Assessment)&lt;/strong&gt; by a Google-authorized assessor, &lt;strong&gt;renewed every year&lt;/strong&gt;. Plan for weeks of calendar time and an external cost, and expect the assessor to ask about the exact things in sections 2 and 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The check:&lt;/strong&gt; in Google Cloud Console, look at the OAuth consent screen's publishing status and verification status. If it says Testing, your launch has a 100-user ceiling today.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Watch renewals: push notifications expire after 7 days
&lt;/h2&gt;

&lt;p&gt;If the app reacts to new mail, it uses &lt;code&gt;users.watch()&lt;/code&gt; to get push notifications through Pub/Sub. That subscription &lt;strong&gt;expires after 7 days&lt;/strong&gt;. Production integrations renew it on a schedule and, after any gap, catch up with &lt;code&gt;history.list&lt;/code&gt; from the last known &lt;code&gt;historyId&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;AI-generated code creates the watch once, during setup, and never again. The symptom: the app works in the demo, then goes quiet for every user about a week after they connected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The check:&lt;/strong&gt; search for &lt;code&gt;watch(&lt;/code&gt;. If there is no scheduled renewal and no reconciliation on &lt;code&gt;historyId&lt;/code&gt;, the integration is a demo, not a product.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Deletion, retention, and Google's Limited Use rules
&lt;/h2&gt;

&lt;p&gt;Gmail data falls under Google's API Services User Data Policy, including the &lt;strong&gt;Limited Use&lt;/strong&gt; requirements: use the data only to provide the user-facing feature, do not sell it, do not use it for ads, and do not let humans read it except in narrow cases. Your privacy policy has to say this, and the app has to do it.&lt;/p&gt;

&lt;p&gt;AI-built apps commonly cache message bodies "for performance," keep them after the user disconnects, and feed them to a third-party model without telling the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The check:&lt;/strong&gt; disconnect a test account and look at the database. Anything left is a policy problem and, for employment or health data, a legal one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "ready" looks like
&lt;/h2&gt;

&lt;p&gt;A Gmail-connected app is launch-ready when: the scope list is minimal and justified; tokens are encrypted, server-side, per user, and revoked on deletion; the two-user isolation test passes; the consent screen is verified (with the CASA assessment scheduled if the scopes are restricted); watches renew on a schedule; and disconnect leaves nothing behind.&lt;/p&gt;

&lt;p&gt;None of this requires a rewrite. In most AI-built apps it is a fixed-scope hardening pass of one to two weeks, done once, with the trail left behind: the isolation test, the renewal job, the runbook for the day Google emails you about your assessment.&lt;/p&gt;

&lt;p&gt;If you want senior eyes on your actual code first, that is what the &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free teardown&lt;/a&gt; is: three findings and a verdict, recorded, within 72 hours.&lt;/p&gt;




&lt;p&gt;Want this checked on your actual code? &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;Free teardown&lt;/a&gt;: 3 concrete findings and a fix-or-rebuild verdict, recorded, within 72 hours.&lt;/p&gt;

</description>
      <category>gmail</category>
      <category>oauth</category>
      <category>aimvp</category>
      <category>security</category>
    </item>
  </channel>
</rss>
