
Its A match
Date Anyone You've Ever Dreamed Of
Screenshots

It's A Match: A Fantasy Dating App Built Solo with Rails 8, AI
I'm a solo developer who built a full AI-powered dating simulation platform from scratch. Not a toy demo. A production app with real users, real-time chat, AI-generated profiles with consistent faces, and relationship memory that actually works.
Here's what it does and how it's built.
What It Is
It's A Match lets you create a dating persona, describe who you want to meet in plain English, and get AI-generated matches complete with photos, bios, and personalities. You chat with them. They remember you. The relationship evolves over time with chemistry, trust, and intimacy scores that change based on your conversations. It's fantasy dating as entertainment.
The AI profiles aren't static chatbots. They message you when you come back after being away. They reference things you talked about weeks ago. They have goals and milestones in the relationship. Think dating app meets interactive fiction, powered by LLMs and vector search.
The Stack
Rails 8.0.3 on Ruby 3.4. No React, no Vue, no Next.js. Just Hotwire.
AI Architecture
Profile generation uses RubyLLM through OpenRouter, so I can swap between GPT-4o-mini, Claude, or any other model with a config change. The LLM gets your match criteria as natural language and returns structured JSON with the full profile plus image generation prompts.
Images are generated on RunPod serverless endpoints.
Chat memory uses RAG with pgvector directly in Postgres. Every message gets embedded asynchronously via a background job. The AI remembers your inside jokes from three weeks ago without stuffing the entire chat history into the prompt.
Relationship Simulation
Each match tracks four metrics: chemistry, trust, intimacy, and tension, all on 0-100 scales. These shift based on conversation analysis. The relationship progresses through stages (curious, interested, dating, committed) with automatic advancement when thresholds are hit.
There's a full memory system with typed memories: first meetings, shared jokes, vulnerable moments, milestones. High-emotional-weight events get flagged as "defining moments" and surface more frequently in future conversations.
What I Learned Building This
The hardest problems weren't the AI. They were making the AI feel natural.
Rails 8 with Hotwire is genuinely underrated for this kind of app. Real-time features that would require a separate WebSocket server and state management library in a JS framework just work out of the box with Turbo Streams and Solid Cable.
Try It
It's A Match is in early access at itsamatch.ai. Free to use. I'm building in public and looking for feedback from people who appreciate the craft behind the product.
Related products
View all
Olmi: Plant Care & Watering App
Keep plants alive. Skip the homework.

SpeakGator – AI Language Tutor
Practice speaking with AI. Improve fluency and confidence.

SpeakGator – AI Language Tutor
Practice speaking with AI. Get instant feedback and master real-life conversations.
More categories
All categoriesLaunched in Week 12, 2026
See the week
Blackjack Smack
Think you can beat the house? Our dealer thinks otherwise.

git-lrc
Free, Unlimited AI Code Reviews That Run on Every Commit












