All projects
DesignUIUXProductEngineeringStrategy

Family Friendly SF

A curated guide to the San Francisco parents actually use.

A curated directory of 230+ family-friendly spots across 36 San Francisco neighborhoods. Tested, tagged by age range and weather, organized by real parent needs. Automated weekly newsletter with weather-aware recommendations.

Screenshot 1
FFSF landing page — "Where SF families actually go" — featured guides and photography
Landing. Photo-forward, warm palette, parent-first copy.
Screenshot 2
Neighborhood explorer view with filters and a map
Browse by neighborhood — a map + filters that match how parents actually plan.
Screenshot 3
Individual listing detail with photos, tags, nearby spots
Each listing answers "should I go there today?" not just "what is this place?"

The problem

Google surfaces tourist spots. Yelp ranks by volume. Neither answers the question parents actually ask: where can we take a 3-year-old on a rainy Tuesday in the Richmond, and is there a bathroom nearby?

The approach

A curated guide, not a crowd-sourced review site. Every spot visited, every photo real, every tag useful — age range, weather-friendliness, stroller access, indoor/outdoor. Organized by neighborhood and by parent-need, not by business category.

What I designed and built

End-to-end product: brand, site, listings CMS (Supabase), photo pipeline (Puppeteer scraping with manual curation), neighborhood explorer, map view, filters, and SEO-optimized listing pages. Next.js + server-rendered routes so listings rank for real parent search queries.

Behind the build

The tagging system is the product. Any listing site can have filters — but the tags had to follow parent language, not business taxonomy. "Good for a 3-year-old on a rainy Tuesday" is a real query; "indoor + age 3" is a search box. Every listing gets curated by hand after a visit — scrappy curation beats clean scale here. Parents can tell when a site is written by someone who has actually been. The photo pipeline is semi-automated (Puppeteer pulls official shots) but every listing also gets a human pass before it ships.

Craft decisions I care about

Photography is the primary voice — every listing has a real photo, never stock. Categories organized around parent-need ("rainy day," "stroller-friendly," "easy with a toddler") rather than business type. Warm palette, generous spacing, content cards that tell you whether to go today — not just what the place is.

By the numbers

230+
Listings
36
Neighborhoods
Automated
Photo pipeline
Puppeteer + curation
SSR
Rendering
SEO for parent search queries

Stack

Next.jsTypeScriptSupabasePuppeteerTailwindVercel Cron
Next project
The Crit
Honest design feedback in under 60 seconds