Mobile App

Pinmate

Golf Partner Matching App

Pinmate

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

4+
Match Signals
Skill, time, pace, and location
Fast
Time to Match
High-signal cards with clear match reasons
20+
Screens
Matching, chat, profile, and settings flows
Focused
UX
No unnecessary social complexity

Project Gallery

Project Details

Year

2023

Client

Pinmate

Services

UX/UI DesignMobile Development

Suggested Tech Stack

Mobile
React NativeExpoExpo Router
Real-time
FirebaseCloud Messaging
Location
Google Maps APIGeolocation
State & Data
ZustandTanStack Query

Interested in a similar project?

Let's discuss how we can help bring your vision to life.

Start a Conversation