System Design Interview Roadmap

System Design Interview Roadmap

System Design Walkthrough

Design Tinder Matching — Walkthrough

Archetype: Marketplace & Matching · Asked at: Match Group, Bumble, Hinge

Oct 27, 2026
∙ Paid

The probe

Two-sided marketplace matching with asymmetric information (you don’t know who liked you until you match). The interesting system design problem is the “like” storage — when user A likes user B, how do you efficiently detect that B has also liked A (a mutual match)?

Step 1 — Data Model

profiles: user_id, age, gender, location (geohash), photos[], bio, preferences{...} likes: liker_id, liked_id, created_at

UNIQUE INDEX: (liker_id, liked_id)

matches: match_id, user_id_1, user_id_2, created_at

52 FAANG Question Vault — $299 one-time (or $249 for paid subscribers)

All 52 walkthroughs + 52 drill cards + 6 framework cheatsheets + the Senior+ System Design Playbook. Everything, immediately. Lifetime access with all future updates included. → [VAULT CHECKOUT LINK]

Get Access to Github Repo

Step 2 — Match detection

When user A likes user B:

INSERT INTO likes (liker_id, liked_id) VALUES (A, B);

-- Check if B already liked A

SELECT 1 FROM likes WHERE liker_id=B AND liked_id=A LIMIT 1;

-- If found: create a match record and notify both users

INSERT INTO matches (user_id_1, user_id_2) VALUES (LEAST(A,B), GREATEST(A,B));

At scale: the mutual-like check is a hot query path. Cache it in Redis: SET likes:{B}:{A} 1 on every like. Match detection = GET likes:{B}:{A} — O(1), < 1ms.

User's avatar

Continue reading this post for free, courtesy of System Design Roadmap.

Or purchase a paid subscription.
© 2026 SystemDR Inc · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture