🔍 Loupe - AI-Powered Photo & Notes Assistant
Stop scrolling through hundreds of photos. Let AI find your best shots.
💡 Inspiration
We've all been there: 50 photos of the same moment, and only 2 are keepers. Scrolling through camera rolls is tedious. Taking photos of classroom blackboards results in unreadable notes buried in your gallery.
The idea: What if AI could automatically sort your photos by quality and convert messy blackboard photos into clean, searchable text? That's Loupe.
With AI tools like Gemini making this possible, and platforms like Novus.ai showing us how users actually interact with products, there's no excuse not to ship. So we did.
🎯 What it does
Loupe is a Progressive Web App that solves two problems:
📸 Smart Photo Sorting
- AI analyzes photo quality based on 25+ factors (sharpness, exposure, composition, faces, expressions)
- Scores photos 0-100 and highlights keepers vs. blurry shots
- Desktop Agent: Drop photos in a folder → Auto-detects and processes new files every 5 seconds
- Mobile: Snap photos with your camera → Instant AI analysis
📝 Classroom Blackboard OCR
- Take a photo of a blackboard during a boring lecture
- AI converts handwriting & text to clean, formatted Markdown
- Export, copy, or share your notes instantly
- Works with whiteboards, handwritten notes, and printed text
Bonus: Works offline, installs like a native app (PWA), and never stores your data.
🛠️ How we built it
Frontend:
- Vanilla JavaScript (no framework bloat)
- File System Access API for desktop folder monitoring
- IndexedDB for persistent file tracking (never re-process the same photo)
- Service Worker for PWA offline capability
- Mobile camera integration with fallback methods
Backend:
- Node.js + Express for API
- Google Gemini 3.5 Flash for vision & OCR analysis
- Multer for file handling
- Rate limiting & security middleware
AI Integration:
- 25+ photo quality metrics: sharpness, focus, exposure, color accuracy, noise, face detection, rule of thirds, lighting, background quality
- Real-time streaming OCR for notes conversion
- Structured, bullet points, or outline formatting options
Why Novus.ai matters: We're not just shipping into the void. With Novus.ai, we can see how real users interact with Loupe—which features they use, where they get stuck, what works. That feedback loop turns this from a side project into something people actually want.
🚧 Challenges we ran into
Browser compatibility: File System Access API only works in Chrome/Edge. Solution: Built mobile fallbacks for 95%+ coverage.
Persistent tracking: Users hated re-processing the same 100 photos every session. Solution: IndexedDB-based folder-specific tracking that persists across browser restarts.
Gemini API quota limits: Free tier = 20 requests/day. Solution: On-device pre-filtering + smart batching + fallback to local scoring.
Real-time OCR: Streaming handwriting recognition without freezing the UI. Solution: Chunked processing with progressive rendering.
Mobile camera permissions: HTTPS required in production. Solution: Clear documentation + local network testing workflow.
🏆 Accomplishments that we're proud of
✅ Shipped a working product (not just a prototype)
✅ 95%+ browser coverage (desktop + mobile)
✅ Zero data storage (privacy-first design)
✅ Persistent file tracking (never re-scan photos)
✅ Real classroom use case (actually helpful for students)
✅ Sub-10 second processing for typical photo batches
✅ Production-ready with full documentation
Most importantly: It solves a real problem we had. We use it ourselves.
📚 What we learned
Ship first, perfect later. A working 80% solution beats a perfect idea that never launches.
AI tooling is a multiplier, not magic. Gemini does the heavy lifting, but the UX design, file tracking, and performance optimization are what make it actually usable.
Mobile-first matters. Most users will access this on their phones. Desktop auto-monitoring is cool, but mobile camera integration is essential.
User feedback tools like Novus.ai are critical. You can't improve what you can't measure. Knowing how users interact with features tells you what to build next.
Privacy sells. No data storage, no accounts, no tracking. Users love that.
🚀 What's next for Loupe
Short-term:
- Cloud sync for file tracking (cross-device history)
- Batch export to specific folders
- Custom scoring criteria (let users weight what matters to them)
- Video analysis support (extend photo sorting to clips)
Long-term:
- Multi-language support (OCR in 50+ languages)
- Smart albums (auto-organize by people, places, events)
- Integration with cloud storage (Google Photos, iCloud, Dropbox)
- Mobile app (native iOS/Android versions)
- Collaborative features (share albums, get team votes on best shots)
With Novus.ai insights, we'll know which features users actually want—not just what we think they need.
🔗 Links
- GitHub Repository: https://github.com/ansonj-dev/Loupe
- Documentation: README.md
Challenge: Ship, don't just talk about it.
Sponsors: Mind the Product x Novus.ai
Result: A real product solving real problems.
🛠️ Tech Stack
- JavaScript (Vanilla)
- Node.js + Express
- Google Gemini AI
- File System Access API
- IndexedDB
- Service Workers (PWA)
- HTML5 Canvas
Made with ❤️ for photographers, students, and anyone tired of photo chaos.
🔍 Loupe - Find the perfect shot, every time.
Built With
- css3
- express.js
- file-system-access-api
- google-gemini-ai-api
- html5
- indexeddb
- javascript
- multer
- node.js
- progressive-web-apps-(pwa)
- rest-api
- service-workers
Log in or sign up for Devpost to join the conversation.