'Guys, I'm Under Attack': The Zero-Handwritten-Code SaaS That Lasted About a Week
- Date
- Mar 2025
- Tools involved
- Cursor
- Impact
- API keys maxed out, subscription paywall bypassed, database written to by attackers; app taken offline within about a week
- Root cause
- No proper authentication, no rate limiting, API keys exposed in the frontend, and an unprotected database in fully AI-generated code
What happened
In March 2025, indie developer Leonel Acevedo (@leojr94_) posted on X: 'my saas was built with Cursor, zero hand written code... AI is no longer just an assistant, it's also the builder.' The post celebrated vibe coding, the term Andrej Karpathy had coined only weeks earlier for building software by prompting an AI and largely ignoring the underlying code.
Within roughly two days, the follow-up posts arrived. His app EnrichLead, a sales-lead tool, was 'under attack': 'random things are happening, maxed out usage on API keys, people bypassing the subscription, creating random shit on db.'
Observers noted the failures were basic and structural: no proper authentication, no rate limiting, API keys exposed in the frontend, and an unprotected database. Because he reportedly did not fully understand the AI-generated code, Acevedo struggled to patch the cascading issues and ultimately took the product offline.
Documented through his own public posts and widely aggregated by outlets like Pivot to AI, the story became one of the earliest viral cautionary tales of vibe coding: an unsecured AI-built app gets exploited almost as soon as it gets attention, and this attention came from the founder's own victory lap.
Impact
Attackers maxed out usage on his API keys, bypassed the subscription paywall, and wrote junk directly to the database. Because the founder reportedly could not fully understand the AI-generated code, the cascading problems proved unpatchable in practice, and EnrichLead went offline within about a week of being announced as proof that AI was 'also the builder.'
Root cause
The exploited weaknesses were the boring, foundational kind: no proper authentication, no rate limiting, API keys sitting in the frontend, and a database with no protection. Cursor generated an app that worked, and nobody checked whether it was safe, because the person shipping it could not read the code well enough to know what was missing. The public boast then supplied the attacker attention.
How to not be this entry
- Put real authentication on every endpoint before you ship. Attackers bypassed EnrichLead's subscription because nothing checked who was calling. Read the fix guide: No auth on your AI-generated API endpoints: anyone can call your backend
- Keep API keys out of the frontend. EnrichLead's keys were exposed client-side and got maxed out within days. Read the fix guide: The AI put your API key in the frontend: OpenAI, Stripe, or Supabase keys visible in the JS bundle
- Rate-limit anything that costs you money per call. A missing limit turns one motivated stranger into your entire API budget. Read the fix guide: Why is my OpenAI API bill so high? No rate limiting on your AI endpoints
- Lock the database down so the public internet cannot write to it. 'Creating random shit on db' is what an unprotected backend looks like from the owner's side. Read the fix guide: Supabase Row Level Security is off: your whole database is readable with the anon key
- Understand the code before you announce it. 'Zero hand written code' is a fine experiment and a bad public disclosure, because attackers read X too.
Tools that actually fix this
Recommended because they address the failure mode above, not because of the payout. Some are affiliate links; see how we choose.
If your AI-built app uses Supabase, Row Level Security is the actual fix for exposed data, and it is free. The dashboard's Security Advisor lists every table you left open.
Try Supabase →Drop-in authentication that handles sessions, tokens, and protected routes properly, so you stop shipping the hand-rolled auth an AI guessed at. Generous free tier for a real app.
Try Clerk →Frequently asked questions
What happened to EnrichLead?
EnrichLead, a sales-lead SaaS that founder Leonel Acevedo said was built entirely by Cursor with zero handwritten code, was attacked within roughly two days of his viral post in March 2025. Attackers maxed out his API keys, bypassed the subscription, and wrote to his database, and he ultimately took the app offline.
What security flaws did EnrichLead have?
Observers noted the EnrichLead failures were basic and structural: no proper authentication, no rate limiting, API keys exposed in the frontend, and an unprotected database. None of these are exotic attacks; they are the standard checklist items the AI-generated code shipped without.
Did the EnrichLead founder really write zero code?
By his own public account, yes. Leonel Acevedo posted on X that 'my saas was built with Cursor, zero hand written code,' celebrating AI as 'also the builder.' That same lack of hands-on familiarity reportedly made it hard for him to patch the app once it was under attack.
What is vibe coding and how does EnrichLead relate to it?
Vibe coding is the term Andrej Karpathy coined in early 2025 for building software by prompting an AI and largely ignoring the underlying code. EnrichLead became one of the earliest viral cautionary tales of the practice: a fully AI-built app that got exploited within days of its founder publicly celebrating that no human had written it.
Sources
- Leonel Acevedo (@leojr94_) on X: EnrichLead under attack
- Pivot to AI: 'Guys, I'm under attack', AI vibe coding in the wild
- Final Round AI: Vibe coding failures that prove AI can't replace developers yet
Related error guides
No auth on your AI-generated API endpoints: anyone can call your backend
The AI put your API key in the frontend: OpenAI, Stripe, or Supabase keys visible in the JS bundle
Why is my OpenAI API bill so high? No rate limiting on your AI endpoints
The Vibe Oops briefing
One email when something ships to production that should not have. New incidents, new error guides, no filler.