SnapDish
The story
My sister's camera roll was overflowing with recipe screenshots — Instagram posts, blog pages, photos of cookbook pages — and she could never find the one she wanted. The photos app can't search the text inside a picture, and the recipes were buried among thousands of unrelated images. SnapDish is the app I built to fix that.
What it is
You import your recipe screenshots and SnapDish runs OCR on each one, on-device, so the text inside the image — titles, ingredients, steps — becomes searchable. You get a little cookbook you can actually search, instead of an archive you have to scroll. Everything stays on the phone: SnapDish is local-only by design, with no backend and no account.
It found an audience quickly — 1,000+ downloads in its first 14 days across the App Store and Play Store.
How I think about it
- Local-only. Recipes and screenshots live in the app's own storage. Nothing is uploaded; there's no server to trust.
- Fundamentals over frameworks. Plain Flutter —
ChangeNotifierfor state, file-based JSON for storage, the platform's own OCR engine for recognition. No heavy dependencies to ship a focused app fast. - Each platform's native strength. OCR runs through Apple Vision on iOS and Google ML Kit on Android, behind a single Dart interface.
The two articles below are about building it: the Flutter app itself, and the on-device OCR — which turned out to be genuinely different on iOS and Android — including an on-device Gemma feature I tried and decided to cut.