Transform your stream-of-consciousness audio recordings into structured, actionable insights.
Funnel is a SwiftUI app that captures spontaneous audio recordings and transforms them into multiple visual representations. Perfect for capturing ideas on-the-go when inspiration strikes.
🎤 Record → 🤖 Process → 📋 Visualize
│ │ │
│ │ ├── Bullet Points
│ │ ├── Napkin Sketch
│ │ └── Full Transcript
│ │
│ └── AI-powered transcription & summarization
│
└── One-tap recording with AirPods support
- Simple one-tap recording with real-time waveform visualization
- Background recording capability
- AirPods/headphone support
- Minimum duration check to ensure quality
- Automatic transcription via OpenAI Whisper
- Smart summarization using Anthropic Claude
- Visual diagram generation
- Fast processing with status updates
- Gradient backgrounds with vibrant colors
- Glassmorphic effects for modern aesthetics
- Smooth animations and transitions
- Dark mode optimized
- Chronological list of all recordings
- Search across transcripts and summaries
- Export options (coming soon)
- Archive and delete functionality
- SwiftUI - Modern declarative UI
- SwiftData - Local persistence
- AVAudioRecorder - Audio capture
- Combine - Reactive programming
- Deno - Modern TypeScript runtime
- OpenAI Whisper API - Audio transcription
- Anthropic Claude API - Content analysis
- RESTful API - Clean communication
- Xcode 15+
- iOS 17+
- Deno 1.40+
- API Keys for OpenAI and Anthropic
-
Clone the repository
git clone https://github.com/happybits/funnel.git cd funnel -
Set up the iOS app
make install # Install swiftformat make build # Build the app
-
Configure the backend
cd server cp .env.example .env # Add your API keys to .env
-
Start the server
deno task dev
-
Run the app
make run # Or open in Xcode and run
make help # Show all available commands
make build # Build the app
make run # Run on simulator
make format # Format Swift code
make test # Run tests
make clean # Clean build artifactsfunnel/
├── Funnel/ # iOS app
│ ├── Views/ # SwiftUI views
│ ├── Models/ # Data models
│ ├── Services/ # API and recording services
│ └── Utils/ # Helpers and extensions
├── server/ # Deno backend
│ ├── routes/ # API endpoints
│ ├── services/ # External API integrations
│ └── tests/ # Server tests
└── docs/ # Documentation
Upload an audio file for processing.
Request:
- Multipart form data with audio file
- Supported formats: mp3, mp4, wav, m4a
Response:
{
"transcript": "Full transcription text...",
"duration": 45.2,
"bulletSummary": ["Key point 1", "Key point 2"],
"diagram": {
"title": "Concept Overview",
"description": "Visual representation of the main idea",
"content": "ASCII art or mermaid diagram"
}
}We welcome contributions! Please see our Contributing Guide for details.
- Follow the SwiftUI Layout Best Practices
- Review the Glassmorphism Implementation Guide for performance tips
- The project uses Xcode's new folder-based structure (files are automatically referenced)
- Run
make formatbefore committing - Write tests for new features
MIT License - see LICENSE for details.
- Design inspiration from modern iOS apps
- Built with ❤️ using SwiftUI and Deno
- Powered by OpenAI and Anthropic APIs


