ScrollLater - Save Now, Hear Later
Read-it-later apps are where articles go to die. ScrollLater inverts pull into push with a 90-second daily audio briefing.
Role: Full Stack Developer. Team: Individual. Status: Live. Year: 2026.
Overview
Problem. Read-it-later apps are where articles go to die. Saves accumulate, none are read, the app becomes guilt.
Approach. Invert the pull into a push. Make the briefing the product. Every morning at 7am, ScrollLater hands you a 90-second audio summary of yesterday's saves, narrated by a tuned ElevenLabs agent. Listening is the daily ritual. The long-form read is optional.
Outcome. Daily-use product. Cross-device via iOS Shortcuts, a Chrome extension, and a PWA share sheet. Semantic search via pgvector embeddings. 39 commits, 139 files, 11 Edge Functions deployed.
Lessons. The briefing-as-product framing only works if the first-of-day delivery is rock-solid. Ninety percent of the engineering went into reliability of that one hourly cron: timezone correctness, idempotency, failure isolation per user. Nothing else matters if the briefing is late.
Architecture
- Frontend: Next.js 15 PWA with offline service worker
- Backend: Supabase with 11 Edge Functions, pgvector for semantic search
- Audio: ElevenLabs Conversational AI agent `agent_2001kpfrb0zrektav0a1vrtpjhsj`
- Save surfaces: Chrome extension, iOS Shortcut, PWA share target
Key features
- Daily 7am audio briefing narrated by tuned ElevenLabs agent
- Chrome extension for one-click saves
- iOS Shortcut + PWA share sheet for cross-device capture
- Offline-first service worker, syncs when online
- pgvector semantic search across saved articles
- 11 Supabase Edge Functions handling ingestion and scheduling
- Failure isolation per user so one bad save cannot poison the cron
Technical details
- Frontend: Next.js 15 App Router, PWA plugin, offline service worker
- Backend: Supabase + 11 Edge Functions (Deno)
- Vector search: pgvector over sentence embeddings
- Audio: ElevenLabs Conversational AI, agent ID agent_2001kpfrb0zrektav0a1vrtpjhsj
- Extensions: Chrome MV3 extension, iOS Shortcut, PWA share target
- Deploy: Vercel (frontend), Supabase (backend)
Challenges
- Timezone-correct scheduling across users in different regions
- Idempotent cron design so double-triggers never double-deliver
- Clean article extraction across publishers (readability + DOMPurify)
- Reliable audio generation pipeline against ElevenLabs rate limits
Tags: Next.js, Supabase, pgvector, ElevenLabs, PWA, Edge Functions