OkaySo
Snap a photo of wherever you're at, and get summarised reviews instantly.
I created the app just for myself, so it's not live publicly.
OkaySo is a mobile web app that lets you get summarised reviews for any bar, restaurant or other location you're at. Just take a photo outside and within a few seconds the app works out where you are, pulls its Google reviews, and summarises them — telling you the good and the bad.
Key features
- Search quickly by taking a photo
- Uses AI on the photo + GPS to work out exactly where you are
- Pulls live reviews from Google Maps
- AI summary covering the good, the bad, tips and scams to know about
- It's a PWA so no need to download anything
Tech used
- Built and hosted on Replit
- React + Vite (PWA, mobile-first)
- Node.js + Express for the API layer
- PostgreSQL + Drizzle ORM for scan history
- SerpAPI for Google Maps search and reviews
- OpenRouter (Mercury 2 and Gemini Flash 2.5) for photo analysis and review summarisation
The story
I've wanted to build this app for a long time. Every time I'm on vacation with my wife we'll be walking, find a place that might be good — then she'll spend the next 5 minutes scrolling Google reviews to see what it's like and check for any scams.
Boring, so I figured an app could make this easier.
I figured that AI models were advanced enough to OCR information from a picture of a venue as most places have name signs or other clues. But this alone wouldn't be enough — especially for chain locations. Location awareness would be required, which is simple on mobile. I searched and found SerpAPI which would be able to handle location search for coordinates, and pull reviews for the chosen location.
Replit has a built-in integration with OpenRouter making the AI step easy. I went with Gemini Flash 2.5 for image analysis and Mercury 2 for location picking and review summaries — both models were the fastest I tested at doing this.
Once it was working I spent a few hours tidying up the design and handling errors. Now working, the app takes about 3–5 seconds to deliver the summary.