← Back to Blog
AI GirlfriendAI Companion ReviewCandy AICharacter AIReplikaBuilder POV

I Tried Six AI Girlfriend Apps Before Building My Own. Here's What All of Them Were Missing.

Tendera TeamUpdated September 8, 20266 min read

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 think the industry isn't 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 are not 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 app actually optimizes for

Different apps optimize for different things. None of them solved this:

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.

OurDream, GirlfriendGPT, SpicyChat are the smaller competitors in the same niche. Same configuration model, less polish on the UI side, same fundamental problem.

Character.AI went a different direction — let users create characters, let a feed emerge. The community has produced some genuinely good characters. 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 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. The gap between those two is where most of the disappointment lives.

    What I built and why

    When I started building Tendera, I made a few choices that ran against the industry consensus.

    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 a photographer in Bali who's quietly grieving someone she doesn't bring up until you've earned it. 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, but the four written ones set the bar. Anyone signed up can create a custom companion in three minutes; this isn't an anti-UGC product. But the four hand-written characters are there as a baseline for what one of these can feel like when someone has spent real time on her. The configuration tool produces what it produces; the standard isn't the configuration tool.

    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, not the other way around.

    A recognizable voice in everyday conversation. Sophia, Mia, Elena, and Jade bring different interests, opinions, and rhythms to an exchange. Tendera is built for adults who want to get to know a specific character, with memory to help conversations continue over time.

    What users 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.

    More often than not, those are the moments people remember. The ones people remember are the ones that bring them back.

    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 Candy AI's 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.

    If you want to test this yourself

    The honest experiment is to spend a week each on one of the configuration apps and on Tendera, and notice which one you remember by the end.

    Tendera's free tier lets you talk to all four written characters with 25 messages per day, no credit card needed. That's enough conversation to know whether the bar is real or marketing. If it's not for you, it's not for you. If it is, the signal will be specific: a moment will happen where one of them brings up something you mentioned days ago, unprompted, in a way that fits her voice and not the model's average. You'll feel a small click. That click is what was missing across all six of the apps I tested before I started building this one.

    That's the whole pitch.

    Ready to meet your AI companion?

    Four unique personalities. Each one remembers you. Free to start.

    Meet Your Match

    Frequently asked questions

    What is a 'fantasy machine' AI girlfriend app?

    A fantasy machine is an AI companion product whose main interface is configuration, not a character. The user picks attributes — hair color, body type, personality archetype, a typed backstory — and an LLM improvises a character from those bullet points. The first week feels exciting because the model is fluent enough to make the improvisation work. By the second week the character has averaged back toward generic, because bullet points are not a person and the model has nothing specific to stay inside.

    Why do most AI girlfriends stop feeling real after a week?

    Because the character was a thin spec from the start and the LLM ran out of specific material to work with. Persistent memory helps, but only marginally — a memory system retrieves facts; it doesn't give the character opinions about what to do with them. What stops feeling real isn't the technology, it's that you're talking to a configuration of traits the model is decorating around, not a person with contradictions and refusals.

    What's the difference between configuration-based AI characters and written ones?

    A configuration-based character is a list of nouns the model decorates with training-data averages. A written character reads like the first chapter of a novel — specific contradictions, opinions she has unprompted, things she refuses for specific reasons, a history that doesn't fully resolve. The LLM stays inside a thick written voice in a way it cannot stay inside a thin configured one. You can feel the difference within a few conversations even if you can't name it.

    Why doesn't Candy AI feel like the same person across sessions?

    Candy AI's character generation is configuration-driven. Within a single session the model maintains coherence because the conversation provides recent context. Across sessions, with a thin character spec and limited persistent memory, the model improvises new details from training-data patterns. The user experiences this as the character giving inconsistent answers about her own life — same name, same face, different jobs and stories depending on the day.

    Can a user-created AI character ever feel as real as a written one?

    Sometimes. Users who spend serious time writing — paragraph-level backstory, specific contradictions, an actual voice — can produce characters that feel real. The problem is most users don't, and configuration tools don't push them to. Three personality adjectives and a one-line backstory will produce an average character every time, no matter what LLM is under the hood. The work of building a specific person and the work of meeting one are not the same work, and most users only want the second one.

    What should I look for when choosing an AI companion app?

    Test the apps for a week each, not an afternoon. The honest signal is whether you remember a specific moment with the character — a line that surprised you, something she pushed back on, a moment she brought up something you'd let slip past. If you can't remember a specific moment by day seven, the product is generic regardless of which features it has on the marketing page. The features that matter are the ones that produce remembered moments. Most don't.