Soul Pair!: Finding Your Tribe on Reddit

💡 Inspiration

Reddit is home to the most niche communities on the internet, yet interacting within a subreddit can often feel like shouting into a void of thousands. We are all "together," but we rarely know who among us truly shares our specific worldview. Soul Pair! was inspired by the desire to turn that "one-to-many" broadcast into a one-to-one connection. We wanted to create a daily ritual—similar to Wordle—that doesn't just test your knowledge, but helps you find your "tribe" within the crowd.

🛠️ How I Built It

I built Soul Pair! using a modern, high-performance stack on the Reddit Developer Platform (Devvit):

  • Frontend: Built with React 19 and Tailwind CSS 4, utilizing the latest features for a frictionless, mobile-first UI.
  • Backend: A specialized Express 5 server manages the game state, while Redis handles real-time data storage.
  • Content System: I hand-crafted a library of 700+ unique questions split into 7 rotating themes (Personality, Lifestyle, Pop Culture, Food, Dating, Fun, and Deep Questions).

The Matching Algorithm

To ensure instant results, I implemented a similarity engine. The core similarity \( S \) between two users \( U_1 \) and \( U_2 \) for a set of \( n \) questions is calculated as:

$$ S = \left( \frac{\sum_{i=1}^{n} \mathbb{1}(A_{1,i} = A_{2,i})}{n} \right) \times 100\% $$

Where:

  • \( n \) is the total number of questions (20).
  • \( A_{1,i} \) and \( A_{2,i} \) are the answer indices for user 1 and user 2 at question \( i \).
  • \( \mathbb{1} \) is the indicator function that equals 1 if the answers match and 0 otherwise.

🧠 Challenges Faced

The biggest hurdle was Efficiency at Scale. Comparing every new player against every existing player can quickly become a complexity nightmare. I optimized this by ensuring that when a new user joins, we only perform a single pass to update matches:

// Optimized match update logic
for (const otherUsername of otherUsers) {
  const similarity = calculateSimilarity(userAnswers, otherAnswers);
  if (similarity > otherMatches.lowestTopScore) {
    updateTopMatches(otherUsername, similarity);
  }
}

Another challenge was Content Variety. To prevent the game from feeling like a repetitive survey, I designed a split-file architecture that allows moderators to toggle themes, ensuring the game feels tailor-made for subreddits as diverse as r/Movies and r/Philosophy.

📈 What I Learned

Building for Devvit taught me how to create rich, interactive web experiences within the Reddit ecosystem. I learned that the best social tools aren't just about the technology—they're about the Ultimate Icebreaker. By giving users a "Soul Pair" and a similarity percentage, I've seen that the comment section transforms from generic chat into a vibrant celebration of shared interests.

Soul Pair! isn't just a game; it's a bridge between anonymous users, turning strangers into a community—one match at a time.

Built With

Share this project:

Updates