A recommendation app for Sydney events, live on the App Store and Google Play. I built and run the entire stack as the only engineer.
- Recommender. Personalized feed in PL/pgSQL over pgvector embeddings: interaction-weighted interest clustering, a Bayesian-shrunk trending signal, and explore/exploit balancing. Served as materialized candidate feeds with server-side impression tracking, per-cycle deduplication, and archetype cold-start.
- Group scoring. A group recommendation layer using max-plus aggregation, so one strongly-matched member can carry the recommendation, with a shared-interest breadth factor rewarding broadly shared appeal.
- Data pipeline. An automated, LLM-powered ETL that scrapes, normalizes, enriches, and semantically deduplicates unstructured event data, turning 80,000+ raw events into ~8,000 clean templates across 1,600+ venues at an under-1% human-review rate.
- Serving & infra. API layer as Deno/TypeScript Supabase Edge Functions (search, LLM itinerary builder, push, Places resolution); row-level security across all tables; PostHog and Sentry instrumentation.
- Frontend. Cross-platform app (iOS, Android, shareable webview) in React Native / Expo, using LLM-assisted workflows.