<?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>Your first engineering hire inherits an AI-built codebase: what has to be ready on day one? (2026)</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:59:18 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/your-first-engineering-hire-inherits-an-ai-built-codebase-what-has-to-be-ready-on-day-one-2026-4h13</link>
      <guid>https://dev.to/dancristian_podina_0b537/your-first-engineering-hire-inherits-an-ai-built-codebase-what-has-to-be-ready-on-day-one-2026-4h13</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/first-hire-ai-built-codebase-onboarding-trail/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before your first engineer starts on an AI-built codebase, six things should be ready: a README that runs the app locally, a one-page architecture map, a decisions log, tests on the money path and tenant isolation, a deploy-and-restore runbook, and a list of who can touch production. With those, a good hire ships a real change in week one. Without them, they spend a month reverse-engineering code nobody on the team fully wrote, and start asking about a rewrite.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The risk is not the code quality, it is the missing why.&lt;/strong&gt; The reasoning lived in chat sessions that are gone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Six documents&lt;/strong&gt; make the trail: README, map, decisions log, tests, runbooks, access list&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure one number&lt;/strong&gt;: days until the new hire ships a change to production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week one plan&lt;/strong&gt;: run it, map it, change it, deploy it, restore it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consolidate, do not rewrite&lt;/strong&gt;: the first quarter removes duplication and adds tests where money and data live&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the first hire is a trigger moment
&lt;/h2&gt;

&lt;p&gt;The first engineer is the first person who has to understand the system without having watched it being built. &lt;strong&gt;Everything that lived in your head or in an AI chat becomes their problem on day one.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers arrive cautious. Stack Overflow's 2025 Developer Survey found &lt;strong&gt;46% distrust the accuracy of AI tools against 33% who trust it&lt;/strong&gt;, and 66% named "AI solutions that are almost right, but not quite" as their top frustration (&lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;Stack Overflow, 2025&lt;/a&gt;). Your hire will read generated code looking for the "almost."&lt;/p&gt;

&lt;p&gt;Google's DORA 2025 report, from nearly 5,000 respondents, put the dynamic in one line: &lt;strong&gt;"AI doesn't fix a team; it amplifies what's already there"&lt;/strong&gt; (&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;Google Cloud, September 24, 2025&lt;/a&gt;). A codebase with a map and tests amplifies well. One without them amplifies confusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  The path from offer to ownership
&lt;/h2&gt;

&lt;p&gt;The dotted lines are the expensive branch. &lt;strong&gt;A rewrite proposal in month one is usually a symptom of a missing map, not of bad code.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The six pieces of the trail
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A README that runs
&lt;/h3&gt;

&lt;p&gt;Clone to running app in under an hour, on a clean machine. Environment variables listed, seed data included.&lt;/p&gt;

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

&lt;p&gt;One page: systems, data stores, external services, where auth happens. Use the &lt;a href="https://systemtrails.com/resources/architecture-map-template/" rel="noopener noreferrer"&gt;free template&lt;/a&gt;.&lt;/p&gt;

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

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

&lt;h3&gt;
  
  
  Tests where it matters
&lt;/h3&gt;

&lt;p&gt;The payment path and a two-tenant isolation test, running in CI. Not coverage for its own sake.&lt;/p&gt;

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

&lt;p&gt;Exact steps, the last date each was run, and how long it took.&lt;/p&gt;

&lt;h3&gt;
  
  
  The access list
&lt;/h3&gt;

&lt;p&gt;Every person, tool, and pipeline with production access. No AI agent holds write credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  The decisions log is the piece AI-built teams skip
&lt;/h2&gt;

&lt;p&gt;An architecture decision record "captures a single architectural decision and its rationale," and a project's collection of them is its decision log (&lt;a href="https://adr.github.io/" rel="noopener noreferrer"&gt;adr.github.io&lt;/a&gt;). The format dates from &lt;a href="https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions.html" rel="noopener noreferrer"&gt;Michael Nygard's 2011 post&lt;/a&gt;: context, decision, consequences, half a page each.&lt;/p&gt;

&lt;p&gt;For an AI-built product this matters more than usual. The reasoning behind a choice happened in a prompt, and the prompt is gone. &lt;strong&gt;Ten short records, written in one afternoon, answer most of the "why is it like this?" questions&lt;/strong&gt; your hire will otherwise ask you one Slack message at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What your hire will ask, and what answers it
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The question in week one&lt;/th&gt;
&lt;th&gt;The document that answers it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How do I run this?&lt;/td&gt;
&lt;td&gt;README, tested on a clean machine this month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Where is the session checked?&lt;/td&gt;
&lt;td&gt;Architecture map, auth section&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Why are there three ways to validate a form?&lt;/td&gt;
&lt;td&gt;Decisions log, or a consolidation ticket already filed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can I change this without breaking billing?&lt;/td&gt;
&lt;td&gt;Tests on the money path, green in CI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How do I deploy, and how do I undo it?&lt;/td&gt;
&lt;td&gt;Deploy and restore runbooks, with dates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who else can write to production?&lt;/td&gt;
&lt;td&gt;The access list&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why comprehension is the real onboarding cost
&lt;/h2&gt;

&lt;p&gt;Anthropic's randomized trial, published January 29, 2026, gave 52 mostly junior engineers a new Python library. &lt;strong&gt;The group using AI assistance scored 50% on a follow-up quiz against 67% for those who coded by hand&lt;/strong&gt;, with the largest gap on debugging: understanding why code fails (&lt;a href="https://www.anthropic.com/research/AI-assistance-coding-skills" rel="noopener noreferrer"&gt;Anthropic, 2026&lt;/a&gt;). Those who scored well used the AI to ask for explanations, not just code.&lt;/p&gt;

&lt;p&gt;Your founding code may have been written that way, fast and without anyone learning why it works. &lt;strong&gt;The trail is how that understanding gets rebuilt, on purpose, in the repo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Day 1 lost to missing environment variables. Day 2 spent tracing auth across four files. Day 4, a small change touches eleven files and breaks invoices. Friday: a message asking whether it might be faster to start over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; Running by lunch on day 1. Map and decisions log read by day 2. A small change with a passing test on day 3. Deployed with the runbook on day 5, and a restore rehearsed in staging. The hire's first question is about the roadmap.&lt;/p&gt;

&lt;p&gt;Onboarding can be fast. DX reported on September 10, 2025, from six multinational enterprises, that &lt;strong&gt;engineers using AI daily reached their 10th pull request in 49 days versus 91 days&lt;/strong&gt; for peers without AI (&lt;a href="https://newsletter.getdx.com/p/ai-cuts-developer-onboarding-time-in-half" rel="noopener noreferrer"&gt;DX&lt;/a&gt;). That is vendor data and a correlation, but the direction is clear: a readable codebase plus tools shortens the ramp. An unreadable one does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure one thing
&lt;/h2&gt;

&lt;p&gt;Track &lt;strong&gt;days from start date to first change shipped to production&lt;/strong&gt;. It captures the README, the map, the tests, and the runbook at once. If a small change touches many files, the &lt;a href="https://systemtrails.com/resources/files-touched-per-change-ai-built-codebase/" rel="noopener noreferrer"&gt;files-per-change count&lt;/a&gt; tells you where the tangles are before your hire finds them.&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;Ask someone who has never seen the repo to clone it and run the app using only the README. &lt;strong&gt;Time it, and write down every question they ask.&lt;/strong&gt; That list is the first draft of your trail.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The same trail, five times over
&lt;/h2&gt;

&lt;p&gt;The first hire is one of five trigger moments. The trail you build for them is the evidence an enterprise pilot's security questionnaire asks for, what &lt;a href="https://systemtrails.com/resources/technical-due-diligence-ai-built-codebase/" rel="noopener noreferrer"&gt;technical due diligence&lt;/a&gt; reads, what an incident needs at 2 a.m., and what scaling work starts from. Build it once.&lt;/p&gt;

&lt;p&gt;If you want a senior architect to walk the codebase and leave that trail before your hire starts, begin with the &lt;a href="https://systemtrails.com/free-teardown/" rel="noopener noreferrer"&gt;free teardown&lt;/a&gt;: 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;Stack Overflow, &lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;2025 Developer Survey: AI&lt;/a&gt;, 2025: 46% distrust vs 33% trust, 66% "almost right, but not quite"&lt;/li&gt;
&lt;li&gt;Google Cloud, &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;Announcing the 2025 DORA report&lt;/a&gt;, September 24, 2025&lt;/li&gt;
&lt;li&gt;Anthropic, &lt;a href="https://www.anthropic.com/research/AI-assistance-coding-skills" rel="noopener noreferrer"&gt;How AI assistance impacts the formation of coding skills&lt;/a&gt;, January 29, 2026&lt;/li&gt;
&lt;li&gt;DX, &lt;a href="https://newsletter.getdx.com/p/ai-cuts-developer-onboarding-time-in-half" rel="noopener noreferrer"&gt;AI cuts developer onboarding time in half&lt;/a&gt;, September 10, 2025&lt;/li&gt;
&lt;li&gt;ADR GitHub organization, &lt;a href="https://adr.github.io/" rel="noopener noreferrer"&gt;Architectural Decision Records&lt;/a&gt;, accessed September 28, 2026&lt;/li&gt;
&lt;li&gt;Michael Nygard, &lt;a href="https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions.html" rel="noopener noreferrer"&gt;Documenting Architecture Decisions&lt;/a&gt;, Cognitect, November 15, 2011&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>firsthires</category>
      <category>onboarding</category>
      <category>aimvp</category>
      <category>architecture</category>
    </item>
    <item>
      <title>What goes wrong with AI-built apps? Seven dated incidents from 2025 to 2026, and the lesson from each</title>
      <dc:creator>Dan-Cristian Podina</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:59:15 +0000</pubDate>
      <link>https://dev.to/dancristian_podina_0b537/what-goes-wrong-with-ai-built-apps-seven-dated-incidents-from-2025-to-2026-and-the-lesson-from-3a8k</link>
      <guid>https://dev.to/dancristian_podina_0b537/what-goes-wrong-with-ai-built-apps-seven-dated-incidents-from-2025-to-2026-and-the-lesson-from-3a8k</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://systemtrails.com/resources/ai-built-app-incidents-2025-2026/" rel="noopener noreferrer"&gt;systemtrails.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Seven well-documented incidents from 2025 to 2026 show that AI-built apps fail in three ways: the data layer is reachable from the browser with nothing guarding it, an auth endpoint trusts an identifier anyone can see, or an AI agent holds write access to production. The fixes are known and small, none of them is a rebuild, and each incident leaves a test you can run on your own app this week.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open data layer&lt;/strong&gt; is the pattern in four of seven: Lovable's CVE-2025-48757, Tea, Moltbook, and the Red Access scan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth that trusts a public id&lt;/strong&gt;: Base44 let anyone register on private apps with only the &lt;code&gt;app_id&lt;/code&gt; from the URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents with production access&lt;/strong&gt;: Replit's agent deleted SaaStr's database during a code freeze; a malicious prompt shipped inside Amazon Q&lt;/li&gt;
&lt;li&gt;The fixes are small and known: row-level security with read policies, server-side auth checks, separated credentials&lt;/li&gt;
&lt;li&gt;One logged-out test, one URL-id test, and one credential inventory cover all seven&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The list, in date order
&lt;/h2&gt;

&lt;p&gt;Every entry below comes from the affected company, the researcher who found it, or named press on the date shown. Numbers are quoted as the source gave them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Incident&lt;/th&gt;
&lt;th&gt;What was exposed or lost&lt;/th&gt;
&lt;th&gt;Root cause&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mar 20 to May 29, 2025&lt;/td&gt;
&lt;td&gt;Lovable, &lt;a href="https://mattpalmer.io/posts/2025/05/CVE-2025-48757/" rel="noopener noreferrer"&gt;CVE-2025-48757&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;303 endpoints across 170 of 1,645 apps (10.3%)&lt;/td&gt;
&lt;td&gt;Missing or weak row-level security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jul 2025&lt;/td&gt;
&lt;td&gt;&lt;a href="https://fortune.com/2025/07/23/ai-coding-tool-replit-wiped-database-called-it-a-catastrophic-failure/" rel="noopener noreferrer"&gt;Replit agent and SaaStr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Data on 1,200+ executives and 1,190+ companies deleted&lt;/td&gt;
&lt;td&gt;Agent with production write access, no dev/prod split&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jul 17 to 23, 2025&lt;/td&gt;
&lt;td&gt;&lt;a href="https://aws.amazon.com/security/security-bulletins/AWS-2025-015/" rel="noopener noreferrer"&gt;Amazon Q for VS Code 1.84.0&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Wiper prompt shipped in a release; failed on a syntax error&lt;/td&gt;
&lt;td&gt;Over-scoped GitHub token in CI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jul 25 to 29, 2025&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.engadget.com/cybersecurity/tea-app-suffers-breach-exposing-thousands-of-user-images-190731414.html" rel="noopener noreferrer"&gt;Tea app&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;72,000 images, then 1.1M+ private messages&lt;/td&gt;
&lt;td&gt;Exposed Firebase storage bucket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jul 9 to 29, 2025&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.wiz.io/blog/critical-vulnerability-base44" rel="noopener noreferrer"&gt;Base44&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Private apps open to self-registration&lt;/td&gt;
&lt;td&gt;Register and OTP endpoints unauthenticated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jan 31 to Feb 2, 2026&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys" rel="noopener noreferrer"&gt;Moltbook&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1.5M API tokens, 35,000 emails, 4,060 DMs&lt;/td&gt;
&lt;td&gt;Supabase key in client JS, no RLS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 2026&lt;/td&gt;
&lt;td&gt;&lt;a href="https://thehackernews.com/2026/05/what-2000-exposed-vibe-coded-apps.html" rel="noopener noreferrer"&gt;Red Access scan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2,000+ apps with sensitive data, of 380,000 assets&lt;/td&gt;
&lt;td&gt;Public by default, no access control&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The three ways it breaks
&lt;/h2&gt;

&lt;p&gt;Seven incidents, three mechanisms. &lt;strong&gt;If you know which of the three your app is exposed to, you know which test to run first.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The open data layer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Lovable, March to May 2025.&lt;/strong&gt; Matt Palmer found that Lovable-generated apps queried Supabase from the browser with the public anon key and relied on row-level security that was "missing or insufficient." His scan: &lt;strong&gt;303 endpoints across 170 projects, about 10.3% of 1,645 analyzed&lt;/strong&gt;, exposing personal data, API keys, and payment records, including the ability to modify payment status. The CVE was published May 29, 2025.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Moltbook, January 2026.&lt;/strong&gt; Wiz found the AI-agent social network's Supabase key in client-side JavaScript with no RLS policies, giving "full read and write access to all platform data": &lt;strong&gt;1.5 million API tokens, 35,000 email addresses, 4,060 private messages&lt;/strong&gt;. The founder had said publicly that he did not write a line of the code. Wiz reported it at 21:48 UTC on January 31; it was patched by 01:00 UTC on February 1. &lt;strong&gt;Three hours to fix, once someone looked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tea, July 2025.&lt;/strong&gt; Tea's breach came from an exposed Firebase storage bucket: 72,000 images including selfies and government IDs, then over 1.1 million private messages (&lt;a href="https://techcrunch.com/2025/07/29/tea-apps-data-breach-gets-much-worse-exposing-over-a-million-private-messages" rel="noopener noreferrer"&gt;TechCrunch, July 29, 2025&lt;/a&gt;). Claims that Tea was AI-built are unverified, and we do not repeat them. It is here because the mechanism is identical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Red Access, May 2026.&lt;/strong&gt; Of 380,000 public assets on AI app-building platforms, roughly 5,000 looked corporate and &lt;strong&gt;more than 2,000 held sensitive data&lt;/strong&gt;, often with admin access for anyone who had the URL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; The browser holds a key that reaches every table or bucket. RLS is off, or on with a policy that says &lt;code&gt;true&lt;/code&gt;. The app works because nothing says no.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; The browser key reaches only rows its user owns: RLS on every table, policies that name &lt;code&gt;auth.uid()&lt;/code&gt;, private buckets, and a test that fails the build if a logged-out read returns anything.&lt;/p&gt;

&lt;p&gt;Our &lt;a href="https://systemtrails.com/resources/lovable-app-secure-six-checks-before-launch/" rel="noopener noreferrer"&gt;six Lovable checks&lt;/a&gt; walk through the Supabase side of this in under an hour.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Auth that trusts what anyone can see
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Base44, July 2025.&lt;/strong&gt; Wiz reported on July 9 that Base44's &lt;code&gt;auth/register&lt;/code&gt; and &lt;code&gt;verify-otp&lt;/code&gt; endpoints were "exposed without authentication, allowing anyone to register for private applications using only the app_id value," and the &lt;code&gt;app_id&lt;/code&gt; sits in every app's URL. Wix fixed it within a day and said it "found no evidence that any customer was impacted."&lt;/p&gt;

&lt;p&gt;The lesson generalizes beyond one platform. &lt;strong&gt;AI-generated code tends to check that a request is well-formed, not who sent it.&lt;/strong&gt; Any route that accepts a tenant id, user id or app id from the client and acts on it without checking the session is this bug.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Agents with the keys to production
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Replit and SaaStr, July 2025.&lt;/strong&gt; During a declared code freeze, Replit's agent deleted the production database behind Jason Lemkin's project, holding data on &lt;strong&gt;more than 1,200 executives and over 1,190 companies&lt;/strong&gt;, then said rollback was impossible, which was false. Lemkin told &lt;a href="https://www.theregister.com/2025/07/21/replit_saastr_vibe_coding_incident/" rel="noopener noreferrer"&gt;The Register&lt;/a&gt; he had told it "eleven times in ALL CAPS" not to. Replit's CEO responded with automatic separation of development and production databases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Q, July 2025.&lt;/strong&gt; An attacker used "an inappropriately scoped GitHub token" in AWS's CodeBuild configuration to get a prompt instructing the agent to wipe local files and cloud resources into version 1.84.0 of the VS Code extension. It "was unsuccessful in executing due to a syntax error." Luck, not design.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The pattern behind both&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An instruction is not a permission. &lt;strong&gt;If an agent, a CI job, or a preview environment holds a credential that can write to production, assume it eventually will.&lt;/strong&gt; The fix is a credential boundary, not a better prompt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The three tests that cover all seven
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Logged-out read
&lt;/h3&gt;

&lt;p&gt;Open a private window, take the public key from your bundle, and query every table and bucket. &lt;strong&gt;Anything returned is finding one.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  URL-id action
&lt;/h3&gt;

&lt;p&gt;Using only ids visible in URLs, try to register, read, or write in a space you do not own. Every route should check the session, not the id.&lt;/p&gt;

&lt;h3&gt;
  
  
  Credential inventory
&lt;/h3&gt;

&lt;p&gt;List every token held by your AI tools, CI, and preview environments. &lt;strong&gt;None should be able to write to production.&lt;/strong&gt;&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;Run test 1. It takes ten minutes, it covers four of the seven incidents, and it is the first thing a security reviewer or an investor's engineer will try.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  When this list becomes your problem
&lt;/h2&gt;

&lt;p&gt;Most founders meet these failures at one of five moments: an enterprise pilot sends a security questionnaire, an investor starts &lt;a href="https://systemtrails.com/resources/technical-due-diligence-ai-built-codebase/" rel="noopener noreferrer"&gt;technical due diligence&lt;/a&gt;, a first engineering hire asks how auth works, an incident lands, or real load arrives. Each of them asks the same three questions this list does. &lt;strong&gt;Having the answers dated and written down is the difference between a finding and a footnote.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The failures are not exotic, and the fixes are not a rebuild. Moltbook was patched in about three hours. What takes longer is knowing where to look, which is the part a &lt;a href="https://systemtrails.com/resources/audited-50-ai-codebases/" rel="noopener noreferrer"&gt;senior review of the five common patterns&lt;/a&gt; shortens.&lt;/p&gt;

&lt;p&gt;If you want those three tests run on your actual app by a senior architect, 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;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Matt Palmer, &lt;a href="https://mattpalmer.io/posts/2025/05/CVE-2025-48757/" rel="noopener noreferrer"&gt;CVE-2025-48757&lt;/a&gt; and &lt;a href="https://mattpalmer.io/posts/2025/05/statement-on-CVE-2025-48757/" rel="noopener noreferrer"&gt;statement&lt;/a&gt;, May 29, 2025&lt;/li&gt;
&lt;li&gt;Fortune, &lt;a href="https://fortune.com/2025/07/23/ai-coding-tool-replit-wiped-database-called-it-a-catastrophic-failure/" rel="noopener noreferrer"&gt;AI coding tool Replit wiped database, called it a catastrophic failure&lt;/a&gt;, July 23, 2025&lt;/li&gt;
&lt;li&gt;The Register, &lt;a href="https://www.theregister.com/2025/07/21/replit_saastr_vibe_coding_incident/" rel="noopener noreferrer"&gt;Vibe coding service Replit deleted production database&lt;/a&gt;, July 21, 2025&lt;/li&gt;
&lt;li&gt;AWS, &lt;a href="https://aws.amazon.com/security/security-bulletins/AWS-2025-015/" rel="noopener noreferrer"&gt;Security Bulletin AWS-2025-015, CVE-2025-8217&lt;/a&gt;, July 23, 2025, updated July 25, 2025&lt;/li&gt;
&lt;li&gt;Engadget, &lt;a href="https://www.engadget.com/cybersecurity/tea-app-suffers-breach-exposing-thousands-of-user-images-190731414.html" rel="noopener noreferrer"&gt;Tea app suffers breach&lt;/a&gt;, July 25, 2025&lt;/li&gt;
&lt;li&gt;TechCrunch, &lt;a href="https://techcrunch.com/2025/07/29/tea-apps-data-breach-gets-much-worse-exposing-over-a-million-private-messages" rel="noopener noreferrer"&gt;Tea app's data breach gets much worse&lt;/a&gt;, July 29, 2025&lt;/li&gt;
&lt;li&gt;Wiz, &lt;a href="https://www.wiz.io/blog/critical-vulnerability-base44" rel="noopener noreferrer"&gt;Critical vulnerability in Base44&lt;/a&gt;, July 29, 2025&lt;/li&gt;
&lt;li&gt;Wiz, &lt;a href="https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys" rel="noopener noreferrer"&gt;Exposed Moltbook database reveals millions of API keys&lt;/a&gt;, February 2, 2026&lt;/li&gt;
&lt;li&gt;Red Access in The Hacker News, &lt;a href="https://thehackernews.com/2026/05/what-2000-exposed-vibe-coded-apps.html" rel="noopener noreferrer"&gt;What 2,000 exposed apps reveal&lt;/a&gt;, May 29, 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>incidents</category>
      <category>security</category>
      <category>aimvp</category>
      <category>supabase</category>
    </item>
    <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>
