WhatsUp
Find your night. Every time.
Built solo — WhatsUp is an AI-powered social discovery app for iOS that surfaces the right places and events based on exactly how you feel right now. Type "romantic wine bar under $50 for date night" and the engine correctly parses intent, mood, budget, and group size — then blends nearby Google Places venues and live Ticketmaster events into a single, intelligently ranked list.
The intelligence layer is a 12-phase search pipeline running inside a single Express server — replicating the query understanding infrastructure that Uber and Airbnb spend teams of engineers to build. 22 feature flags gate every capability for instant hot-disable without redeploy. Circuit breakers, cost optimization, and a 7-strategy progressive fallback guarantee the app never returns an empty screen.



- 01.12-Phase Search Intelligence Pipeline — custom orchestrator processes every query through normalization → sub-intent detection → semantic expansion → provider strategy selection → parallel execution → intelligent deduplication → multi-label classification → adaptive 8-component ranking → hyperlocal boosts → anti-bias correction → 7-strategy fallback → UX feedback generation. Each phase is feature-flag gated for instant hot-disable without redeploy. Replicates infrastructure Uber and Airbnb spend full teams building — inside a single Express server.
- 02.Hybrid Rule-Based + GPT-4o-mini Intent Classifier — deterministic rule engine extracts multi-dimensional intent (type, mood, budget, group size, urgency). Queries below 0.65 confidence (the industry threshold: Uber uses 0.7, Airbnb 0.6) escalate to GPT-4o-mini, handling abstract NL queries pure rules can't: "I want to meet women" routes correctly to social venues and singles events. 24-hour result cache eliminates redundant API calls; graceful fallback if OpenAI exceeds budget.
- 03.Adaptive 8-Component Ranking Engine — every result scored across proximity (exponential decay), rating (normalized), popularity (sigmoid — specifically suppresses chain dominance), novelty (hidden gem detection: 4.5+ stars, <50 reviews), temporal relevance, intent match, area vibrancy (event density within 200m), and venue independence. Weights dynamically shift by mood (romantic → +rating, −popularity; adventurous → +novelty) and urgency (immediate → +proximity, +temporal). Static ranking would surface the same Starbucks for every query.
- 04.5-Snap-Point Gesture-Driven Bottom Sheet — hand-rolled with react-native-gesture-handler's PanGestureHandler across 5 discrete snap positions (hidden, collapsed, partial, three-quarter, expanded). 5-layer search-refresh safety logic prevents result replacement when user has an active search, is mid-gesture, or is in browse mode. MapScreen.tsx (3,600 lines) handles category-colored clustered markers, animated gradient cluster badges, a 5–50 mile distance slider with dynamic re-query, and infinite scroll pagination.
- 05.Production-Grade Infrastructure at Solo Scale — per-provider circuit breakers (closed/open/half-open states, 5-failure threshold, 60s reset) prevent Google Places or Ticketmaster outages from cascading. CostOptimizer tracks daily API spend with a $10/day Google Places cap (~588 calls), auto-resetting at midnight. Load tested at 100 concurrent connections for 30 seconds via autocannon. p50/p95/p99 latency tracked across last 10,000 requests via MetricsCollector. 22 env-variable-overridable feature flags.
- 06.Multi-Layer Caching + Progressive Never-Empty Fallback — 3 independent cache layers (provider TTL 30–120s tuned by location type, ranked-result cache 30–60s, in-flight deduplication preventing stampede requests). Coordinate bucketing to ~110m precision and radius to 250m increments matches Google Maps' own debounce strategy. 7-strategy fallback chain: exact query → 2× radius → 4× radius → modifier-stripped → related-category expansion → OpenAI-rephrased → universal "What's Happening" fallback. Users never see an empty screen.