Tired of listening to long voice messages? Echo Scribe converts WhatsApp voice notes (or any audio) into readable text in under a minute. Forward the audio to your personal email address — or tap an iOS Shortcut — and the words come back to you. No apps to install, no uploads, no fuss.
- Record a voice note in WhatsApp (or any app)
- Email the audio file to your personal transcription address (
abc123@yourdomain.com) - Read the raw transcript 15–30 seconds later — with optional AI-cleaned and summarized versions following right behind
sequenceDiagram
actor You
participant Mailgun
participant App as Next.js API (Vercel)
participant Whisper as OpenAI Whisper
participant GPT as GPT-4.1 nano
You->>Mailgun: Email voice note to abc123@yourdomain.com
Mailgun->>App: Webhook with audio attachment
App->>Whisper: Stream audio (in memory only)
Whisper-->>App: Raw transcript
App-->>You: Raw transcript email (15-30 s)
opt Enhancements enabled
App->>GPT: Clean up / summarize in background
GPT-->>App: Enhanced versions
App-->>You: Cleaned transcript and/or summary email
end
The raw transcript is always delivered first — enhancements never make you wait. Each version arrives as a separate, clearly labeled email ([Raw], [Cleaned], [Summary]).
Echo Scribe has been running continuously since July 2025 and in steady use ever since — hundreds of voice notes and hours of audio transcribed. The production deployment has run for over a year without needing a redeploy, and it costs almost nothing to operate: everything runs on free tiers except OpenAI usage (~$0.006 per minute of audio).
- Always raw + optional enhancements — instant verbatim transcript, plus opt-in grammar cleanup and structured summaries (key points, action items) powered by GPT-4.1 nano
- iOS Shortcut integration — every user gets a personal API key; transcribe straight from your iPhone without opening an app
- Privacy-first — audio is processed entirely in memory, transcripts are never stored or logged, only metadata is kept
- User management — Google sign-in, admin approval workflow, per-user preferences and voice history dashboards
- Production hardening — rate limiting, CSRF protection, security headers, Sentry monitoring (content-free), reCAPTCHA on the contact form
- Wide format support — M4A, MP3, WAV, OGG, AAC, and FLAC files up to 15 MB / ~25 minutes
A hybrid deployment that leans on each platform's strengths — Vercel for the Next.js app, Cloudflare D1 for the database, accessed over REST:
flowchart LR
subgraph Vercel
UI[Next.js app - dashboards]
API[API routes - webhook, transcribe, preferences]
end
subgraph Cloudflare
D1[(D1 database - users and metadata only)]
end
Shortcut[iOS Shortcut] -->|Bearer API key| API
Mailgun[Mailgun email] -->|inbound webhook| API
API -->|Whisper + GPT-4.1 nano| OpenAI[OpenAI]
API -->|REST| D1
UI -->|REST| D1
API -->|transcript emails| Mailgun
Voice transcripts never touch the database — they go straight from OpenAI to your inbox. See ARCHITECTURE.md for the full system design, data flows, and operational details.
Every approved user gets a permanent API key (managed from the dashboard) for programmatic transcription:
curl -X POST \
-H "Authorization: Bearer your-api-key" \
-F "file=@voice-note.m4a" \
https://your-domain.vercel.app/api/transcribe{ "text": "Your transcribed voice note content here..." }The dashboard includes a one-click iOS Shortcut download with visual setup instructions — paste your API key once and transcribe from anywhere on your iPhone (see Credit & Inspiration for the original concept).
Echo Scribe is designed to run (almost) free: Vercel Hobby + Cloudflare D1 free tier + Mailgun free tier. Only OpenAI usage costs money.
- Node.js 18.17+, a Vercel account, a Cloudflare account (D1), a Mailgun account with a verified domain, Google OAuth credentials, and an OpenAI API key
git clone https://github.com/jchu96/whatsapp-echo.git
cd whatsapp-echo
npm install
# Configure environment
cp env.example .env.local # then fill in your credentials
# Create and initialize the database
wrangler d1 create voice-transcription-prod
wrangler d1 execute voice-transcription-prod --file=./sql/schema.sql --remote
# Run locally
npm run dev
# Deploy
vercel --prodSee env.example for the full list of environment variables, and the Deployment Guide for step-by-step service configuration (Mailgun webhooks, OAuth redirect URIs, Vercel settings).
The whole system is built around one rule: your words are never stored.
- Audio is processed in memory only — never written to disk
- Transcript content is never logged, stored, or sent to monitoring
- The database holds only account info and technical metadata (file size, duration, status)
- Sentry error reports are scrubbed of all content
Security measures include Google OAuth + JWT sessions, per-user rate limiting, CSRF tokens, strict security headers, and SHA256 token auth for background processing. Full details in SECURITY.md.
| Document | What's inside |
|---|---|
| Architecture | System design, component inventory, data flows |
| Deployment Guide | Step-by-step production setup |
| User Manual | End-user guide from signup to daily use |
| Security Policy | Security measures, privacy guarantees, vulnerability reporting |
| Changelog | Version history |
- Nina Patrick (@ninapatrick) — product ideation; helped shape the early concept and direction of Echo Scribe
- Giacomo Melzi — original iOS Shortcut concept that inspired the API integration; Echo Scribe's version acts as a managed proxy so users never need their own OpenAI account

