Urgent.News

What's breaking now, across thousands of outlets.

Tech

What a "song for dad" form taught me about asking users for input

I build SongUp AI, an AI song maker. People type a few lines about someone, pick a voice and a mood, and get a song back. One of the most common reasons to open it is a gift for a parent, and the "song for dad" flow has taught me more about input design than any dashboard I have built. These are the notes I wish I had before writing the first form. Adjectives are the wrong question The first…

I developed SongUp AI, an AI-powered song composer. Users input a few lines about a person, select a voice and mood, and receive a song in return. One of the most frequent reasons to use it is to create a song as a gift for a parent, and the "song for dad" flow has taught me more about designing input than any dashboard I've built. Here are the lessons I learned:

Adjectives are not the right question. The initial gift form asked users to describe the person, and they answered with adjectives like kind, funny, hard-working, and the best. While a language model can create a verse from those descriptions, it's not unique and fits everyone. The best approach is to ask for small, specific details.

The prompts now request things like, "one thing he always says," "one thing he fixed, built, or drove you to," and "what you never say to him out loud." The last question is the key hook of a short video explaining the form: "Write what you never say out loud."

One specific question often reveals the core line that the entire song revolves around. A slightly uncomfortable question can yield a line that becomes the foundation of the song. Users tend to provide specifics when the form asks for them one at a time. The name is the most crucial field for a gift song, and it must be accurate.

Text models handle it well, but singing voices might not always pronounce it correctly, and different cultures have various ways to address the father figure. To address this, we treat the name as its own input and provide a field for users to write the name as it sounds. This eliminates many messages like, "the song is lovely, but that's not his name."

When users write lengthy inputs, the product should guide them in making decisions rather than silently cutting the text. A full-page pasted text might contain a verse that matters the most. Now, if lyrics exceed approximately 1,700 characters, the Create step asks the user what to do: split it into parts, shorten it, or proceed as is. This extra question at the right moment empowers the user to make the final decision.

It's essential to let users hear their lyrics before considering the cost. We show the first 30 seconds of the song sung by the selected voice before any payment is required. A full song costs $2.99, so this step is particularly important for a gift. This approach keeps the user engaged and honest; if the preview is not personal enough, they won't pay for it.

The lesson here is to ask for facts, not opinions, find the essential field (like the name), give it its own input and validation, and present the proof before the price. These principles apply to any product that transforms a few lines from a person into something personal and meaningful.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Chrome Web Store Rejection Codes: Fix the Top 4 in a Day

Originally published on ExtensionLaunch . A Chrome Web Store rejection usually arrives as a policy name and a code like "Blue Argon" or "Purple Potassium", with little detail about what the reviewer…

  • Purple Potassium rejection due to excessive permissions in manifest JSON
  • Blue Argon caused by remote code use in manifest V3
  • Yellow Magnesium and Zinc indicate functionality issues requiring debugging

The Article Already Had an og:image. Its JSON-LD Didn't Mention It.

I maintain three long-form pages that already emit JSON-LD: a format guide typed as Article , and two technical write-ups typed as TechArticle .

  • articleImage() function added to SEO utility module
  • Three pages lacked image property in JSON-LD markup
  • Test verifies articleImage() returns same URL as OGIMAGE constant

I Built a Simple Top Loading Bar for Svelte 5

A small loading indicator can make navigation feel much more responsive. But when I looked for a top loading bar for my Svelte 5 app, I wanted something that was simple to add, worked with regular…

  • Svelte 5 top loading bar created for navigational responsiveness
  • Component compatible with regular links and SvelteKit navigation
  • Installation via npm, Bun, pnpm, or Yarn with automatic NProgress dependency

More from Wednesday 11 November →