Pinmate
Golf Partner Matching App

The Challenge
Finding a good match for a round of golf is surprisingly difficult — you need overlap across multiple dimensions simultaneously: schedule availability, geographic proximity to preferred courses, compatible pace of play, and a reasonably similar skill level so neither player feels frustrated. Existing solutions were either generic social networks that required too much manual browsing and messaging, or club-based systems that limited the pool to existing members.
We needed to design a matching experience that felt trustworthy and fast without becoming another social network. The core engineering challenge was building a multi-signal matching algorithm that could weigh four distinct compatibility factors and surface high-quality matches quickly, plus a lightweight real-time communication layer for confirming plans without the overhead of a full messaging platform.
Our Solution
We designed a profile and preference system focused on the four signals that actually matter for golf partner matching: handicap range (skill level), preferred tee time windows (morning, midday, afternoon), pace of play preference (relaxed, moderate, brisk), and course search radius based on the user's location.
The suggested architecture uses React Native with Expo and Expo Router for cross-platform development. The matching algorithm runs server-side, scoring potential partners by calculating weighted compatibility across all four dimensions. When a user opens the match feed, they see ranked candidate cards with clear visual indicators showing why each match is recommended — a shared preferred course, overlapping tee time windows, similar handicap range — so users can make quick decisions with confidence.
Firebase provides the real-time infrastructure: Cloud Firestore for match data and user profiles with offline persistence, Cloud Messaging for push notifications when new matches appear or messages arrive, and Firebase Authentication for secure account management. The lightweight chat feature uses Firestore's real-time listeners for instant message delivery without the complexity of a dedicated messaging service.
Google Maps API with geolocation handles the location dimension — detecting the user's position, calculating distances to courses in the network, and filtering matches based on willingness-to-travel radius. Zustand manages local app state while TanStack Query handles server state synchronization with smart cache invalidation when match parameters change.
Results
Project Gallery
Project Details
Year
2023Client
PinmateServices
Suggested Tech Stack
Interested in a similar project?
Let's discuss how we can help bring your vision to life.
Start a Conversation