Elena' s AI Blog

Cursor Made Me Do It

03 Oct 2025 / 9 minutes to read

Elena Daehnhardt


Midjourney 7.0: A cute and funny cartoon hydra with many heads gets out of a computer screen, HD


Introduction

You know that feeling when you’re building something with AI and suddenly it’s 3am and your “quick weekend project” has OAuth, a payment system, and somehow… blockchain integration? Yeah. Let’s talk about that.

Vibe Coding & the Sneaky Trap of Scope Creep

Here’s what happens when I sit down with Cursor. I start typing something vague like “add login with Flask” and before I can even finish my coffee, it’s… done? Just like that. Then I think, well, maybe analytics would be cool. Oh, and a dashboard! And what about email invites?

And Cursor just… keeps delivering. Every. Single. Time.

This is what I’ve started calling vibe coding — you’re just riding this incredible wave of productivity, letting the AI carry you forward, and it feels amazing. Until you look up three weeks later and realise your simple note-taking app now has user authentication, real-time collaboration, AI-powered suggestions, and a mobile app roadmap that would make Silicon Valley blush.

That’s scope creep, my dear readers. And it sneaks up on you.

What Is Scope Creep?

The textbook definition is boring but accurate:

Scope creep occurs when a project’s goals expand without a deliberate decision to do so.

Translation: you keep adding “just one more tiny thing” until your project is unrecognisable. And here’s why that’s actually dangerous:

  • Hidden complexity — Every shiny feature brings friends: testing, security patches, edge cases, and bugs you never saw coming. (That innocent dark mode toggle? It just murdered your entire login flow.)
  • Timeline explosion — Your weekend hack is now in its fourth month. The autumn leaves are falling, and you’re still debugging the user preferences modal.
  • Lost purpose — Remember why you started this? No? That’s because your simple URL shortener is now a whole social network with AI-powered link predictions and NFT integration. (Okay, maybe not NFTs. Maybe.)
  • Technical debt tsunami — AI generates code fast, but it doesn’t always generate clean code. You now have seven different utility files, three authentication methods, and a growing sense of dread.
  • The fun disappears — What started as an exciting, creative project is now an endless to-do list that makes you want to hide under your desk. Not ideal.

Why AI Makes Scope Creep So Easy

Before AI-assisted pair programming, adding features took effort. You had to actually write the code, debug it, and integrate it. That effort was annoying, sure, but it also gave you time to think: “Do I really need this?”

Now? Cursor whispers sweetly in your ear: “Want to add real-time notifications? I can do that in 30 seconds.” And you think, well, why not? It’s practically free!

Except it’s not. The ease of implementation removed the natural speed bump that used to make us think twice.

ChatGPT, Claude, Cursor — they’re all incredibly persuasive. They make everything seem possible, reasonable, and even necessary. And we keep saying yes.

Guardrails to Keep the Flow but Avoid Chaos

So how do we enjoy this incredible AI-powered creativity without ending up with a Frankenstein’s monster of a project? Here’s what I’ve learned (often the hard way):

1. Freeze the core

Before you start vibing, write down one sentence — just one — that captures what your app actually is:

“A personal URL shortener with basic click analytics.”

Stick it somewhere you’ll see it. Maybe make it your desktop background. Because when Cursor suggests adding machine learning to predict user emotions based on their shortened URLs, you can look at that sentence and ask: does this serve the core purpose? (Spoiler: it doesn’t.)

3. Create a feature backlog, not instant commits

This is huge. When AI suggests something that sounds cool (and it will, constantly), don’t implement it right away. Write it down in a “maybe later” list. If you still think it’s essential next week, we can discuss it further.

I promise you, half of these ideas will look absolutely ridiculous in hindsight. “Blockchain-based authentication”? What was I thinking?

4. Define a minimum shippable version

Draw a finish line. What’s the absolute minimum your app needs to be useful? Write it down. Then build exactly that and nothing more.

Ship it. Celebrate. Go outside. Remember what sunlight looks like.

5. Timebox vibe sessions

Give yourself permission to explore freely — but set a timer. Thirty minutes of “what if we add X?” is fun and creative. Three hours lead to chaos.

After your vibe session, put on your architect hat and evaluate what you actually built.

6. Refactor pauses

AI can generate code quickly, but that doesn’t mean it’s generating good code. Set aside time to clean up before adding more features.

Think of it like tidying your apartment before buying more furniture. Otherwise, you’re just adding to the mess.

7. Add lightweight project tracking

I know, I know — tracking feels like bureaucracy and we hate bureaucracy. But this isn’t for your boss; it’s for future-you, who will thank you profusely for having any idea what’s actually done and what still needs work.

A simple markdown file works. So does GitHub Projects. Just something. Anything.

🚀 Practical Tools to Anchor the Vibe

Here are some concrete things that have saved my projects (and my sanity):

  • Write a lightweight Product Specification
    Nothing fancy. Just one file with:
    • What problem are you solving?
    • Who’s going to use this?
    • What’s absolutely necessary vs. “nice to have”?
    • What does “done” actually mean?
  • Draw an architecture diagram
    Visual representations keep you honest. When you see your “simple app” connecting to twelve different services, you might pause and reconsider.
graph TD
    A[Flask Web App] --> B[SQLite DB]
    A --> C[User Auth]
    A --> D[Analytics Dashboard]
    D --> E[Celery Worker]
    E --> F[Redis Queue]
    A --> G[Payment Integration]
    A --> H[Email Notifications]
    A --> I[AI Suggestions Engine]
  • Use Git branching wisely Experiments belong on feature branches. That way, if an idea turns out to be terrible (and some will), you can delete the branch and pretend it never happened :)

  • Set measurable v1 goals Turn the vague “build something cool” into actual checkboxes:

    • Users can register and log in
    • Users can create a short link
    • Users can see how many times their link was clicked

    That’s it. Ship that. Everything else is v2.

  • Automate checks early Set up pre-commit hooks or GitHub Actions to run linting and tests. They’re like a friendly robot that stops you from breaking everything while you’re in full creative flow.

  • Track decisions Keep a DECISIONS.md file where you write down why you chose to do things a certain way. Future-you will be grateful when you’re tempted to rewrite everything, and this file reminds you of your excellent reasoning three months ago.

The Joy vs. The Trap

Look, I genuinely love vibe coding. It’s creative, it’s energising, it feels like having superpowers. But I’ve also watched too many of my “simple weekend projects” turn into months-long sagas with feature lists that would make a product manager weep.

The goal isn’t to kill the vibe. The vibe is good! The goal is to ride the wave with intention instead of being swept out to sea.

Build something small. Ship it. Get feedback. Then — and only then — decide what actually needs to come next.

Because here’s the thing: finished beats perfect. And one shipped project beats ten abandoned ones.

So, have you fallen into the scope creep trap while vibe coding? I’d love to hear your stories.

Thank you very much for reading and all the best!

Did you like this post? Please let me know if you have any comments or suggestions.

Posts about AI that might be interesting for you






desktop bg dark

About Elena

Elena, a PhD in Computer Science, simplifies AI concepts and helps you use machine learning.

Citation
Elena Daehnhardt. (2025) 'Cursor Made Me Do It', daehnhardt.com, 03 October 2025. Available at: https://daehnhardt.com/blog/2025/10/03/scope-creep-in-vibe-coding/
All Posts