
CraveCompass
Swipe-Based Restaurant Discovery for Indianapolis
My roleSole engineer and product owner — the ranking logic, the API, authentication, the catalog pipeline, and the mobile interface.
The Problem
Deciding where to eat is a daily stall, and review scores answer the wrong question — they rate a restaurant, not whether you want what it serves tonight. CraveCompass reads intent from dish swipes and returns ranked restaurants with the reason attached, so the recommendation can be argued with rather than just trusted.
The Solution
An installable mobile app that matches you to Indianapolis restaurants by what you actually want to eat. Swipe on dishes rather than answering a questionnaire; the app builds a taste profile from those swipes and ranks real restaurants against it, explaining every match.
Features
- Swipe deck you can drag or tap, led by your favorite cuisines, filtered by dietary needs, with undo
- Restaurants ranked against your taste profile, each carrying its reason — “Because you liked Birria Tacos”
- Match gate: swipe a few dishes before results unlock, so a ranking is never built on nothing
- Restaurant pages with directions to Apple or Google Maps, call, website, share, and save
- Email and password accounts with bcrypt and JWT; guest swipes carry over on sign-up, and accounts can be deleted
- Mobile-only by design — desktop visitors get a scan-to-open hand-off rather than a cramped layout
- Installable PWA whose service worker caches the app shell and food photography for offline use
- Catalog seeded idempotently on every deploy; restaurants removed from the source file are deactivated, never deleted
- Restaurant details verified against each restaurant's own website rather than scraped