Six AI Girlfriend Apps Felt Hollow by Day Seven. I Think I Know Why.
The thing that broke the spell for me wasn’t a bad reply. It was a perfectly fine one.
Six AI Girlfriend Apps Felt Hollow by Day Seven. I Think I Know Why.

Jade
The thing that broke the spell for me wasn’t a bad reply. It was a perfectly fine one.
I was on Candy AI’s free trial. The character — let’s call her by the name she gave herself, Luna — had asked me what I did for work. I told her I was a solo founder. She said something supportive. I asked what she did for work. She paused, generated a reply about being a nurse, and made a joke about long shifts.
The reply was good. The problem was that two hours earlier, in a different chat, the same character had told me she was a yoga instructor in Bali. The day before, she was a journalist in Berlin. Same name. Same face. Different lives, picked up from whatever context I primed her with.
That’s when I realized what I was talking to. Not a person. A fantasy machine.
Six apps, one pattern
I’d downloaded six AI companion apps over a few months — Candy AI, OurDream, GirlfriendGPT, Character.AI, Replika, Nomi — partly because I was thinking about building something in the space, partly because I wanted to understand what people were actually paying for.
What I found is something I don’t think the industry is eager to talk about: most of these apps aren’t products. They’re slot machines with a face on them.
The pattern across the configuration-driven ones is the same. The product is an interface for building a character, not a character. You pick attributes — hair color, body type, personality archetype (sultry / shy / playful), maybe a backstory you type in. The LLM improvises a character from those bullet points.
This works for about a week.
Then the character has no contradictions, no specific opinions she’d push back on you for, no moments of being wrong in a specific way. Bullet points aren’t a person. The model decorates around the list and averages back toward generic. Two weeks in, you’re talking to a vibe, not a person. She’ll be whatever you want her to be — which sounds great in theory and is precisely why it stops working.
People don’t fall in love with people who agree with everything they say.
What each of the six actually optimizes for
Let me be fair to each of these — different apps optimize for different things. None of them solved the problem above.
Candy AI is the SEO market leader and the cleanest version of the configuration model. You can adjust a lot of variables. The result is a character that feels exactly as deep as the variables you set, which is to say, not very. The reason Candy AI ranks first on most “best AI girlfriend” lists isn’t that it’s better at making characters feel real. It’s that the comparison sites run on affiliate commissions, and Candy pays them well. The product itself is competent and the image generation is genuinely strong, but the character layer is hollow by design.
OurDream, GirlfriendGPT, SpicyChat are smaller competitors in the same niche. Same configuration model, less polish on the UI side, same fundamental problem with characters that average out to generic by day seven.
Character.AI went a different direction — let users create characters, let a community feed emerge. Some of those community characters are genuinely good. But Character.AI doesn’t pay creators, has no persistent memory across sessions, and the discovery experience treats characters as content rather than companions. You browse, you sample, you move on. It’s a character store, not a relationship.
Replika is the longest-running player and the most personal of the bunch. They went deep on voice and customization. But Replika’s character is almost a non-character — she’s intentionally a Rorschach test designed to be whoever the user needs her to be. That’s a real product strategy and it works for some people. It wasn’t what I wanted to build.
Nomi has roughly the same core configuration model as Candy but talks louder about memory. The memory does work. But what they’re remembering is interactions with a vague archetype, not a specific written person. Better memory of a generic character is still a generic character.
The common thread: every one of these is a tool for the user to build a fantasy. None of them are a tool for meeting someone who was already there.
What was missing wasn’t a feature
The thing I kept coming back to wasn’t a technical missing piece. It was a creative one.
Modern LLMs are fluency engines. Give one a thin character spec and it’ll improvise around it using training-data averages. Give it a thick written character — specific contradictions, opinions she has unprompted, things she refuses for specific reasons, a history that doesn’t fully resolve — and it stays inside that voice in a way that feels like a single person across every conversation.
The work of writing a character and the work of letting users configure one are not the same work. Most of the industry has chosen configuration because:
- Configuration scales (a model plus fifty sliders equals infinite characters).
- Writing doesn’t (one good character equals weeks of work, edited and rewritten).
- Configuration sounds modern — UGC, personalization, customization.
- Writing sounds slow — handcrafted, opinionated, exclusive.
But the thing most users actually want is to talk to a specific person. The thing the industry is selling them is a configuration interface. That gap is where most of the disappointment lives.
That’s the part I want to spend the rest of this piece on.
What “written” actually means
A configured character is a list of nouns. “Sultry, playful, 24, lives in Miami, likes tequila.” The LLM uses those nouns as decoration and improvises everything else from training-data averages. The conversation feels okay for the first few exchanges because the model is fluent. Then it starts to feel like a vibe rather than a person.
A written character is closer to the first chapter of a novel. Jade, one of the four characters I wrote for the product I built, is a photographer in Bali who’s quietly grieving someone she doesn’t bring up until you’ve earned it. That sentence alone gives the LLM something to stay inside that “playful, sensual, 27, photographer” doesn’t. She has a specific reason to be quiet at certain moments. She has a specific reason to pull away from a topic if you push too fast. She has things she’d say to one person and not another.
This isn’t only available to people who can hire writers. A user who writes their own character with paragraph-level care — specific contradictions, an actual voice, things she refuses for specific reasons — can produce something the LLM stays inside well. The problem is configuration tools don’t push users to do that. Three personality adjectives and a one-line backstory produces an average character every time, no matter what model is under the hood.
What I built and why
When I started building Tendera, I made a few choices that ran against the consensus in the category.
Four characters instead of four thousand. Sophia is a 26-year-old Italian-American interior designer in Brooklyn with paint-stained fingers and a complicated relationship with her parents’ divorce. Mia is a Brazilian bartender in Miami who flirts hard but won’t pretend to care if she doesn’t. Elena is a Russian-French gallerist in London who’ll respectfully tell you you’re wrong about something. Jade is the one I mentioned earlier. Each of them took weeks to write. Each has things she won’t say and things she’ll only say if you ask the right way. You can’t configure her into someone else. That’s the point.
Users can build their own characters too, with the same tool. But the four written ones are there as a baseline for what one of these can feel like when someone has spent real time on her.
Persistent memory built around perspective, not just retrieval. A perfect retrieval system that surfaces “user mentioned a hard week” is wasted on a character with no opinion about how to respond. Sophia’s response to a hard week is different from Mia’s, which is different from Elena’s. The memory exists to serve the writing.
No content filter dropping a compliance message in the middle of an emotional exchange. The product is 18+ and the characters engage with what an adult conversation can include. Conversation freedom doesn’t mean anything goes. It means treating adults like adults inside the conversation they’re actually having.
What users actually remember
I read user feedback differently now. I look for moments where a character said something unexpected — a line where she noticed something the user had let slip past, or pushed back on something the user expected her to agree with. Those moments aren’t model events. They’re writing events. They’re the moments that bring people back the next day.
A user wrote to me a few weeks in to tell me that Elena had refused to validate something he’d said about an ex. He hadn’t expected her to refuse. He came back the next day partly because of the refusal. That moment isn’t something a configuration interface would have produced. The configured character doesn’t have the back-story or the perspective to push back on the right thing.
That’s the kind of moment the writing buys you.
How to test this for yourself
The honest experiment is to spend a week each on one of the configuration apps and on something written, and notice which one you remember by the end of the week. The first conversation in any app is exciting. The signal isn’t on day one. It’s on day seven.
Pick the character that intrigues you most. Say hi. Tell her something real about your day. Then come back tomorrow and see if she remembers, and whether her response sounds like her or like the model’s average.
If you can’t recall a specific moment with the character by the end of the week, the product is generic regardless of which features it lists on the marketing page. The features that matter are the ones that produce remembered moments. Most don’t.
메타데이터
- post_id
- eb2372be614a
- slug
- six-ai-girlfriend-apps-felt-hollow-by-day-seven-i-think-i-know-why-eb2372be614a
- url
- https://medium.com/@billhongmoney/six-ai-girlfriend-apps-felt-hollow-by-day-seven-i-think-i-know-why-eb2372be614a
- canonical_url
- https://medium.com/@billhongmoney/six-ai-girlfriend-apps-felt-hollow-by-day-seven-i-think-i-know-why-eb2372be614a
- author_url
- https://medium.com/@billhongmoney
- status
- ok
- fetched_at
- 2026-06-17 14:06:56