How Persaura's Compatibility Matching Actually Works
We get asked about the matching algorithm a lot. "Is it just vibes?" (No.) "Is it like Myers-Briggs?" (Not exactly.) "Did you just cluster people by demographic?" (Absolutely not — that's the opposite of the point.)
Here's how it actually works.
Start With Answers, Not Profiles
Most matching systems build a profile: your age, your location, your stated interests. We ignore all of that for matching purposes. What we care about is how you answer questions under mild pressure — when there's no "right" answer and every choice reveals something.
Every answer option in a Persaura quiz carries a set of personality tags. When you select an answer, you inherit those tags. By the end of a 5-question quiz, you've accumulated a tag set that acts as a fingerprint of how you approached those particular scenarios.
Example: A question asks whether you'd rather have more time or more money. Choosing "more time" might tag you as [independent, values-driven, anti-hustle]. Choosing "more money" might tag you as [ambitious, security-focused, pragmatic]. Neither is better — they're just signals.
The Jaccard Similarity Score
Once two users have both completed the same quiz, we compare their tag sets using Jaccard similarity:
`` score = |A ∩ B| / |A ∪ B| × 100 ``
Where:
- A is your set of tags from the quiz
- B is the other person's set of tags from the same quiz
- A ∩ B is the tags you share (intersection)
- A ∪ B is all tags either of you holds (union)
The result is a percentage from 0 to 100. A score of 80+ means you answered in remarkably similar ways. A score of 20 means you approach things very differently (which can also be interesting — opposites can attract).
A Simple Example
Say you answer a 3-question quiz and end up with tags: {analytical, cautious, independent}
Another user ends up with: {analytical, empathetic, independent}
- Intersection:
{analytical, independent}→ 2 items - Union:
{analytical, cautious, independent, empathetic}→ 4 items - Score: 2 / 4 × 100 = 50%
In practice, quizzes are longer and tag sets are richer, so scores cluster around 40–75% for most pairs, with outliers on either end.
Why Jaccard Instead of Cosine Similarity?
Good question. Cosine similarity is popular in recommendation systems because it handles vector magnitude well — useful when the amount of something matters. Jaccard is a better fit here because we're working with sets, not vectors. What matters isn't how strongly you hold a trait but whether you hold it at all. Jaccard treats every tag as equally meaningful, which matches our design intent.
Caching and Performance
Running Jaccard comparisons against every other user every time someone finishes a quiz would be slow at scale. We pre-compute and cache scores in a compatibility_scores table whenever two users complete the same quiz. The cache uses a canonical key (smaller user ID always goes in user_a) to prevent duplicate pairs.
If the quiz data changes — new questions added, tags revised — the cache can be safely truncated and rebuilt. The user's raw answers are always the source of truth.
What the Algorithm Doesn't Do
It doesn't use demographics. Your age, gender, and MBTI (optional fields you can provide at signup) don't affect your compatibility score. They're used for filtering if you choose, not for ranking.
It doesn't learn from behavior. We don't use clicks, message length, or whether you ghosted someone to adjust scores. Behavioral signals often encode biases we don't want. The score reflects quiz answers only.
It doesn't penalize diversity. A low compatibility score doesn't mean "bad match." It means you approach things differently. Some people specifically want that.
The Personality Label
Beyond the compatibility score, we derive a personality label from your dominant tags. If your most frequent tag is "analytical," you might be labeled "The Strategist." If "empathetic" dominates, "The Heart."
Labels are soft — they update as you take more quizzes and your overall tag distribution shifts. They're meant as conversation starters, not permanent identities.
What We're Building Next
The current system works at quiz-level granularity: you're matched with people who took the same quiz. We're working toward cross-quiz compatibility — building a richer, multi-dimensional personality model from all your quizzes combined, and matching against that.
If you have thoughts on the algorithm or want to nerd out about it, find us on Instagram @persaura or send a message from your profile.