· Ed Dowding · Portfolio · 2 min read
Panauricon (Limitless Elephant)
Continuous voice capture app with 30-minute auto-segmented recording, Google Gemini transcription, location tagging, and full-text search. Designed for capturing thoughts, conversations, and ideas without interruption.

The Problem
Ideas and insights arrive at inconvenient moments: during walks, in conversations, while driving. Traditional voice memo apps are limited: short recordings, no transcription, no search. You end up with hours of audio you’ll never review. Result: valuable thoughts captured but never retrieved.
What I Built
Panauricon is a continuous voice diary designed for extended, hands-free capture:
- 30-Minute Auto-Segmented Recording: Clock-aligned segments with seamless handoff—no gaps, no limits
- Foreground Service: Keeps recording when app is backgrounded or phone is locked, auto-resumes after crashes
- Google Gemini Transcription: Speech-to-text with speaker identification and timestamp formatting
- Location Tagging: GPS capture with reverse geocoding (OpenStreetMap) adds context to each recording
- Full-Text Search: Query across all transcripts with date range filtering and calendar view
Tech Stack
Mobile: Flutter with Provider state management, record package for audio, flutter_foreground_task for background service, SQLite for local caching.
Backend: Firebase Functions (Node.js/TypeScript), Firestore for metadata, Cloud Storage for audio files (64kbps, organised by user), Google Generative AI (Gemini 2.5 Flash/Pro) for transcription.
Infrastructure: Per-user data isolation via API key auth, signed URLs for secure audio access, retry logic with exponential backoff (5 attempts) for transcription failures.
Lessons Learned
Segment Handoff Is Everything: Continuous recording sounds simple—but handling the transition between 30-minute segments without dropping audio required careful lifecycle management. Clock-aligned boundaries with automatic stop/restart eliminated gaps. Lesson: “continuous” requires explicit engineering.
Location Adds Context You Didn’t Know You Needed: Adding reverse-geocoded location to transcripts (“Recorded at: Hampstead Heath, London”) transformed playback. Suddenly you remember why you recorded something. Lesson: metadata is content.
Transcription Retry Logic Is Essential: Google Cloud Functions cold starts caused transient failures. Implementing exponential backoff (up to 2-minute waits across 5 attempts) made transcription reliable without user intervention. Lesson: distributed systems fail—design for recovery.