Vibe Coding Debt: When the AI-Built Marketing Site Needs a Real Migration

AI page builders like Lovable, v0, and Bolt let marketing ship a site without an engineer, but independent security scans found major vulnerabilities and exposed credentials in most production vibe-coded apps. Migration isn't about how the site looks. It's warranted only when the platform hits a structural constraint the business can't work around.

Yasser Soliman

Yasser Soliman

Technical Marketer

Published

Updated

10 min read

A marketing lead ships a landing page with an AI builder on a Friday afternoon and it works, so nobody asks how. The “how” catches up eventually: a security researcher’s email, a stalled feature the tool cannot express, or a database that turns out to have no real permissions on it.

Vibe Coding Ships Fast. It Also Ships Debt.

Vibe coding means describing what you want to an AI tool like Lovable, v0, or Bolt and getting a working site back. There is little or no line-by-line review of the code underneath. It is genuinely fast. It is also, on current evidence, unreviewed by default, and the debt that creates is different from the debt of a normal rebuild backlog.

In 2025, Veracode tested more than 100 large language models across Java, Python, C#, and JavaScript coding tasks and found an average 45% failure rate against the OWASP Top 10 security benchmarks[1]. Java fared worst at 72%. Models solving cross-site-scripting tasks passed only 15% of the time. The unsettling part is the trend line. Syntax correctness has climbed from roughly 50% to 95% since 2023, while security pass rates have stayed flat in the 45-55% band regardless of model or release date. The tools got better at writing code that runs. They did not get better at writing code that is safe.

That gap is now visible in real CVE data, not just lab benchmarks. Georgia Tech’s Vibe Security Radar traces each vulnerability’s fixing commit back through its Git history to check whether an AI tool introduced the flawed code in the first place. In 2026, confirmed AI-attributed CVEs climbed from 6 in January to 15 in February to 35 in March, roughly a sixfold jump in one quarter[2]. Researchers estimate the real total across the open-source ecosystem runs 5 to 10 times higher, because most AI coding tools leave no commit metadata identifying them as the source.

This is a mise en place problem before it is a coding problem. The tools ship a kitchen with the burners already lit, and nobody has checked whether the gas line is capped. The WebOps lifecycle’s Foundation stage exists precisely to catch this kind of gap before Stabilization work compounds on top of it. A vibe-coded marketing site skips Foundation by construction. The tool’s entire pitch is skipping the parts that used to require an engineer in the room.

Confirmed AI-attributed CVEs, Q1 2026 Three horizontal bars, one per month: January 2026 at 6, February 2026 at 15, March 2026 at 35, shading from light to solid blue as the count climbs. A closing note states these are confirmed cases only, and Georgia Tech’s researchers estimate the real total runs 5 to 10 times higher across the open-source ecosystem. Illustrative. Confirmed AI-attributed CVEs, Q1 2026 Georgia Tech’s Vibe Security Radar, traced through Git commit history. Jan 2026 Georgia Tech tracker 6 Feb 2026 Georgia Tech tracker 15 Mar 2026 Georgia Tech tracker 35 Confirmed cases only. Georgia Tech estimates the real total runs 5 to 10 times higher across the open-source ecosystem. Illustrative · yassersoliman.com · AI-linked CVE growth, Q1 2026
What marketing sees vs. what’s usually underneath A two-column comparison. Left, “What Marketing Sees”: working demo in an afternoon, no engineering ticket, looks production-ready, ships without review. Right, “What’s Usually Underneath”: OWASP-failing generated code, RLS off by default, secrets exposed in JS bundle, no documented data model. Footer notes the gap stays invisible until something forces a look. Illustrative. What marketing sees vs. what’s usually underneath A working demo says nothing about what shipped with it. WHAT MARKETING SEES The demo works. Nobody asks how. Working demo in an afternoon No engineering ticket Looks production-ready Ships without review WHAT’S UNDERNEATH Usually true. Rarely checked. OWASP-failing generated code RLS off by default Secrets exposed in JS bundle No documented data model The gap between the two columns stays invisible until something forces a look: a security review, a due-diligence request, or an incident. Illustrative · yassersoliman.com · vibe coding debt

Why Does the Debt Stay Invisible Until It’s a Security Incident?

The debt hides because vibe-coding platforms default to public and default to permissive, and nothing in the workflow forces a check. A marketing team publishing a landing page has no reason to ask whether the database behind the lead form has row-level security enabled. Most never do, and on current evidence, most do not need to look far to find a problem.

In 2025, security firm Escape scanned 5,600 publicly reachable applications built on vibe-coding platforms including Lovable, Base44, and Bolt.new. It found more than 2,000 high-impact vulnerabilities, over 400 exposed secrets such as API keys and access tokens, and 175 instances of exposed personal data, including medical records and bank account numbers[3]. Every one of those findings sat in a live production system, discoverable within hours. The platforms’ default visibility settings leave a project public unless someone manually switches it to private.

One specific failure mode illustrates the pattern well. In May 2025, an independent researcher scanned 1,645 applications published in Lovable’s own public showcase and found that 170 of them, 10.3%, shipped with Supabase row-level security missing entirely[4]. The vulnerability, CVE-2025-48757, meant any authenticated session could query the full underlying database directly. The Supabase URL is visible in the app’s own frontend bundle, and nothing was configured to stop a query once someone had it.

A Series A B2B SaaS team learned this the indirect way. Its comparison and pricing pages went up in a single sprint on an AI builder, and the team moved straight to the next launch. A routine security review nine months later, unrelated to the marketing site itself, found the builder’s default database was still publicly queryable. Every lead-capture submission, name, email, company domain, sat behind no real permission check the entire time.

The Real Migration Trigger: A Constraint, Not a Feeling

Not every vibe-coded site needs to migrate, and the same diagnosed-vs-felt test that applies to any other rebuild decision applies here too. If the case against the current site is “it looks unpolished” or “we should really own this properly,” that is a feeling, and a feeling is not a structural finding. Migration earns its cost only when the audit names a constraint the platform genuinely cannot fix, using the same diagnosed-vs-felt test that applies to any other rebuild decision.

A Series B team’s actual trigger came from procurement, not design. An enterprise prospect’s security questionnaire asked for the marketing site’s authentication model and data-handling policy. Nobody on the team could answer, because nobody had reviewed the underlying architecture since the AI tool generated it. That unanswerable question, not a wish for a redesign, was the real trigger. Compliance blockers, unpatchable data-model ceilings, and security findings the team cannot remediate in place are the honest short list of reasons to migrate. A site that “just needs a refresh” almost never belongs on it.

Is this actually a migration trigger? Two stacked diagnostic rows. Gate 1: is this a redesign feeling or a named constraint, verdict “not yet a trigger” in neutral gray. Gate 2: does it block security, compliance, or the data model, verdict “migrate” in blue. A closing rule bar states a feeling is never the trigger, a named constraint is; audit first using the same diagnosed-vs-felt test as any other rebuild decision. Illustrative. Is this actually a migration trigger? A felt need for a refresh is not the same as a named constraint. Gate 1 Is this a redesign feeling, or a named constraint? Not yet a trigger Gate 2 Does it block security, compliance, or the data model? Migrate Rule: a feeling is never the trigger. A named constraint is. Audit first, using the same diagnosed-vs-felt test as any other rebuild decision. Illustrative · yassersoliman.com · migration trigger diagnostic

What a Real Migration Actually Requires

Once the trigger is real, the work is less dramatic than a full rebuild and more specific than a redesign. Front-end templates and page structure usually carry over close to as-is. What has to be rebuilt deliberately is the data layer. That means permissions on every table, secrets rotated and moved out of client-visible bundles, and version control replacing whatever the AI tool’s own deploy pipeline was doing.

A real migration is not a rewrite, and treating it like one wastes the one advantage the original build had: speed. Most of the front-end markup and content structure the AI tool generated is usable as reference, and often as a literal starting template. That holds once someone with real access has reviewed what it actually does under the hood. The work that cannot be shortcut is exactly the work vibe coding shortcut in the first place. That means naming who owns which table and rotating every credential the tool ever generated. It also means turning implicit assumptions about user roles into an explicit permission model somebody actually wrote down.

None of this is unique to marketing-led builds. In 2026, CloudBees surveyed 213 enterprise technology leaders and found that 81% had seen a rise in production failures tied to AI-generated code[5]. That is inside engineering organizations that already run code review, staging environments, and release processes. A marketing team shipping straight to production with no review at all is operating with less structure than the group already reporting the problem. This is the same dynamic AI-agent code generation was already intensifying the ownership gap before vibe coding had a name of its own.

A Series C team’s migration ran long for a reason that had nothing to do with the code itself. Nobody had documented what the AI tool actually built. There was no data model, no list of integrations, no notes on what the generated backend assumed about user roles. The team spent more time reverse-engineering the old site than building the new one, and that documentation gap, not the migration effort proper, was the real cost.

The lesson generalizes past this one category of tool. When a rebuild is the wrong answer, it is usually because the platform was never the actual problem. Vibe coding inverts that failure mode. The platform genuinely can be the problem, quietly, from day one. The only way to know is to look before a security questionnaire, an incident, or an auditor looks for you.

Sources

  1. Veracode, 2025 GenAI Code Security Report – 100+ LLMs tested across Java, Python, C#, JavaScript; average 45% OWASP Top 10 failure rate; Java 72%; XSS tasks pass only 15%; syntax pass rates rose 50% to 95% since 2023 while security pass rates stayed flat 45-55%
  2. Georgia Tech SCP / Infosecurity Magazine, on the Vibe Security Radar tracker – Confirmed AI-attributed CVEs: 6 (Jan 2026), 15 (Feb), 35 (Mar), roughly 6x in one quarter; researchers estimate the real total runs 5-10x higher
  3. Escape, The State of Security of Vibe-Coded Apps – October 2025; 5,600 public apps scanned; 2,000+ high-impact vulnerabilities, 400+ exposed secrets, 175 instances of exposed personal data, all live in production
  4. Vibe Coder Blog, Post-Mortem of the Lovable CVE That Exposed 170+ Apps – May 2025; 1,645 apps scanned from Lovable’s public showcase; 170 (10.3%) missing Supabase RLS entirely, CVE-2025-48757, CVSS 8.26
  5. CloudBees, 2026 State of Code Abundance Report – TrendCandy fieldwork, n=213 enterprise technology leaders, published May 19 2026; 81% report a rise in production failures tied to AI-generated code

Seeing these patterns at your company?

Book a free WebOps Diagnostic. I'll review your site before the call and share specific observations.

Book a Free Call →

Frequently Asked Questions

Yasser Soliman

Written by Yasser Soliman

Technical Marketer

I've spent 5+ years embedded in marketing teams at B2B SaaS companies. I own the marketing website — performance, analytics, SEO, integrations — so your team ships without bottlenecks.

Let's talk about your site.

Book a free WebOps Diagnostic. Send me your URL and what you'd like me to look at — I'll come prepared with specific observations.

Book a Free Call