🔍 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

  1. Browser compatibility: File System Access API only works in Chrome/Edge. Solution: Built mobile fallbacks for 95%+ coverage.

  2. Persistent tracking: Users hated re-processing the same 100 photos every session. Solution: IndexedDB-based folder-specific tracking that persists across browser restarts.

  3. Gemini API quota limits: Free tier = 20 requests/day. Solution: On-device pre-filtering + smart batching + fallback to local scoring.

  4. Real-time OCR: Streaming handwriting recognition without freezing the UI. Solution: Chunked processing with progressive rendering.

  5. 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

  1. Ship first, perfect later. A working 80% solution beats a perfect idea that never launches.

  2. 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.

  3. Mobile-first matters. Most users will access this on their phones. Desktop auto-monitoring is cool, but mobile camera integration is essential.

  4. 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.

  5. 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


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

Share this project:

Updates