How Complex Can a Non-Programmer's 100% Vibe-Coded Project Actually Get?
I am not a programmer.
I've wanted to build something my entire career. Not manage it, not spec it out for someone else and hope what comes back matches what I had in my head, but actually make it myself.
I got into UX design. I became a product manager. I even started a startup that built mobile apps — which went nowhere, but that's a different story. None of it scratched the itch. I was always one step removed from the thing I actually cared about.
Then GPT-4 came out.
Suddenly I could describe what I wanted and get back code that ran. I couldn't read it. I definitely couldn't debug it. But it ran. And that was enough to get me hooked.
What followed was the craziest year in software tooling I've ever seen. Claude 3.5. Cursor. o1. DeepSeek. Manus. Claude Code. Codex. OpenClaw. Every few weeks there was something new, something better. "Vibe coding" became a thing.
I tried basically all of it. And the stuff I was building kept getting more ambitious. Python scripts, then browser extensions, then websites, then iOS apps and then a full macOS desktop application.
Somewhere along the way, one thing became clear: there is still a real gap between programmers and non-programmers when it comes to directing AI. Having a technical background gave you a massive head start — not in writing code, but in knowing what to tell the AI. Non-programmers like me were hitting walls that programmers didn't even know existed.
So I decided to build something helping non-programmers like me to direct AI more effectively. I named it PreVibe.
The field kept eating my roadmap
Here's a sad thing about building tools in a fast-moving field: the problems you're solving keep disappearing.
I had this feature planned — a "variable name dictionary" — because AI used to be terrible at consistency. You'd be building a chat feature and the AI would call it chat in one file, conversation in another, dialog in a third. Debugging drove me crazy. So I built a tool to enforce naming consistency across the codebase.
By the time it was ready to ship, Claude Code and Codex had basically stopped making that mistake. The feature was dead before it launched.
This happened more than once. I'd identify a pain point, spend weeks building a solution, and then watch a model update or a new agent tool just... solve it. It taught me something: in this space, the tool maker has to stay honest about what problems are still real and which ones the underlying technology has already eaten.
"Vibe coding is only good for toys"
There's this take that keeps showing up:
Vibe coding is fine for demos and weekend projects, but you can't build anything serious with it — especially if you're not a programmer. You can't describe everything the AI needs to know, you can't review what it generates, and eventually the whole thing collapses under its own weight. Stick to cat ring light apps.
I didn't know if that was right. PreVibe was the most complex thing I'd ever built, but I had no way to quantify how complex it actually was.
Then I found Graphify — an open-source tool that turns your codebase into a knowledge graph. Every file, function, and dependency becomes a node. Every call and import becomes an edge. I pointed it at PreVibe and hit enter.
I was not ready for what came back.
Here's what 100% vibe-coded software looks like

- 472 code files
- 2,460 nodes
- 4,791 edges
- 64 communities
- 118,794 lines of code
This is a macOS desktop app on Electron with a Next.js server, Stripe billing, OAuth, a local MCP protocol layer, dual SDK support for Claude and Codex, a cloud-based multi-model routing system, and a full admin backend.
I didn't write a single line of it by hand.
Now here's what my previous vibe-coded project looked like — something I built last year and was genuinely proud of at the time:

- 69 files
- 457 nodes
- 498 edges
- 69 communities
You can see it without understanding graph theory. The old project is a bunch of small, isolated clusters floating in space. PreVibe is a dense, interconnected organism.
It suggests that building complex software through pure vibe coding is not impossible — at least at the complexity level of PreVibe. Is PreVibe as complex as VS Code or Figma? No. Obviously. But it's not a weekend hack either. It's a shipping product with real payment processing, real auth, real multi-provider infrastructure, and real users. That puts it well past the "vibe coding is only for toys" line.
The one thing that almost killed the project
If you made me pick the single biggest challenge of vibe-coding something complex as a non-programmer — and "complex" is relative; for a beginner, that 69-file project might already be complex; for a senior engineer, PreVibe is a simple app — it would be this: AI over-designs.
You give it a prompt, and it tries to cover every possible interpretation. Extra abstractions. Defensive code for scenarios that rarely happen. Utility functions nobody asked for. On a small project, you don't notice. On a complex project built over months, those redundancies compound. Technical debt grows exponentially until even the AI chokes on the codebase it created.
A programmer can handle this. They review the diff, cut the fat, and steer the AI back on track.
A non-programmer doesn't have that ability. They can't read the code well enough to know what should be cut — so they hit Accept. Over and over.
The only thing that consistently worked for me was front-loading the thinking: writing down exactly what I wanted AND what I didn't want before the AI started generating. Define the boundaries up front instead of trying to clean up the mess after.
This is still hard for non-programmers. But now I have PreVibe — first for myself, now for anyone dealing with the same problem. I'm using it to develop itself now.
Go build
The freedom to generate code gives you the freedom to build products. The freedom to build products gives you the freedom to create. And creating is such a wonderful thing — everyone deserves to experience it.
Maybe one day you'll find the vibe coding tool that fits you best. Maybe you'll use it to build something way bigger than anything I could build. If that day comes, I'll be genuinely proud of you.
Looking forward to sharing the road.