26 April 2026 · matching · ai · philosophy
You don't need an algorithm to fall in love. You need a filter.
The matchmaking industry has spent two decades selling proprietary compatibility scores. We do not have one. Here is why the absence is the feature.
Every major matchmaking platform of the last twenty years has had the same pitch: “Our algorithm finds the right person for you.” The wording varies — deep compatibility, neural matching, personality-based pairing — but the underlying promise is identical. The algorithm is a black box; the algorithm is intelligent; the algorithm sees a pattern in your responses that you cannot see; trust the algorithm.
We do not have one. Not because we couldn’t build one — we have the data, we have the engineering team, the cost of doing it would not be material. We chose not to. This essay is about why.
The compatibility score is theatre
Take any of the famous algorithms — eHarmony’s “29 dimensions,” OkCupid’s match-percentage, Hinge’s “Most Compatible.” They share a structural property: they are deeply opaque, mildly personalised, and cannot be evaluated.
You cannot evaluate them because the only honest evaluation metric — “did the people the algorithm matched go on to have a successful long-term relationship?” — is statistically expensive to measure, takes years to resolve, and conflicts with the business model. Platforms whose revenue depends on engagement have an incentive to surface matches that produce conversation, not matches that produce marriages and church-bells and the permanent loss of a paying user.
So the algorithms drift toward what is measurable: clicks, replies, time-on-app. The score that gets shown to you, with beautiful numbers and confident language, is optimised for the next twenty minutes of your behaviour. Not for the next twenty years of your life.
What we do instead
PotentialSpouse matches on explicit, named compatibility constraints that the user filled in themselves. There are about forty tag categories — religious practice, decision authority, financial management, work pattern, parenting plan, relationship style, and so on. Each one is a question with a concrete answer. The matching engine checks whether your answers and theirs are mutually compatible — symmetric: your constraints applied to them, their constraints applied to you. Either both pass, or you do not appear on each other’s walls.
This is not a “score.” It is a filter. The filter is fully auditable: the SQL that runs is in the public repository; the matching documentation explains every clause; the user controls every input.
There is no opaque ranking. There is no machine learning model deciding which of two equally-compatible candidates to show you first. The wall is sorted reverse-chronologically: most recently visible profile first. That’s it.
What this gives up, and what it gains
It gives up the “wow” moment. Some users land on a wall of ten people, all of whom genuinely match the constraints they filled in, and want to know “but which one is the best match?” We do not answer that question. We cannot answer it honestly. Neither can the other platforms; they just pretend they can.
It gains accountability. When the platform does not match you with someone, you can look at the matching docs and figure out exactly why. When it does match you with someone you find incompatible after a conversation, you can update your tags or add an exclude, and the next person you see will be filtered for the dimension that mattered. The system gets better for you over time, but in a way you can see and control.
It also gains honesty. We are not selling you a magic algorithm because we do not have one. We are selling you a filter, and the filter is yours.
The narrow place we use AI
There are a few places in the product where AI helps. We documented them in project/ai_strategy.md. The list is short:
-
Tag moderation. When a user proposes a new tag (say, “AS haemoglobin”), an LLM helps a human moderator decide whether the tag is safe to publish — checking for duplicates, PII-shaped content, neighborhood-level location data.
-
Embedding-assisted tag deduplication. When you type “AS” in a tag picker, we surface “AS (haemoglobin)” as a suggestion. This is a tiny use of vector embeddings.
-
Natural-language search of the wall (when AI keys are available; degraded silently otherwise). You can type “kind, quiet, in their thirties, doesn’t drink” into the search box and the system parses that into the underlying tag filters. The parse is shown to you so you can see what the filter actually became.
That is the totality of AI’s role on this platform. It assists with input: getting your real preferences into the system cleanly. It does not decide compatibility. It does not score people. It does not rank.
The argument in one sentence
A matchmaker’s job is to make sure two people who could be right for each other are in the same room at the same time. Once they are in the room, the rest is up to them.
A filter does the matchmaker’s job. An algorithm pretends to do the rest of the job, and gets it wrong.
We chose the filter.
Ready to start?
Build a profile. See who matches.
No photos, no real names — just the dimensions of compatibility that actually matter.
Get started