DEV Community

Jakub
Jakub

Posted on

We Shipped an AI Song Generator. The Hardest Part Wasn't the AI.

We launched Magical Song a few weeks ago. It's an AI song generator where you describe a story, pick a genre, and get a studio-quality track with real vocals in under two minutes.

The AI generation part? That was the easy part. Seriously.

The part that nearly broke us was everything around it. The UX flow, the payment model, and a fundamental misunderstanding about who our user actually is.

Three steps sounds simple. It wasn't.

Our flow is: describe your story > pick genre and mood > get your song. Three screens. Should be straightforward, right?

The first version had a long form. Name of the person, occasion, details, inside jokes, mood preference, tempo, vocal style. We thought more input = better output. Users thought "this is homework" and bounced.

We cut it down to the bare minimum. One text area for the story. A grid of genre cards. A generate button. Conversion went up immediately.

The lesson wasn't new but it hit different when you see it in your own data: every extra field is a decision, and every decision is a chance to leave.

Stripe one-time payment was a deliberate bet

Most AI tools go subscription. We went with a single payment of $6 per song. No account needed.

Here's why: our users aren't repeat customers in the traditional sense. Someone ordering a birthday song for their mom isn't coming back next week. They might come back in a year for another occasion, or never. A subscription would feel like a trap for something they need once.

Stripe Checkout made this dead simple. We create a session, redirect, handle the webhook, unlock the download. No user accounts, no password resets, no subscription management UI. The entire payment flow is maybe 200 lines of code.

One unexpected side effect: zero refund requests so far. When people pay once for something specific, they know exactly what they're getting. No "I forgot to cancel" frustration.

The gift economy thing we didn't expect

We built Magical Song thinking people would make songs for themselves. Playlists, fun experiments, maybe content creators needing custom jingles.

Wrong.

Almost every song is a gift. Birthday songs, anniversary tracks, wedding surprises. And then the one that really caught us off guard: our first paying customer ordered a memorial song. Someone used it to create a tribute for a person who passed away.

This completely changed how we think about the product. We're not building a "fun AI toy." We're building something people use for moments that actually matter to them. That raises the bar on everything: the quality of the output, the reliability of the service, the tone of the landing page.

When your user is buying a gift, the UX pressure is different. They're not browsing. They're on a mission. They have a deadline (the birthday is tomorrow). They need confidence that the result will be good enough to share. Every friction point isn't just annoying, it's a risk that the gift falls through.

What I'd do differently

If I were starting over, I'd user-test the payment moment earlier. We spent weeks tuning the AI prompt engineering and almost no time watching people go through checkout. Turns out the moment someone decides to pay $6 for an AI-generated song is fragile. They need social proof right there, not on the landing page.

I'd also build the sharing flow first. Right now we generate a shareable link, but it's an afterthought. For a gift product, the "unwrapping" experience should be the hero feature. That's next on our list.

The stack, briefly

We built this with Lovable (React + Supabase), Stripe for payments, and a third-party AI music API for generation. The whole thing runs serverless. Total development time from idea to first paying customer was about two weeks.

If you're building something similar, the boring advice is the right advice: keep the flow short, make the payment invisible, and watch real people use it before you optimize anything else.

We're part of Inithouse, where we run ~14 MVPs simultaneously trying to find product-market fit. Each one teaches us something. Magical Song taught us that sometimes your users aren't who you think they are, and that's actually a good thing.

If you want to try it: magicalsong.com. And if you're curious about auditing your own vibecoded project, we also built Audit Vibe Coding for exactly that.

Top comments (0)