How XES’s matchmaker actually works

The word “addictive” gets used a lot to describe random chat. I don’t love it; it borrows the language of slot machines and applies it to people having conversations. What people actually mean is that the gap between calls is short and the calls feel different enough from each other that you want to keep going. Which is fair enough. Let me describe what’s actually happening in the matcher, because the “black box” framing is wrong.

When you tap Queue, the server adds you to a list of waiting users. Every couple of seconds it scans the list for compatible pairs. A pair is compatible if both sides’ gender filters allow the other, neither side has the other in their excluded countries, and neither side has a block in place against the other. Block-aware matchmaking is non-negotiable; if you’ve blocked someone, the queue treats it as if you’re not visible to each other.

For every compatible pair, the matcher computes a soft preference score. There are five inputs.

Same queue mode. Voice with voice, text with text. Plus a big number (100, in the current code) so that cross-mode matches only happen as a last resort when the same-mode queue is empty.

Preferred country hits. Three points per country in your preferred list that the candidate’s detected country matches.

Interest overlap. One point per shared interest tag, case-insensitive.

Trust similarity. Up to three points based on how close your trust scores are. Two users at the same level get the full three. Two at opposite ends (5 and 200) get roughly zero. This is what nudges low-trust users to meet each other and high-trust users to meet each other, without hard-walling either side.

Tie break. If two candidates score the same, the older one in the queue wins.

That’s the whole algorithm. There’s no learned model. No engagement optimisation. No black box. The score is computed, the best candidate wins, and the call starts. If you find the platform “addictive,” that’s mostly because the wait time is short and the variance per call is high. We could make the wait longer to reduce that effect; we’d rather not.

← Back to Blog