← All work
mess.vn app icon, a white M on a blue tile, centred on a deep blue field

mess.vn

AI Companion0 → 1MonetisationDesign System

✺ Founder & Product Designer · 2025 → now

An AI companion platform I designed and built with Claude, then grew on word of mouth alone to 100K+ users within months of launch.

The starting point. mess.vn started in December 2025 as something I wanted to exist: Vietnamese roleplay with the ease of a messaging app. Friends tried it first, then a free MVP went to a tight-knit roleplay community, and in March 2026 it launched publicly.

Built with the community. Early testers got short, open-ended questions and in-app coins for their answers. Direct messages, Discord threads and, later, rewarded polls turned that feedback into a steady stream of requests and friction points, steering every iteration since.

Letting behaviour decide. Not every answer needed a question. In-app tracking showed that new users opened the Chat tab far more often than Discover, even though Discover was the default landing tab. So I made Chat the default: people now land where they were already heading.

Built with Claude, directed by me. I designed and built mess.vn end to end with Claude-assisted development, owning product direction, UI, implementation and every iteration since.

Design decisions.

  • A messaging interface that feels like home. Conversation layout and typing indicators borrow the patterns of apps people already open every day, so roleplay feels natural from the first message.
  • Memory for continuity. Characters remember details from earlier conversations, so every session picks up where the last one left off instead of starting over.
  • Emotion turned into mechanics. Affection, trust and jealousy read as game stats. Every conversation becomes something you can play, and want to win.
  • Designed for revenue. I designed the M Coins economy around daily check-in streaks, rising rewards and the Scarlet membership, so people have a reason to come back before they have a reason to pay.

The outcome. 100K+ users, a peak of around 5,000 daily active users and over $11K in peak monthly revenue, all without paid advertising. That peak ran at a loss. Repricing by cost brought monthly revenue down and turned the product profitable (the decision is below).

Where it stands. mess.vn is stable and its operations are automated, so it runs without my day-to-day involvement.

✺ Landing page

Show the feeling before the feature list.

Most visitors arrive from a friend’s link, curious but not yet convinced. The page does three jobs in order: make the promise, show it working, then clear the doubts that stop a sign-up.

✺ Inside the app

Find someone. Talk. Make them yours. Come back.

Mobile first, because that’s where people text. Seven screens, one loop: find someone, talk, make them yours, come back.

01
Find someone.

Two ways in. The feed tags every character by mood and splits by chat style, quick texting or long-form roleplay, so people choose the kind of conversation before the character. The leaderboard ranks the most messaged this month and of all time, which gives the community a reason to keep building.

Discover feed: character cards with tags, chat counts, and filters for quick texting or detailed roleplay
Leaderboard podium of the most messaged, with this month, last month and all time tabs
02
Talk like you text.

The chat is Messenger on purpose: grouped bubbles, reactions, a typing indicator, and replies that land as several short texts instead of one essay. Each character wears its own theme and knows the time of day, so an afternoon hello sounds like an afternoon.

Chat with a character in a warm sunset theme: short grouped replies, a heart reaction and a typing indicator
03
Make them yours.

Every character has a profile page like a contact in your phone: theme, time awareness, and the memories and facts it keeps about you. Creators get a basic editor to start and an expert one that splits a persona into its roleplay core, hidden rules, side characters and greeting.

Character settings: display toggles, time awareness, memories and facts
Expert character editor with cards for roleplay core, hidden rules, side characters and greeting
04
Come back, then pay.

A daily check-in with rising rewards gives people a reason to open the app before they have a reason to pay. When they do, Scarlet is sold as a membership rather than a top-up: coins up front, a daily prize wheel and cheaper chats in one choice.

M Coins daily check-in: streak counter, today’s reward and the next days’ rising rewards
Scarlet membership plans for one and two months, each listing coins, the prize wheel and chat discounts

✺ One decision, start to finish

Peak revenue, negative margin. So I rebuilt the economy.

Problem

mess.vn runs on paid AI models, so every message has a real cost. Growth that ignores unit cost doesn’t build a business; it builds a bill.

What I saw

At its peak, mess.vn was bringing in over $11K a month, and the AI bill was growing even faster. Usage had scaled with everything users asked for; pricing hadn’t yet caught up with what each action cost to run.

Options

Raise prices across the board and risk the community, or reprice by cost: keep the way in affordable and charge where the heavy usage actually is.

Choice and cost

I repriced by cost. I rebuilt the M Coins economy, from usage limits to paid tiers, so that paid usage covers what it costs to serve. The trade-off was deliberate: a leaner free tier and a smaller top line, in exchange for margin.

What happened

Monthly revenue settled below the peak, but the product went from a loss to a real profit: less money in, far more of it kept. It’s the lesson I bring to every AI product: the pricing screen is also the cost-control screen.

✺ Concept · not shipped yet

When the character remembers it wrong.

Memory is what makes a companion feel like one, and the first wrong memory breaks the spell. This is the recovery flow I would ship next: the memory a reply used sits right under it, the fix happens where the mistake happened rather than in settings, the character owns the mistake in its own voice, and every change can be undone.

Curious about the thinking behind this project? Let’s talk.