Orbit Compatibility Algorithm
Updated Oct 2026
How maths and computer science can estimate compatibility between two humans.
Orbit starts with one simple input: what two people write about themselves.
Instead of asking an LLM to directly decide whether two people are compatible, Orbit turns their text into mathematical representations and compares them.
The algorithm has four main steps:
About text
↓
Contextual vectors
↓
Semantic matching
↓
WFR distance
↓
Compatibility score
1. Turn the About text into contextual vectors
Suppose a user writes:
I love building software, hiking, quiet cafes, and spending weekends in the mountains.
We pass the full text through a contextual embedding model. Instead of creating one vector for the entire paragraph, the model produces multiple vectors representing meaningful tokens inside their original context.
Conceptually:
software → v1 hiking → v2 quiet → v3 cafes → v4 mountains → v5
Each vector is a point in a high-dimensional space:
where \(d\) is the embedding dimension.
The important part is that the entire sentence is processed together first, so the vector for a word depends on the words around it. After encoding, we remove common stop words and other low-value tokens.
So each person becomes a set of contextual vectors:
The sizes do not need to match:
That matters because one person may write a short About while another may write much more.
2. Find related meanings
To compare two vectors, we can use cosine similarity:
A high cosine similarity means the vectors represent similar meaning.
hiking ↔ trekking high similarity software ↔ programming high similarity hiking ↔ accounting low similarity
A ColBERT-style comparison looks for the strongest semantic match for each vector. For a vector \(a_i\):
This tells us which meanings in one profile are closest to meanings in the other. But MaxSim alone has a problem: several vectors can all point toward the same vector.
mountains ─┐ trekking ─┼──→ hiking camping ─┤ outdoors ─┘
That can make two profiles look more similar than they really are. So Orbit uses a stronger comparison for the final compatibility calculation.
3. Compare both vector sets using WFR
Orbit uses Wasserstein-Fisher-Rao distance, or WFR.
WFR comes from unbalanced optimal transport. The simplest way to think about it is to imagine that every vector carries a small amount of semantic mass.
WFR tries to align the meaning in one profile with the meaning in the other. Matching similar meanings is cheap. Matching unrelated meanings is expensive. Leaving meaning unmatched also has a cost.
For example:
User A: hiking mountains camping software User B: trekking programming coffee
A good alignment may look like:
hiking → trekking cheap software → programming cheap mountains → trekking somewhat related camping → unmatched penalty coffee → unmatched penalty
The useful part is that WFR does not require both people to have the same number of vectors. It directly compares two differently sized semantic sets.
Conceptually:
The better the semantic alignment, the smaller the WFR distance:
4. Turn distance into compatibility
WFR gives us a distance, but users want a compatibility score. A simple way to convert distance into similarity is:
where:
- \(D(A,B)\) is the WFR distance.
- \(\lambda\) controls how quickly similarity falls as distance increases.
- \(S(A,B)\) stays between 0 and 1.
Then the user-facing score can be based on:
In practice, the final percentage can be calibrated using real Orbit data so the scale stays meaningful.
Final algorithm
About ↓ contextual vectors ↓ semantic matching ↓ WFR distance ↓ similarity ↓ compatibility
Orbit is not trying to mathematically prove whether two people will fall in love.
It is trying to answer a smaller question: how closely does the meaning expressed by one person align with the meaning expressed by another?
That turns compatibility matching into a compact combination of embeddings, vector similarity, and optimal transport.