How do you design a conversation with the dead?
A vent is not a support ticket. Someone arrives with a raw, unresolved thing, so the whole flow has to hold that: vent → choose a mind → receive it reframed in that voice → keep it, or let it go. The anonymous tier can run the entire loop without an account, because the point is the shift, not the signup.
Engagement without dark patterns
Gamification in a vulnerable-moment app is a trap the moment it becomes streaks-and-guilt. So the engagement here is built on respect, not pressure. The daily quote gives free users a small reason to return without a countdown timer. Journaling is the thing you earn by wanting to keep something — it asks for an account because it persists (keyed to a user in Supabase), not because a wall dropped. And the tiers are a product decision, not a paywall: anonymous users taste the entire magic — vent, lens, response, screenshot — so the ladder rewards attachment instead of punishing curiosity. The whole loop is designed so coming back feels like a choice you made, not a hook that caught you.
Why three skins — mood-matched worlds
Cyberpunk, Kawaii, and Notepad exist so the tool can meet your mood instead of imposing one aesthetic on a vulnerable moment. The theme you pick reframes the same conversation — a small act of control handed to someone who arrived feeling out of control.
Conversational AI — perspective & mind maps
The value is the reframe: you vent, you pick a mind, and the AI hands your problem back to you seen from somewhere else — sometimes as a voice in conversation, sometimes mapped out so you can see the shape of what you're carrying. The hardest screen isn't the input; it's the ending. A perspective-shift persona should land a reframe and then let go — not become an AI buddy — so the conversation is arc-shaped: the figure works toward a "click" over a few exchanges, leans harder on their real, attributable quotes the deeper it goes, and closes in character rather than running out of a message counter. You can stay if you want to go deeper; it just won't pretend to be your friend. That restraint is the traction — people come back for a tool that shifts them and then trusts them to leave.
Field notes
The empty state that was lying
A silent RLS failure surfaced as a confusing journal empty-state — "nothing saved" when a save had actually errored. Redesigned it to distinguish "you haven't saved yet" from "something went wrong — retry," so the interface never quietly swallows a failure.