
A few days ago I wrote about starting my first "vibe coding" experiment. I was skeptical. Like really skeptical.
My exact words: "LLMs are good at simple tasks and not good with what constitutes complexity."
I was wrong.
The plan was simple. A markdown-to-PDF converter. No paywalls, no sign-ups, just a tool that works.
Friday night, 7 PM, holiday season. I figured I'd mess around with AI-assisted development and see what happens.
The initial scope:
That was it. A weekend project.
Four days later (part-time), I have a full SaaS application.
Not a prototype. Not a demo. A production-ready product with:
Core Features:
Full Authentication System:
Complete Document Management:
Subscription System:
Admin Dashboard:
Landing Page:

Here's what changed my mind about AI-assisted development.
It's not about better prompts. It's about giving the AI a framework to work within.
I built three things that made everything work:
Instead of organizing code by technical layers (components, hooks, utils), I organized by domain:
features/
├── admin/
├── auth/
├── document/
├── editor/
├── landing/
├── pdf-export/
├── preview/
├── subscription/
└── support/
Each feature has its own components, hooks, server logic, types. Everything related to "auth" lives in the auth folder.

This sounds simple but it changed everything. The AI could understand scope. When working on auth, it knew exactly where to look and what patterns to follow.
I created 13 rules that the AI consults before implementing anything.
Core rules that always apply:
Conditional rules that activate based on context:

Each rule is a markdown file with metadata about when to apply it. The AI reads the relevant rules before writing any code.
Example rule structure:
---
description: Master consistency rule
globs:
- "**/*.ts"
- "**/*.tsx"
alwaysApply: true
---
# Rule Content
...
This is the central instruction file for AI agents. A living document that provides:
The key section is the "Primary Rule": Always follow @project-consistency before implementing any task.

Every implementation ends with a checklist:
bun typecheckFrontend:
Backend:
Development:
tRPC gives you type safety from database to frontend. Change a return type on the server, TypeScript immediately tells you every place in the UI that needs to update.
The AI could catch its own mistakes before they became bugs.
When every feature follows the same structure, the AI learns the pattern. By the third feature, it was generating code that matched perfectly.
I didn't try to build everything at once. Each feature was a focused session:

Every rule I added made future development faster. The AI stopped making the same mistakes. Code quality went up. Review time went down.
The first attempt was rough.
I almost gave up that first night.
The difference came when I stopped treating the AI like magic and started treating it like a junior developer who needs clear documentation.
Give it a style guide. Give it architecture rules. Give it examples to follow.
Then it works.
Day 1: Foundation
Day 2: Core Features
Day 3: Extended Features
Day 4: Polish

The AI isn't the limiting factor. The structure is.
Give it clear architecture, consistent patterns, and good documentation. It will build things that would take weeks in days.
Type safety is essential.
TypeScript strict mode + tRPC meant the AI could verify its own work. Errors were caught before I even saw the output.
Rules scale.
13 cursor rules might sound like overkill. But each rule represents a class of bugs that will never happen again.
Ship fast, iterate later.
The landing page wasn't perfect on day 4. The admin dashboard needed polish. But the product worked. Users could sign up, create documents, export PDFs, and subscribe.
Everything else is iteration.
The product is live. Now it's about:
I went from "LLMs are bad with complexity" to "I just built a SaaS in 4 days."
The tools are ready. The question is whether we're ready to use them correctly.
If you're building something and want to see how the rules system works, DM me. Happy to share the setup.
And if you're skeptical about AI-assisted development like I was... try adding structure first. The results might surprise you.