Inspiration
Loneliness is the quiet epidemic of our generation. I see everywhere people having a bad day and having nobody to actually text about it.
AI chats have memory now, even the free ones. But they remember everything, and after a while it gets confused. More importantly, they don't remember like a friend does. A friend doesn't keep a log of you. A friend keeps the small things: the exam you were stressed about, the person you stopped talking to, the thing you were proud of and didn't tell anyone else. Those details are what make someone feel known.
That's the idea behind Lucy, and that's where most of the work went: a memory that remembers like a friend does.
What it does
Lucy is an AI friend. You text her like you'd text anyone.
- A short questionnaire at sign-up tells her who you are before the first message.
- She writes in short bubbles, lowercase, with actual opinions. No bullet points, no "would you like advice or would you rather vent?".
- In the background, a structured memory keeps what matters: who you are, your goals, your relationships, your traits, what you like, what's going on in your life. Small things expire on their own. Weeks later, she brings things up herself.
- You log your mood in one tap a day. Your mood today and your seven-day average reach her before every reply, so she goes gentle on a rough week without you having to say it. A mood tracker shows your streak, a wellbeing score and a chart.
- She knows what time it is for you, and how long it's been since you last talked.
- You can erase her memory in one tap, and delete your account just as easily. No ads.
How I built it
React Native with Expo, in TypeScript, with Expo Router and Reanimated. English and French.
Supabase for the database: Postgres with row-level security on every table, and triggers on the columns that decide access, so the app can't write them.
A Node/TypeScript server builds the prompt (memory, mood, questionnaire answers, local time), calls the model through the OpenAI Responses API, cleans the reply, and runs the memory worker. The worker reads the conversation in segments and extracts facts into typed tables. There's no vector database. Recency and strength scoring on plain Postgres tables is enough for one person's life.
Monetization runs on RevenueCat. After onboarding you really talk to Lucy and get five free exchanges, once and for all. The counter doesn't reset. The sixth send is refused by the server, which stamps the wall. The app never decides access itself: when the quota is spent, the server asks RevenueCat whether the entitlement is active, and answers 503 rather than let anyone through if RevenueCat is unreachable. Two subscriptions, monthly and yearly, both with a 7-day free trial, plus dedicated screens for lapsed subscriptions and billing issues.
Challenges I ran into
Making her sound like a person. Language models love bullet points, dashes and hedging. Replies are cleaned server-side, and each line becomes its own bubble, at the pace a friend would type. I improved it by kepping the prompt short. Every time I added a rule, she got worse. The current version is a dry character sheet with one priority.
The paywall. The first version came before the chat, so people were asked to pay for something they had never tried. I moved it after five real exchanges, which meant the server had to become the only thing that decides who gets in. It's very new, so I haven't had the chance to get a lot of feedback yet, but since I noticed a huge drop in traffic right at the paywall, I think being able to see the product might be a factor in increasing the number of trials.
Finally, the App Store review process took quite a while for the app to be approved.
Accomplishments that I'm proud of
Lucy is live on the App Store, and I built it alone. I had never written code or made an app before this.
What I'm most happy about is that I did it on the side of a full-time summer job, while also preparing for an exam. There wasn't a single week where Lucy was the only thing I had to do.
What I learned
I had never built anything before, and I loved it. Seeing an idea turn into something people can actually download was a revelation. I don't think I'll stop.
I learned to watch how people really use the app. I realized that tracking is absolutely necessary just to understand what users are doing and what might be causing them to abandon the app.
I also learned that a simple paywall wasn't what converted users. By observing how the best apps operated, I noticed that they provided users with a complete journey that gradually drew them deeper into the app until they finally reached the paywall. So that's what I've done, and that's what I'll continue to do.
And on a personal level, I've also learned to be much more organized, to stay disciplined, and that every hour I can devote to my project during the day is time well spent. I'm entering my final year of study this year, and this is clearly a skill that will allow me to take my project as far as possible while I'm still in college.
What's next for Lucy
Marketing first. I'm running an Apple Ads campaign to understand which keywords people search, how they behave, and to make the App Store listing more relevant, because conversion is what's holding me back right now. I've started a TikTok account for UGC-style content and I'll keep pushing it, along with more paid ads, to bring in enough users to see clearly what works and where the bottlenecks are. Right now I simply don't have enough data.
Product next. The next thing I want to build is Lucy writing a real message to you on her own, spontaneously. That's how I think Lucy stops being a chat you just open and becomes a presence in your week. It's also where I think she'll stand out: it won't be an another wellbeing app made of small tools nobody uses, but something personal, built around the relationship, that actually helps people feel better. And naturally, someone who texts you first is someone you come back to.
Then it's about pushing Lucy to make real revenue. This is my last year of studies, and I'd love for this to be the project I keep going with after.
Built With
- eas
- expo-router
- expo.io
- express.js
- i18next
- node.js
- openai
- postgresql
- posthog
- react
- react-native
- react-native-reanimated
- revenuecat
- supabase
- typescript
- zod
Log in or sign up for Devpost to join the conversation.