Your screenshots, actionable. LaterLens is an AI-powered mobile app that reads your screenshots, understands context with Groq Cloud (Llama 3.1) + on-device OCR, and creates a smart feed of tasks, reminders, and actions β all processed securely on your device.
- πΈ Auto Screenshot Analysis β Fetches your latest screenshot and runs on-device OCR + Groq AI to extract intent
- π§ Smart Categorisation β AI classifies screenshots into Product, Study Material, Idea, Code, Event, or Receipt
- β‘ Action Queue β A priority feed of actionable items with suggested next steps (e.g. "Add to Calendar", "Buy Now")
- π― Quick Actions β Complete, Snooze, or Archive items with haptic feedback and smooth animations
- π Collections β Browse all processed screenshots organised by category
- π€ Ask AI β Chat with AI about your screenshots for deeper insights
- π Insights & Streaks β Track your productivity patterns
- βοΈ Advanced Settings β Privacy exclusion rules, auto-archive housekeeping, and Wi-Fi only processing modes
- π Intelligent Scheduling β Daily digest summaries and quiet hours to protect your focus
- π Premium Light & Dark Themes β Automatic system-aware theming with carefully crafted palettes
- π Privacy-First β All OCR processing happens on-device; only extracted text goes to Groq API
LaterLens uses a 4-layer OCR pipeline designed for difficult screenshots (dark mode UIs, mixed Hindi-English text, dense layouts, and low-contrast cards), while keeping all image handling fully on-device.
- Layer 1: Preprocessing (On Device)
- Tone detection (
light,dark,mixed) from a center strip of the screenshot - Resize and PNG conversion via
expo-image-manipulator - Color/filter transforms via
@shopify/react-native-skiaonly:- dark mode: greyscale -> invert -> sharpen
- light mode: sharpen
- mixed tone: contrast boost -> sharpen
- Layer 2: Multi-Script OCR
- ML Kit LATIN pass always runs
- DEVANAGARI pass runs only when the screenshot is likely from an Indian app
- Layer 3: Post-Processing
- UI chrome filtering (status bar text, nav labels, social action labels)
- Edge-region trimming, confidence filtering, deduplication, reading-order sorting
- Paragraph assembly and confidence grading (
low/medium/high)
- Layer 4: Confidence Retry
- If low-word output is detected on non-inverted paths, apply contrast boost retry
- Compare retry output vs initial output and keep the better result
The Detect Text action on each card provides visible progress states:
idle: ready state with outlined buttonprocessing: stage label updates in real time (prepare, detect, Hindi pass, clean, retry)success: detected word count, confidence badge, optional Hindi badge, expandable text previewfailed: recoverable error with retry prompt
- OCR image preprocessing and recognition remain 100% on-device
- No paid OCR service is used
- Temporary files are cleaned up in
finallyblocks to avoid cache growth - Target pipeline latency: up to ~8 seconds on mid-range Android hardware
- OCR debug logging is gated behind a
DEBUGflag and disabled by default
| Element | Colour |
|---|---|
| Background | #F9FAFB |
| Card Surface | #FFFFFF + soft shadow |
| Primary Accent | #6366F1 (Indigo) |
| Text Primary | #111827 |
| Text Secondary | #6B7280 |
| Element | Colour |
|---|---|
| Background | #0F172A (Deep Slate) |
| Card Surface | #1E293B + subtle border |
| Primary Accent | #818CF8 (Vibrant Indigo) |
| Text Primary | #F8FAFC |
| Text Secondary | #9CA3AF |
Each AI category gets a unique semantic colour for instant visual recognition:
- π’ Product β Green tint
- π΅ Study Material β Blue tint
- π‘ Idea β Amber tint
- πΏ Code β Forest green tint
- π©· Event β Pink tint
- π£ Receipt β Purple tint
LaterLens/
βββ App.js # Root component (Navigation + Providers)
βββ app.json # Expo configuration
βββ index.js # Entry point
βββ .env # Secret env vars (git-ignored)
βββ .env.example # Key template (committed)
βββ package.json
βββ assets/ # Icons, splash screen images, brand assets
βββ src/
βββ theme/
β βββ colors.js # Design tokens (palettes, typography, spacing)
β βββ useTheme.js # Central theme hook (useColorScheme)
βββ components/
β βββ ActionCard.js # Premium action card with haptics & animations
βββ screens/
β βββ home/
β β βββ PermissionsScreen.js # Onboarding with animated glow icon
β β βββ HomeQueueScreen.js # Main action feed with branded header
β β βββ ActionDetailScreen.js# Full detail view for an action
β βββ collections/ # Collection browsing screens
β βββ askAI/ # AI chat screens
β βββ insights/ # Stats & streak screens
βββ navigation/
β βββ AppNavigator.js # Tab + Stack navigators (themed)
β βββ routeNames.js # Route name constants
βββ state/
β βββ QueueContext.js # Global queue state (React Context)
β βββ SettingsContext.js # Global settings management (Wi-Fi, Privacy, etc.)
βββ services/
β βββ aiProcessingEngine.js # OCR + Groq Cloud (Llama 3.1) pipeline
β βββ dataManagementService.js# Bulk import, Export & Storage stats
β βββ notificationService.js # Quiet hours & Digest logic
β βββ actionQueueStorage.js # AsyncStorage persistence
βββ models/
β βββ actionModels.js # Content types, intents, statuses
βββ utils/
LaterLens follows a Privacy-First architecture where heavy processing (OCR) happens entirely on-device. Only anonymised text is sent over the cloud for AI analysis.
graph LR
A[πΈ Screenshot] --> B[π On-Device OCR]
B --> C[π§ Groq AI Cloud]
C --> D[β‘ Smart Action]
subgraph Local[On-Device]
A
B
D
end
subgraph Cloud[Groq Cloud]
C
end
For a deep dive into our system design, data flows, and component relationships, please see our Architecture Documentation.
| Tool | Version |
|---|---|
| Node.js | 18+ |
| npm | 9+ |
| Git | 2.x+ |
| Expo CLI | Latest |
| Android Studio or Xcode | For emulator/simulator |
| Expo Go app | On your physical device |
git clone https://github.com/your-username/LaterLens.git
cd LaterLensnpm installcp .env.example .envOpen .env and add your Groq API Key:
EXPO_PUBLIC_GROQ_API_KEY=gsk_your_groq_api_key_hereGet your API key from the Groq Cloud Console.
npx expo startThis will start the Expo dev server and display a QR code in the terminal.
- Install the Expo Go app on your phone:
- Scan the QR code:
- Android: Use the Expo Go app's built-in scanner
- iOS: Use the default Camera app
- The app will load on your device within seconds
- Make sure Android Studio is installed with an emulator configured
- Start the emulator
- Press
ain the Expo terminal to open on Android
- Make sure Xcode is installed
- Press
iin the Expo terminal to open on iOS Simulator
Since this app uses expo-media-library and @react-native-ml-kit/text-recognition (native modules), you may need a development build for full functionality:
# Android
npx expo run:android
# iOS
npx expo run:iosNote: OCR and photo library access require a development build or a physical device. They won't work in Expo Go on all platforms.
| Layer | Technology |
|---|---|
| Framework | React Native 0.81 (Expo SDK 54) |
| Language | JavaScript (ES2022) |
| AI / LLM | Groq Cloud (Llama 3.1 8B Instant) |
| OCR | @react-native-ml-kit/text-recognition (on-device) |
| OCR Image Processing | @shopify/react-native-skia (colour matrix transforms) |
| Navigation | React Navigation 7 (Bottom Tabs + Native Stack) |
| State | React Context + useReducer |
| Storage | @react-native-async-storage/async-storage |
| Filesystem | expo-file-system |
| Networking | expo-network (Wi-Fi detection) |
| Notifications | expo-notifications |
| Sharing | expo-sharing |
| Icons | lucide-react-native |
| Haptics | expo-haptics |
| Theming | Custom design system + useColorScheme |
| Env | dotenv + expo-constants |
| Variable | Required | Description |
|---|---|---|
EXPO_PUBLIC_GROQ_API_KEY |
β | Your Groq Cloud API key |
This project is private and not open for redistribution.
