Designed & built Prototype

OutdoorPersonals

An activity-partner matching platform built around a weighted compatibility model, with safety features, region gating and shared outing plans. Built as a complete MVP, not deployed.

Project
OutdoorPersonals
Role
Designer & Developer
Timeline
2026
localhost:3338 — local development build
The Suggested partners screen, ranked by compatibility for the Pacific Northwest region, showing member cards with match scores of 72, 71, 60, 50, 35 and 30 alongside each person's pace and experience level, verified badges, activity tags, and meeting preference.

The premise

Finding people to do outdoor activities with is a real problem that dating apps solve badly, because the thing being matched is different. It isn’t romantic compatibility — it’s whether you hike at the same pace, have comparable experience, want the same kind of day out, and are free at the same times.

Getting paired with someone who wants to summit fast when you want to photograph wildflowers is a bad day for both of you.

The matching model

Compatibility is scored 0–100 from weighted components: shared activities at 40%, pace at 20%, experience level at 15%, availability at 15%, and outing style at 10%.

The weighting encodes an opinion. Shared activity interest dominates because without it there’s nothing to do together. But pace and experience are weighted meaningfully above scheduling, because a mismatch there produces a genuinely bad — and occasionally unsafe — outing, while a scheduling mismatch just means waiting for a better weekend.

It’s deterministic and inspectable rather than learned, which for a cold-start product with no interaction data is the correct choice — and it means a user could be shown why a match was suggested.

That last part is only half-built. The score appears on every partner card and the browse screen names the factors it used, but there’s no per-match breakdown showing how the number was reached. It’s the first thing I’d finish. After an outing, both people rate it, and that feedback is meant to inform later matches.

Safety as a design requirement

Meeting strangers in remote places carries risk that a normal social product doesn’t. So the data model includes reporting and moderation, an admin review surface, and shared outing plans — a plan accessible by token so details can be sent to someone not on the platform, which is the digital version of telling somebody where you’re going.

Regions are gated with an open or waitlist state, so the product can launch somewhere with enough density to actually work instead of being empty everywhere — the standard failure mode for matching products.

Scope

22 pages covering signup, onboarding, profiles, browsing, matches, requests, messaging, activity and guide content, safety information and admin. Eight Prisma migrations across users, profiles, matches, requests, messages, outing plans, reports, regions and email tokens. A 37-entry catalog holding 29 activities alongside resource groups, services and safety topics. Auth with email verification and password reset.

Status

This one is honest about being a prototype. It’s a complete, working MVP running locally — and it is not deployed, has no users, and its own planning document states plainly that nothing serves the domain today.

I’m including it because the product thinking is the substance: deciding what to match on, weighting it defensibly, designing for safety, and solving cold-start density before launch rather than after.

Inside the project

2
localhost:3338 — local development build
The marketing homepage headed "The outdoors is better with the right partner," with a badge above the headline reading "Now matching: Pacific Northwest · US-wide waitlist."
Region gating is stated in the hero rather than hidden. Launching one dense region beats launching everywhere and being empty.
localhost:3338 — local development build
A match page for Jordan Lee combining a chat thread with a First Outing Plan form for location, time, difficulty and whether friends are coming, a Copy trusted-contact link button, and a safety notice stating the platform does not run criminal background screenings.
The outing plan and the trusted-contact link are the safety design: a plan you can send to somebody who isn't a member, so a person outside the platform knows where you went.

Questions about this work?

Happy to go deeper on any of it — the decisions, the trade-offs, or what I'd do differently.