-
-
Indexed 100% on-device. New files auto-sync privately — no cloud.
-
Search like you talk. Finds photos by meaning, not filenames.
-
Understands what’s inside your documents. Even without exact keywords.
-
Long-press any photo. Find visually similar ones instantly.
-
Crop, enhance & filter any image. Auto-saved for instant search.
-
Photos & documents sorted into smart collections — no manual work.
-
Kind to your battery. Pauses heavy work when warm, picks up where it left off.
Inspiration
My phone holds thousands of photos I can't find. The rental receipt I needed for my deposit, the prescription I couldn't re-read, the screenshot of a QR code — no filenames, nothing to search by. Uploading everything to a cloud gallery to index it for me was the easy path, a trade I wasn't willing to make. So I built Mieru AI — Android-only, local-first search that makes what's hidden on your device visible again, without giving it away.
What it does
Mieru indexes photos, screenshots, PDFs, and DOCX on-device and lets you search the way you think. Just describe what you remember — "dog on beach", "beach sunset last summer", "rental agreement" — and it finds it by meaning, not filenames.
- Natural-language + time: understands "last week", "since 2023",
- Text inside photos: OCR for receipts, notes, screenshots, QR codes,
- Faces, scenes, objects, near-duplicates via long-press Find More Like This,
- 11 languages, Safe Search filter, chat-style step flow,
- Two modes: Quick works fully offline, Precise uses AI cleanup for harder queries,
- Active Engine (Auto): Neural for full AI, Flash for keyword-only fallback when warm or capped,
- Document scanner: Tap + to capture, saves to gallery on device and indexes instantly for search. ## How we built it Flutter + Drift/SQLite FTS5 + ML Kit + on-device CLIP (TFLite image + text towers, tokenizer). Indexing runs in background workers: ML Kit labeling/OCR/barcode/face/NSFW to FTS5, CLIP image embeddings to .fvecs, then post-passes for doc chunks and OCR text. Search is two-stage off main thread: FTS5 union semantic, local RRF rank. Quick uses on-device spell check only. Precise adds AI query normalization, then everything retrieves and ranks on-device. Running AI on a phone is a budget: towers never resident together, tokenizer + vectors shed under pressure, models XOR-obfuscated in the APK and loaded via memory only. Monetization with RevenueCat: Starter vs Pro tiers via entitlements. purchases_flutter Offerings + RevenueCatUI.presentPaywall() + realtime entitlement listener + Hive offline cache with silent re-sync, so expiry/offline never sticks the app in a wrong state. Precise, Safe Search, and Find More Like This are Pro-gated. ## Challenges we ran into
- Memory: two large towers + growing index. Fixed with load-what-you-need, transient images deleted after scan, WAL + vector cache shed.
- Heat: sustained inference throttles phones. Added unified SEVERE + 38°C battery gate — Cool by Design pauses heavy work when warm, picks up where it left off when cool, and auto-switches Active Engine: Neural (full AI) when cool, Flash (FTS5 keyword-only) when warm/capped.
- Android permission race: first launch shows one dialog at a time, photo request can starve notification request and stall first indexing. Made startup order + resume resilient.
- Honest failures: offline Precise throws SearchUnavailable with "Quick works offline" instead of silently returning unranked results. ## Accomplishments that we're proud of 100% on-device index, Quick search truly offline, no account needed. Heat-aware pause that feels smart, not broken: "Indexing paused — Device is warm". RevenueCat paywalls that work offline-first and stay truthful on expiry. 11 locales in sync, accessibility + dark/light polish. ## What we learned On-device AI is a systems problem, not a model problem. Memory budgets, thermal envelopes, permission races, and honest error states are the real engineering. Privacy is architectural: if photos never leave the device, there's no policy to trust. ## What's next for Mieru AI: Photos & Docs Search Production tier roll-out (101/21 Starter, 1001/201 Pro), Precise quality tuning from real libraries, cooler + faster post-passes, Play production.
Log in or sign up for Devpost to join the conversation.