<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Melisa Writes]]></title><description><![CDATA[Melisa Writes]]></description><link>https://melisawrites.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 31 Oct 2026 07:32:27 GMT</lastBuildDate><atom:link href="https://melisawrites.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Five things I rebuilt while making a Chinese naming app]]></title><description><![CDATA[I build a Chinese naming app called NameSoul. This post isn't about what I got right — it's about what I tore up first, and what each rebuild taught me…]]></description><link>https://melisawrites.hashnode.dev/five-things-i-rebuilt-while-making-a-chinese-naming-app</link><guid isPermaLink="true">https://melisawrites.hashnode.dev/five-things-i-rebuilt-while-making-a-chinese-naming-app</guid><category><![CDATA[startup]]></category><category><![CDATA[Design]]></category><category><![CDATA[showdev]]></category><category><![CDATA[buildinpublic]]></category><dc:creator><![CDATA[Melisa Wong]]></dc:creator><pubDate>Sun, 11 Oct 2026 15:15:51 GMT</pubDate><content:encoded><![CDATA[<p>I build a Chinese naming app called NameSoul. This post isn't about what I got right — it's about what I tore up first, and what each rebuild taught me.</p>
<h2>1. Names: from character soup to six deliberate paths</h2>
<p>The first version did what every naming tool does: take a few inputs, combine two characters, and declare "this one sounds nice." It demoed fine and it was wrong. A name is not a consumer product — a person carries it for years, maybe for life.</p>
<p>So I rebuilt it around six stylistic paths — bold, poetic, Five Elements, nature, homophonic, rustic. They are not cosmetic filters; each one is a different temperament, so the name itself is structurally different. And every result now ships with a written rationale: why this character, what it carries, how tone, form and imagery work together.</p>
<h2>2. Historical figures: from a generator to a real dataset</h2>
<p>For a while the "person behind the name" was generated text. It read smoothly and meant nothing. I replaced it with a curated set of real historical figures, each with an accurate, English-friendly explanation. This is a data problem, not a copywriting problem, and it is dramatically slower — which is exactly why most tools skip it.</p>
<h2>3. I deleted the "fate" framing</h2>
<p>The earliest copy leaned on fortune-style language: destiny, predictions, luck. It tested well in demos and felt wrong in the product. It had the effect of flattening an entire culture into a horoscope. I removed it and rebuilt the copy around history, geography and aesthetics instead. That change cost me the most edits and improved the product the most.</p>
<h2>4. Bilingual stopped being a result screen</h2>
<p>At first, Chinese appeared only on the result — a name and a short explanation. That treats Chinese as output. I rebuilt it so the whole interface is bilingual: an American reads English + Chinese, a French user reads French + Chinese. Chinese is not the result, it is the environment. Users absorb the shapes and rhythms without studying.</p>
<h2>5. A one-line feature users mention most</h2>
<p>Every name has a voice clip. It is the smallest feature in the app and the most-responded-to. The reasoning is simple: foreigners can't read Chinese, and a name you cannot pronounce is a name you cannot own. Sound gives the name a home.</p>
<h2>What I kept</h2>
<p>Across all five rebuilds, one principle survived: the name is not the destination, it is the starting line. Everything else — past-life stories, seal-script totems, the daily draw — exists to give someone a reason to walk through that door and keep going.</p>
<h2>What's next</h2>
<p>Next I'll write the technical side: how the seal-script rendering, the multi-language content pipeline, and the audio actually work — including the parts I'd do differently.</p>
<p>The app and its content: namesoul.net</p>
]]></content:encoded></item></channel></rss>