🎯 Core principle
Singles is a filter, not a fork. When a resident toggles "open to meeting people" on their Nabe profile, that's it — they show up in the Singles browse. There's no parallel "dating profile" with different photos / bio / personality. The profile is the profile.
Catfish-resistance is a side effect of the data, not a feature. The signals that make someone trustworthy are already accumulating: 3 years of check-ins, 6 building neighbors who can vouch, 12 quick recs, 4 events RSVP'd this month. None of that is fakeable on a dating app, but it's the default state of a Nabe resident.
Browse surfaces signals first, photos second. The hierarchy is intentional — building / years here / mutuals / activity before the photo. (Standard dating apps inverse this; the photo dominates.) Reads more like Linkedin-meets-neighborhood than Tinder.
Browse — neighborhood singles
Lives inside Explore tab as a section header ("Open to meet · 38 nearby"). List card design, NOT swipe deck. Tap a card → opens the existing UserProfile drawer with a new "Open to meeting people" ribbon at the top.
Singles
38 neighbors open to meeting people · Williamsburg + Greenpoint
Profile tap — same normal Nabe profile, opt-in ribbon
Tapping a Singles card opens the EXISTING UserProfile drawer. No separate "dating profile" view. Only addition: a small "Open to meet" ribbon + a single primary "Say hi" CTA. Everything else is the standard profile a neighbor sees when tapping the name on any post.
"Designer at Etsy. Marathon-adjacent. Always looking for the next neighborhood spot before everyone else finds it. McCarren mornings, Devocion afternoons."
Sara K., James R., Lucia M., +3
Opt-in — settings switch on your own profile
Single toggle inside profile settings. Once on, you appear in the Singles browse to other residents who have it on. No separate signup, no different profile.
Open to meeting people
When this is on, neighbors who have it on can see you in the Singles browse. Your profile doesn't change — they see what your other neighbors see.
Every profile you see is already a verified neighbor. Same posts. Same check-ins. Same building. No bot can fake 4 years of activity in the neighborhood you actually live in.
🏗️ Architecture (proposed)
User type extends:
+ singles: {
enabled: boolean
lookingFor: 'men' | 'women' | 'all'
ageRange: { min: number; max: number }
neighborhoodRadius: 'building' | 'block' | 'neighborhood' | 'nearby'
bio: string // optional — uses main profile bio if empty
}
src/components/singles/
├── SinglesBrowse.tsx // list+grid view, lives inside Explore
├── SinglesFilterDrawer.tsx // age/distance/interest filters
├── SinglesOptInToggle.tsx // settings switch on Profile/Me tab
└── (no separate ProfileView — taps use existing UserProfile drawer)
UserProfile.tsx (existing — small add):
+ when `user.singles.enabled` AND viewer's singles is enabled too:
render "Open to meeting people" ribbon at top of hero
replace "Message" CTA with primary "Say hi" gradient button
+ otherwise: existing profile unchanged
Catfish-resistance signals (none new — all from existing data):
• Years here (user.neighborhoodYears)
• Building (user.buildingId → mockBuildings)
• Mutual connections (intersect viewer's groups/friends with user's)
• Activity counts (recs, check-ins, posts, RSVPs)
• Verified badge (already exists on user type)
⬜ Founder calls for next session
- Q1 — Position in nav. Inside Explore as a section (current proposal), or surface as a top-level chip / promoted feature elsewhere?
- Q2 — Browse layout. List cards (default in mockup), or grid-of-photos like every other dating app? Claude's pick: list cards — keeps the Linkedin/Nextdoor register.
- Q3 — Bio handling. Singles uses the user's main profile bio (one bio, period), OR optional dating-specific tagline that ONLY shows in the Singles surface? Claude's pick: one bio. Reinforces "no parallel persona."
- Q4 — Activity filter. Should "Active this week" / "5+ years here" / "Mutual friends" be enforced filters or visual decorators that nudge sort order?
- Q5 — "Open to meet" ribbon. Visible on the profile (mockup default — so the singles surfacing is honest) or hidden when not browsing-from-Singles (privacy mode)?
- Q6 — How many demo profiles to seed? 8-12 for a representative browse, or 30+ to make the "38 nearby" feel real?
🎯 Pitch angle
"Hinge is 27% bots." Match Group's own filings reference platform integrity costs. The data moat dating apps have been spending billions to build, Nabe has by default — because residency, building, mutuals, and 3 years of check-ins aren't fakeable.
"Same profile, single filter." The pitch line. No parallel persona, no curated dating bio, no separate signup. A flag. The product is identity-coherent across every surface.
"Catfish-resistant by design." Built into the architecture, not bolted on with verification badges or selfie checks. The default state of a Nabe profile already meets the bar.