A naming tool sounds like a weekend project. It is a weekend project — and then it is three weekends, because the hard part is never the model.
The model was never the bottleneck
I started with the assumption that quality came from the model. It did not. Swapping between a large and a small model changed output quality far less than changing three lines of the prompt:
- Give it a shape, not a vibe. "Suggest names" produces mush. "Suggest 12 names, each one or two syllables, no names already in this list" produces something usable.
- Constrain the output format. Asking for a plain list beats asking for prose you then have to parse.
- Show examples of what good looks like. Two or three examples do more than a paragraph of adjectives.
The UX lesson: people want volume, then taste
Early versions returned five names. People asked for more. The version that worked returned a dozen at once, grouped so you could scan them. Volume first, then the user applies taste — that is the actual job.
Keep the boring parts boring
The parts users never mention are the parts that must not break:
- Deterministic input handling — trim, normalise, reject empty.
- A visible loading state, because generation is never instant.
- A way to copy a result in one click.
None of that is interesting, and all of it is why the tool feels finished rather than like a demo.
What I would do differently
Ship the constrained version first. My first release tried to be clever with preferences and filters. Almost nobody used them. The version people actually used was a single input box and a button — which is essentially what a cat name generator is.
Build the small thing, watch what people ignore, then delete it.
The tool in question is a small side project. The prompt lessons generalise further than the tool does.
Top comments (0)