<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Melisa Wong</title>
    <description>The latest articles on DEV Community by Melisa Wong (@melisawrites).</description>
    <link>https://dev.to/melisawrites</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176670%2F26b88b9b-99ce-4384-947e-0d95f24fff19.png</url>
      <title>DEV Community: Melisa Wong</title>
      <link>https://dev.to/melisawrites</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/melisawrites"/>
    <language>en</language>
    <item>
      <title>From a name to a habit: the 6 product layers behind NameSoul (and what I cut)</title>
      <dc:creator>Melisa Wong</dc:creator>
      <pubDate>Sun, 11 Oct 2026 14:51:53 +0000</pubDate>
      <link>https://dev.to/melisawrites/from-a-name-to-a-habit-the-6-product-layers-behind-namesoul-and-what-i-cut-b4e</link>
      <guid>https://dev.to/melisawrites/from-a-name-to-a-habit-the-6-product-layers-behind-namesoul-and-what-i-cut-b4e</guid>
      <description>&lt;p&gt;I build a Chinese naming app called NameSoul. The interesting part, for this community, isn't the naming — it's that the product is deliberately layered, and every layer exists because the layer below it failed on its own.&lt;/p&gt;

&lt;p&gt;Here's the design, and the things I tore up on the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The premise
&lt;/h2&gt;

&lt;p&gt;People search "give me a Chinese name." Every existing tool answers the same way: input English name → output Chinese name → done. One use. No reason to return.&lt;/p&gt;

&lt;p&gt;I read that as a product smell. A one-shot tool has no retention surface. So the question became: what if the name is not the output, but the input to a longer path?&lt;/p&gt;

&lt;h2&gt;
  
  
  The six layers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Layer 1 — Choice with personality
&lt;/h3&gt;

&lt;p&gt;Six stylistic paths: bold (豪放), poetic (诗意), Five Elements (五行), nature (自然), homophonic (谐音), rustic (田园). These are not cosmetic filters — each path is a different temperament, so the name itself is structurally different. Every result ships with a written rationale: character choice, cultural context, and how tone, form and imagery work together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2 — Grounding in real people
&lt;/h3&gt;

&lt;p&gt;Each name maps to a real historical figure. This is a data problem, not a copywriting problem: a curated set with accurate, English-friendly explanations. No invented characters, no vague "ancient scholar" stand-ins.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3 — Making the abstract visible
&lt;/h3&gt;

&lt;p&gt;Enter a surname and it renders in seal script as a calligraphic "totem," plus brush calligraphy for the name itself. This is the layer where users go "I had no idea writing could look like this."&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4 — Time as a coordinate
&lt;/h3&gt;

&lt;p&gt;Birth date produces a lucky color and a personal seal. The framing matters here: it is a personal coordinate, not a prediction. That distinction drove more copy edits than any feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 5 — Story as the payload
&lt;/h3&gt;

&lt;p&gt;The "past life in China": figure, era, cities, landscapes. The design intent is that a user leaves curious about a place, not just a word.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 6 — The retention hook
&lt;/h3&gt;

&lt;p&gt;A daily "shake the stick" — one line, one day. Cheap to build, and it converts a one-time event into a daily habit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two implementation details worth stealing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Voice clip on every name.&lt;/strong&gt; Foreigners can't read Chinese, and a name you can't pronounce is a name you can't own. Native audio was a small feature and it's the one users mention most.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bilingual everywhere, not just on the result screen.&lt;/strong&gt; An American sees English + Chinese; a French user sees French + Chinese. Chinese isn't the result — it's the environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I cut
&lt;/h2&gt;

&lt;p&gt;The first version leaned much harder on a "fate" framing — fortune-style language that demoed well and felt wrong in product. It flattens a culture into a horoscope. I removed it and rebuilt the copy around history, geography and aesthetics instead. Slower to write, and far more honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is now
&lt;/h2&gt;

&lt;p&gt;10 languages · 6 styles · real historical figures · 73 guardian beasts · audio on every name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next post
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Live app / source of the content: namesoul.net&lt;/p&gt;

</description>
      <category>startup</category>
      <category>design</category>
      <category>productivity</category>
      <category>culture</category>
    </item>
  </channel>
</rss>
