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
- devvit
- express-5
- lucide-react
- node.js
- react-19
- redis
- tailwind-css-4
- typescript
- vite
Log in or sign up for Devpost to join the conversation.