
How to Make an App Like eHarmony

Building a compatibility-based dating platform is one of the more technically demanding consumer app problems you'll face. The matching logic, psychometric data pipelines, trust and safety systems, and the cold-start problem all hit you at once. This post breaks down what actually goes into building something at the scale and depth of eHarmony — from the algorithm layer to the infrastructure choices you'll need to make before you write a single line of product code.
What Makes eHarmony Different From a Swipe-Based App?
Most dating apps are discovery engines. They show you profiles, you swipe, you match. The engineering is straightforward: a geospatial query, a mutual-like check, a chat layer.
eHarmony's model is fundamentally different. It uses a compatibility scoring system built on a proprietary psychometric questionnaire — the original version had 436 questions — and produces a curated set of matches rather than a browsable feed. Users don't search; the algorithm surfaces who it thinks is compatible. That shifts a significant portion of the product surface area from UI to data science.
If you're building in this direction, you're committing to:
- A structured onboarding flow that collects enough signal to generate meaningful matches (typically 150–400 data points per user)
- A scoring model that can rank compatibility across millions of user pairs
- A matching pipeline that runs continuously as new users join and existing users update their profiles
- A decision about how much control to hand back to the user
That last point is a real product trade-off, not just a UX one. The more control you give users, the more you dilute the algorithm's signal. eHarmony learned this the hard way; they introduced a more browse-friendly mode in the 2010s and saw engagement metrics shift in ways they hadn't expected.
How Does the Compatibility Algorithm Actually Work?
At its core, a compatibility algorithm like eHarmony's is a scoring function that takes two user feature vectors and returns a compatibility score. The original Galen Buckwalter model was based on factor analysis of the Big Five personality traits, relationship values, and attachment style indicators.
In engineering terms, you're building:
Psychometric Data Collection
The questionnaire is your data source. Questions should be validated psychometric instruments where possible. The IPIP (International Personality Item Pool) has openly licensed items you can adapt. Likert-scale responses (1–7) give you better signal than binary choices.
Store responses as numerical vectors. A user's profile in your database is ultimately a float array — potentially 200+ dimensions — alongside structured fields like age, location, and relationship intent.
Compatibility Scoring
There are several approaches, with different trade-offs:
| Approach | How it works | Trade-off |
|---|---|---|
| Euclidean distance on trait vectors | Score = inverse of distance in feature space | Fast, interpretable, ignores interaction effects |
| Cosine similarity | Measures angle between vectors, not magnitude | Good for style similarity, not value alignment |
| Weighted compatibility matrix | Different traits weighted differently per user intent | Better accuracy, requires calibration data |
| ML-based (collaborative filtering) | Learn from outcomes (messages, dates, marriages) | Highest accuracy at scale, needs cold-start handling |
For an early-stage build, a weighted matrix model with hand-tuned weights is the right call. You can ship it faster, it's auditable, and you can replace it with a learned model once you have outcome data. Don't build a neural net before you have 100,000 users.
The Matching Pipeline
Generating compatibility scores for every possible user pair doesn't scale. With 1 million users, that's 500 billion pairs. You need a two-stage approach:
- Candidate generation: Use approximate nearest-neighbour search (Facebook's FAISS library is the standard tool here) to retrieve the top 500–1,000 candidates per user based on vector similarity.
- Re-ranking: Apply your full compatibility model to that candidate set, incorporate location, dealbreakers, and active status, then surface the top 5–20 matches.
Run this pipeline as a batch job nightly for existing users, and trigger it on new user sign-up. Use a message queue (Kafka or RabbitMQ) to handle the sign-up spikes without hammering your database.
/// Not sure where to start?
Get the architecture before you commit
Tell us what you're building and we'll map the technical approach, stack, and rough timeline. No cost, no obligation, no sales call required.
What Does the Tech Stack Look Like?
There's no single correct answer, but here's a stack that's been proven to work for this class of problem:
Backend: Python (FastAPI or Django REST Framework) for the API layer. Python gives you direct access to the scientific Python ecosystem — NumPy, scikit-learn, FAISS — without impedance mismatch.
Database: PostgreSQL for structured user data and relational queries. A vector database — pgvector as a Postgres extension is the simplest path — for storing and querying user feature vectors. For very large scale (10M+ users), dedicated vector DBs like Pinecone or Weaviate are worth the operational overhead.
Matching pipeline: Python workers orchestrated with Celery, backed by Redis. If you're running nightly batch jobs for millions of users, move to Apache Airflow for scheduling and observability.
Mobile: React Native gets you to both iOS and Android from a single codebase. For a dating app, the performance hit versus native is acceptable — your real latency challenges are in the backend, not the UI.
Real-time messaging: WebSockets via a dedicated service. Socket.IO on Node.js handles this cleanly. Don't try to run real-time messaging through your main API server.
Media storage: S3-compatible object storage (AWS S3 or Cloudflare R2) for profile photos, with a CDN in front. Run photos through a moderation pipeline before they go live — AWS Rekognition or Google Cloud Vision has pre-trained NSFW classifiers that work well enough for this.
How Do You Handle Trust, Safety, and the Cold-Start Problem?
These two problems are related. New users have no signal for the algorithm and no reputation for trust systems. You need to handle both at onboarding.
Trust and Safety
Dating platforms are high-value targets for scammers and bad actors. The minimum viable safety stack is:
- Phone number verification at sign-up. SMS OTP via Twilio or AWS SNS.
- Photo verification: A liveness check where users take a selfie matching a prompted pose. Providers like Onfido or Veriff offer this as a managed service.
- Automated message scanning for known scam patterns. Start with a regex/keyword blocklist, graduate to a fine-tuned text classifier as you accumulate flagged data.
- User reporting and block flows: These are mandatory, not optional. Build them on day one.
Cold-Start Handling
A new user with 200 questionnaire responses but no behavioural data is solvable. A user who abandoned the questionnaire at question 12 is not.
Set a minimum completion threshold before a user enters the matching pool — 80% questionnaire completion is a reasonable floor. Show progress indicators and explain why each question section matters. Drop-off at onboarding is the single biggest killer of compatibility-based apps; optimise for completion rate before you optimise for anything else.
For users who do complete onboarding, seed their initial matches from the algorithm only. As they interact (viewing profiles, initiating messages), capture that implicit signal and feed it back into their preference model.
What Will This Actually Cost to Build?
A realistic estimate for an MVP with psychometric onboarding, a basic compatibility algorithm, match delivery, and a messaging layer:
- Design and discovery: 4–6 weeks
- Backend + algorithm: 16–20 weeks with a team of 3 engineers
- Mobile app (React Native): 12–16 weeks, partially parallel with backend
- Trust and safety tooling: 4–6 weeks, partially parallel
- Total calendar time: 9–12 months to a shippable product
Budget for third-party services from day one: photo moderation, liveness verification, SMS OTP, and push notifications each add up. Expect $3,000–8,000/month in infrastructure and SaaS costs once you're past beta at modest scale.
If you're planning to launch in a regulated market, add time for legal review of data collection consent flows and GDPR/DPDP compliance work.
Conclusion
The hard parts of building in this space are the algorithm design, the onboarding drop-off problem, and trust and safety — in that order. The underlying infrastructure is solvable with well-understood tools. Start with a validated psychometric instrument, a weighted compatibility model you can reason about, and a strict completion threshold before users enter the matching pool. Build the safety stack in parallel, not after.
If you're scoping this out and want a technical opinion on your specific architecture choices, Sodio's engineering team has worked across the full stack of consumer platform problems. Reach out with what you're building and we'll give you a straight read.
Frequently Asked Questions
How many questions does a dating app questionnaire need? Enough to generate statistically reliable trait estimates — typically 150 to 400 items for a comprehensive psychometric profile. Fewer questions mean less signal and weaker match quality. You can use adaptive testing techniques (IRT-based item selection) to reduce perceived length while maintaining accuracy, showing users around 80–120 questions.
Can you build a compatibility algorithm without proprietary research? Yes. The IPIP provides openly licensed personality items validated against the Big Five model. Academic literature on relationship science (Gottman Institute research, attachment theory studies) gives you a defensible theoretical basis. You won't have eHarmony's 20 years of outcome data, but you can build something credible from public sources.
What's the biggest technical risk in a dating app build? The cold-start problem combined with low onboarding completion. If users drop off before the algorithm has enough data, your match quality is poor, early users churn, and you never build the outcome data needed to improve the model. Every technical decision should be evaluated against its impact on onboarding completion rate.
Should you build native iOS and Android apps or use React Native? React Native is the right call for most dating app builds at the MVP and early-growth stage. The performance difference versus native is not user-perceptible for this type of app. The 40–60% reduction in mobile development time and cost is material when you're still validating product-market fit.
How do you handle GDPR compliance for psychometric data? Psychometric questionnaire responses are likely to constitute special-category data under GDPR Article 9 if they reveal health, sexual orientation, or religious beliefs. You need explicit consent at the point of collection, a clear retention policy, and the ability to delete all derived data (including vectors) on user request. Get legal review before you define your data model — retrofitting this is expensive.
Have a project in mind? Contact Sodio Technologies to discuss your requirements and explore the right technology solution for your business.
/// Work with us
Talk to the engineers who'd build it
You'll get a technical scope, timeline and cost estimate from the people doing the work, not an account manager. In-house team, no subcontracting, since 2016.
