Building a dating assistant sounds easy, right? Just tell the AI to "be charming."
That’s what I thought six months ago. I was wrong.
I’m building Composed, an AI copilot for your dating life. We recently shipped our biggest update ever...a total overhaul of our AI’s "voice". And the data we found during the process blew my mind. It turns out, teaching a robot to flirt without sounding like a corporate HR bot (or a creep) is one of the hardest engineering challenges I’ve ever faced.
Here’s what we learned about human connection, the "Uncanny Valley of Rizz," and why our users were begging us to turn up the heat.
When we first launched, our users loved the utility of Composed, but they had one consistent piece of feedback: "It sounds kind of desperate."
If a user asked the AI to "Tease her about her hiking photo," the AI would say:
"I noticed you enjoy hiking. That is a commendable hobby. Do you go often?"
Technically correct. Zero rizz.
We realized that default LLMs are trained to be helpful, safe, and polite. But flirting requires the opposite: you have to be a little unpredictable, a little challenging, and sometimes, a little "mean" (in a fun way).
We decided to run an internal experiment we called Project HEAT. We stripped away some of the safety rails and told the AI to prioritize "Boldness" and "Playful Roasting" above all else.
The results were... intense.
The Good: The copy-paste rate skyrocketed. Users loved the edgier, more confident lines.
The Bad: The AI occasionally crossed the line from "cheeky" to "jerk." Which unfortunately works sometimes, but we want people to get dates based on toxic manipulation.
The lesson: People don't want a "nice" assistant. They want a confident co-pilot. They wanted an AI that could pass the "1 a.m. Test": Would I actually send this to someone I like late at night without editing a word?
We didn't just turn up the "flirt" dial. We had to fundamentally re-engineer how the AI constructs sentences. We built a system called "Voice 2.0" based on three counter-intuitive rules:
1. Kill the "Writerly" voice. Real people don't use colons, semicolons, or words like "intrigued." We built a linter that actively penalizes "good grammar." If a sentence is too perfect, it gets a lower score. We optimized for fragments, lowercase starts, and dropped pronouns ("Down for drinks?" vs "Are you down for drinks?").
2. The "Blue Bottle" Bug. We found a hilarious bug where the AI, when asked to suggest a date, would always suggest "Coffee at Blue Bottle." It was hard-coded into an old prompt template. It taught us a valuable lesson about Prompt Dilution: if you give an LLM too many safety instructions, it clings to the one specific example you gave it. We had to nuke our few-shot examples and replace them with dynamic, diverse scenarios.
3. "Context Priority" is everything. The biggest breakthrough was a feature we call Context Priority. We realized users were typing specific goals ("Ask her out, but NOT for coffee") and the AI was ignoring them to be "safe." We rebuilt our prompt architecture to make the User's Goal the "Must-Fulfill" Prime Directive. Now, if you tell Composed to "Tease hard," it listens.
Since shipping Voice 2.0 and the new Context Bar, our metrics have transformed:
Selection rate: Users are choosing the AI's suggestions 18% more often.
Edit rate: The number of times users have to edit a suggestion before sending it has dropped significantly.
Negative response reports: Down by nearly 70% 9it was already really low before that)
If you're building in the genAI space, stop trying to make your model "smarter." Make it more human. And work hard at it.
The "Uncanny Valley" isn't just about visual avatars it exists in text, too. A message that is too perfect feels fake. The secret to our recent growth wasn't a better model...it was teaching the model to be imperfect, direct, and a little bit spicy.
If you want to see what "Voice 2.0" feels like, you can try Composed for free. Just don't blame me if your matches start wondering where you got your new sense of humor.
Next?! The UI! Let us know what would work better at: getcomposed.io
I suck at UI....
This was a fascinating read! Love how you approached the challenge of making AI sound more human—and not overly polite. The ‘Voice 2.0’ system and the HEAT experiment show how much nuance goes into real-world flirting. Super cool work and excited to see where Composed goes next!
thank you Asma, that means the world 🙏
yeah the “don’t sound like a polite HR bot” thing is literally the entire game for me. It was my first real crack at killing the perfect-grammar-zero-risk vibe while still keeping the tiny human imperfections and timing that actually work.
Stuff I’m messing with now...
way more tone lanes (light + flirty, bold + calm, warm + grounded, etc.)
real and better context memory so it rides the ongoing vibe instead of one-message amnesia
a “test your skill” mode where you can see your reply vs composed’s and just steal the parts you like
if you ever wanna throw some real convos at it or just roast my ideas, i’m all ears. this thing only levels up when people poke holes in it 😄