Case Study
Dice Cat: Tabletop Gaming Matchmaking App
The Problem
Tabletop gamers accumulate large collections and strong preferences, but finding local players who own the same games, have overlapping schedules, and match on play style is genuinely hard. Existing options - Facebook groups, Discord servers, Meetup - require manual coordination and have no game library matching.
The core ask: build something like Tinder for board games that actually knows your library.
Overview
The product started as "Meeplr" - a UX concept with substantial research before a line of code was written.
- ·Competitive analysis of existing community and matchmaking tools
- ·User persona development - a relocated gamer with no local gaming group
- ·Three rounds of think-aloud usability testing with 15 participants
- ·Kano analysis: all planned MVP features tested as performative or attractive
- ·Renamed to Dice Cat after trademark research blocked the original name - improved recall in testing
Key Features
- ·Multi-dimensional matching: game libraries, geographic proximity, schedule overlap, and play style preferences
- ·10,000+ game database with local fuzzy search and manual addition capability
- ·Visual weekly schedule builder with overlap detection across potential matches
- ·Connection request system with mutual matching before messaging
- ·Encrypted in-app messaging for session planning
- ·Push notifications via Firebase Cloud Messaging
- ·Custom SVG avatar builder with layered component system
- ·Nearby players map view via PostGIS geospatial queries
Screenshots




Technical Architecture
Technical Highlights
Database performance
Multi-table JOIN queries for match scoring originally ran at 3-5 seconds. Strategic PostGIS indexing and query restructuring brought them under 500ms.
External API dependency failure
BoardGameGeek discontinued API access mid-development. Pivoted to building a local 10,000+ game database with community-sourced additions - better offline behavior and no future dependency risk.
Push notification permission architecture
A trigger-based approach encountered permission errors in production. Migrated the logic to Supabase Edge Functions, which resolved the permission context problem cleanly.