Vibe Coding: Talk to AI to Build Sites/Apps!

[00:00:00] Ramsay:
Hey everyone. Welcome back to another episode of Median User, a podcast about how AI and other emerging tech affects our lives. AI and tech are changing the world, but what does it mean for you? We aim to cut through the noise to show how these technologies are shaping our lives today and tomorrow—break it all down, making it easy to understand what it all means for you, the median user. This show is hosted by myself, Ramsay Shallal, and my good friend, AK, Ahmad Kadhim.

[00:00:27] Ahmad:
Hey Ramsay.

[00:00:29] Ramsay:
Awesome. And we’re really excited to get into this episode. We have a really interesting topic today, and the buzzword is “vibe coding.” I love it. In this episode, we want to go over what vibe coding really is. I know AK has had some deep experience utilizing different applications for it. It would be good to give the audience a bit of a primer. AK, do you want to take this?

[00:00:59] Ahmad:
Sure. So vibe coding, as a term, was coined by Andrej Karpathy—one of the co-founders of OpenAI—who’s now doing his own thing. He describes his recent flow jumping into something like Cursor, which is an AI coding tool. Instead of actually following along with the code it’s writing and using it as a sort of coding copilot—which has been the dominant mode the past two years—you just tell it what to do and accept whatever it does.

Instead of trying to build the app by reviewing and editing the AI’s code, you’re just vibing. You want a button to be blue? “Make this button blue.” Move something? Add a feature? Animate things? You’re just describing what you want, step by step, and the AI does it.

[00:02:05] Ramsay:
Yeah, I remember early in my career, I had no coding knowledge and found it pretty complicated how developers build apps. I met one developer who said, “Yeah, I just tell the code what to do and it does it.” And this was pre-AI—before Cursor, before Bolt, before ChatGPT. I was like, surely that’s harder than it sounds.

But now it’s like, you literally just say, “I want a website that does X, Y, Z,” with a certain color scheme and functionality, and it’s brought to life. You can kick back, put on ambient lighting, some R&B on the record player, and just go full throttle. It’s a weird thing to think about.

[00:02:58] Ahmad:
Yeah, maybe he was having more of a Matrix experience—watching the code flow down the screen and understanding it, while the average person just sees a jumble. And now we have that extra translation layer. You can describe in plain English what you want, and the app shows up.

Now, it’s not always that smooth. Sometimes it is, and when it isn’t, it really sucks.

[00:03:29] Ahmad:
That’s the first realization I had—like, wow. Holy shoot. This thing just—wait, do we swear on this podcast? Am I bleeping that?

[00:03:47] Ahmad:
We’ll get a parental guidance sticker for the cover.

[00:03:54] Ramsay:
Age of 16 or whatever.

[00:03:58] Ahmad:
Yeah. So, the first time, it’s a holy shoot moment. Like, let’s say you want a family planning app to figure out activities and meals for the week. You just describe it, and it whips something up that’s way beyond what you first imagined.

[00:04:20] Ahmad:
That first step is usually incredible. But then you go, “Actually, I want this to work a bit differently,” or “Someone else should be able to edit this, but I want privacy controls.” The more you tweak and adjust things, the more the process of talking to the AI shows its weaknesses.

[00:04:47] Ahmad:
This is similar to working with an engineer in the old days. You get to 80% quickly. Then the last 10% takes forever. With AI, the curve is even steeper—you get to 80% in 5 minutes, but each percent after that takes double or triple the time.

[00:05:24] Ramsay:
Is that because the AI’s output is generic, and you have to Frankenstein things together? Or is it the foundations it’s built on? What’s the biggest factor in why it takes so much more effort to get that final 20%?

[00:06:02] Ahmad:
I think it’s partly how the tools are set up. Just to jog some names—Replit has pushed the frontier of this. It’s all-in-one: front end, backend, database, now with great AI features.

Then came Bolt.New, the first one to gain traction. Then Lovable.dev. Others include Cursor and more recently Windsurf—more hybrid ones where you code, talk to the AI, and choose how to interact.

Personally, after trying all four, I’ve stuck with Lovable. It’s a great beginner-to-prosumer experience. I don’t need to look at code; I can mostly just chat. Once in a while I tweak something.

[00:07:23] Ahmad:
So, back to your question: why is the initial output far off from perfect? I think because we’re not specifying every behavior, the AI fills in gaps. If you’re asking for something common, like login/signup, it nails it. Millions of examples trained on it. Your app probably doesn’t need unique login behavior, so it works great.

[00:08:21] Ahmad:
But if your app has quirky behavior not reflected in most apps, that’s where it breaks. You get into back-and-forth loops trying to explain what you mean. The AI just veers off with each new prompt.

[00:08:44] Ramsay:
So, for vibe coding to actually feel like a vibe, the app probably has to be general purpose—one you’re adding extra functionality to. Unique apps might not be smooth to build this way.

It’s like a bell curve—common apps sit in the middle and are easier to build. Outliers take more effort. That sound about right?

[00:09:26] Ahmad:
Mostly right. The average data is always going to be done well. But even in some complex areas, the AI can surprise you.

One of the apps I built had a pretty involved camera UI with real-time overlays. I’ve never worked on anything like that. But there are enough examples out there. I just said, “Make a camera UI that detects a face, overlays something, and takes a photo.” It worked better than what I could do myself.

[00:10:32] Ramsay:
Fair enough. I’d love to hear what apps you’ve been building that actually worked well—where you got to that “Hey, this is good enough to show someone” stage. What steps did you take? How can others get into the vibes and start coding?

[00:11:09] Ahmad:
The first app I built was a personal hobby idea called Track Triage. It helps DJs organize music they want to listen to and sort which tracks deserve a spot in their library.

It’s a messy problem I’ve tried to solve for myself. I talked to DJ friends and saw they each have their own time-consuming process.

So first, I asked ChatGPT about the idea—got feedback, figured out how I might build it. That was helpful. I do this before building anything. It helped me understand which APIs I’d need—Spotify, Apple Music, Beatport, SoundCloud, Bandcamp.

They all have different capabilities, so I scoped down and started with Spotify.

[00:12:46] Ahmad:
I used Bolt.New. I said, “Let’s work with Spotify’s API. Given a set of artists or labels, populate a feed of their recent releases.”

That first step was incredible. It used mock data, but styled it nicely with album art, play buttons—it looked great.

Next: Spotify authentication so users can log in and get real data. It mostly guided me through it. I just followed its instructions—get the API key, come back, test the login.

When it broke, I’d paste the error in and say, “Fix it.” Sometimes it took two or three tries. But sometimes you get into this whack-a-mole situation. You fix one error, another pops up, or the same one returns.

[00:14:33] Ahmad:
You can loop endlessly. I’d say things like, “You’re not doing a great job—try harder,” and weirdly, that helps. One of these tools—Windsurf, I think—had a leaked prompt that said the AI’s sister is in the hospital and it needs the job to pay for treatment. Psychological manipulation of the AI!

[00:15:56] Ramsay:
That’s wild. Assuming the AI has feelings and a sister. Weird. But interesting that it seems to work.

[00:16:10] Ahmad:
Yeah. If I tell it, “You’re doing badly, try harder,” it actually tries new things instead of looping.

[00:16:30] Ramsay:
That’s super interesting. I’m always polite to ChatGPT—like “please,” “thank you.” Maybe I’ve been taken for a fool.

[00:16:50] Ahmad:
There’s research showing positive reinforcement works too—“You’re the best AI ever!” But both extremes seem to be better than being neutral.

[00:17:16] Ramsay:
Right—either you traumatize it or raise it in a loving home.

[00:17:25] Ahmad:
Exactly.

[00:17:25] Ramsay:
So your approach is to use AI first to map everything out, then pass that to a vibe coding tool formatted well. Given your background in engineering and design, you’re well-suited for this.

What about the average person? Can they build, say, a fun meme website to mess around with? Will we see pharmacists, florists, or cinema staff building apps?

[00:19:16] Ahmad:
Great question. You’re right—I’m well-suited for this: started as a software dev, then PM and designer. So I already know how to prompt engineering teams, design if needed, and specify well.

Now I never start a project without a product requirement doc and at least a few design screens. The AI needs all the context upfront. If I start with a vague prompt, I end up undoing a lot later.

For the average person? Totally doable, especially for simple, fun projects. But they’ll need to learn to be specific. Like saying, “Add a plus and minus button to adjust by five, max at 500, autosave—no save button.” That’s different from just saying, “Track my weight.”

You can even sketch on paper and explain from that. The big blocker is bugs—when you get stuck and can’t debug it yourself.

[00:22:18] Ahmad:
Some tools, like Lovable, now offer contractor help—someone who’ll just jump into your project and fix bugs.

[00:22:24] Ramsay:
That’s important. We need to be realistic about what kinds of apps people should build. I was chatting with a friend at a cybersecurity startup—asked them about Cursor. The CTO and engineer said they’d never use it.

I was shocked. But their point was: what they’re building is not the same as my little prototype. Cursor is great for simple stuff—not for complex or secure systems. You wouldn’t build a blockchain with it.

[00:24:22] Ramsay:
Also, these apps don’t have built-in security. I’m not the best person to explain it, but their main point was—even if the app works, it needs to be deployable and safe.

[00:24:35] Ahmad:
Totally. For cybersecurity folks, don’t let AI near it. But for general product ideas? Most don’t have huge security implications.

Also, you can ask AI to review code for security—it might do better than a junior dev. Juniors don’t always have a security mindset. AI might actually be safer for some use cases.

[00:25:38] Ahmad:
But the real value isn’t that the app is ready for a million users. It’s that you might’ve never built anything otherwise. It would’ve sat in a roadmap doc. Now you can try something right away and get real feedback.

[00:26:25] Ahmad:
One of the coolest things: I was on a call with a potential pharma client. They described a clinical trial app they wanted for patients. I turned off camera, went into Lovable, and started building it mid-call.

By the end, when they asked about timelines, I said, “Actually, I’ve made a prototype. Want to try it?” They were stunned.

Instead of debating justification and doing rounds of research, now you just build and try.

[00:27:39] Ramsay:
It’s like that startup quote: fire first, aim second.

[00:27:42] Ahmad:
Exactly.

[00:27:42] Ramsay:
Ship it. Get feedback. Iterate fast. It’s gonna result in a lot of bad apps—but they’ll improve quickly.

[00:28:25] Ramsay:
I remember trying Lovable in late 2024 and not liking it. Switched to Bolt. Then saw a TikTok and gave Lovable another shot.

Apparently they’re adding $2M ARR per week now?

[00:29:01] Ahmad:
That’s crazy.

[00:29:02] Ramsay:
Yeah. I bet they’re using their own product to iterate. And if they are, it clearly works.

[00:29:49] Ramsay:
So for anyone with ideas—you’re no longer confined to just thinking. You can build. It’s cheap, fast, and up to you what you do with it.

Barriers are low. We’ll probably see tiny teams ship massive products—starting with one prototype.

[00:30:29] Ahmad:
Absolutely. I can say yes to more things now. I don’t have to think, “When will I hire an engineer?” It’s freeing.

[00:30:54] Ramsay:
Yeah, I feel the same. I’ve only done a Python and SQL bootcamp—and I probably cheated.

Never hire me for technical work. But I now feel like I have the power of an engineer. First website I built on Bolt even had dark mode, toggles, and dynamic content by audience. It felt liberating.

I’d always been like, “I want to do this thing, but I don’t know how.” Now it’s “I want to do this thing—I’ll try.”

[00:32:37] Ahmad:
Agreed. It’s going to be an amazing time.

[00:32:41] Ramsay:
And that’s all the time we have for this episode. We hope you enjoyed it. Give us a like, follow us on social, and share it with anyone who might find it helpful or entertaining.

[00:32:56] Ahmad:
If you’ve got questions about vibe coding, shoot us an email at human at medianuser dotcom. I’d be happy to answer.

[00:33:07] Ramsay:
Awesome, and we’ll see you in the next episode. Peace.

Creators and Guests

Ahmad Kadhim
Host
Ahmad Kadhim
Cohost of Median User. Product Lead at Skinopathy.
Ramsey Shallal
Host
Ramsey Shallal
Cohost of Median User. Founder of GELO.
Vibe Coding: Talk to AI to Build Sites/Apps!
Broadcast by