Inspiration
We live in an era of constant information overload. Every day, we encounter important documents, ideas, conversations, and observations that we want to remember but struggle to organize. Screenshots pile up, notes get scattered across apps, and by the time we need this information, it's lost to poor search or vague memories.
What it does
Recall Butler is an AI-powered memory assistant that transforms unorganized inputs into searchable, actionable knowledge. It accepts multiple input types—text, screenshots, PDFs, URLs, and voice notes—and processes them through:
🔍 Smart Ingest
- Upload files (PDFs, images)
- Paste text from clipboard
- Save URLs for automatic extraction
- Watch real-time processing with QUEUED → EXTRACTING → EMBEDDING → READY status
🧠 Semantic Recall
- Natural language search across all memories
- AI-powered grounded answers with source snippets
- One-click document navigation to source material
🤵 Proactive Butler Actions
- AI suggests smart actions based on content (invoices → payment reminders, itineraries → check-in reminders)
- Approve or dismiss suggestions with one tap
- Scheduled reminders via Serverpod background jobs
⚡ Real-Time Updates
- Live processing status via WebSocket
- Instant notifications when processing completes
How we built it
- Frontend: Flutter 3.x with Riverpod for state management
- Backend: Serverpod 3 with Dart for high-performance API
- Database: PostgreSQL 16 with pgvector for semantic search
- AI: OpenAI embeddings (text-embedding-3-small) and GPT-4o-mini for intelligent suggestions
- Storage: Local/S3-compatible (MinIO) for document storage
- Real-time: WebSocket streaming for live status updates
Challenges we faced
- Vector search optimization for semantic recall at scale
- Coordinating multimodal inputs (text, images, PDFs) with consistent embeddings
- Designing proactive actions that felt natural without being intrusive
- Real-time WebSocket updates for smooth UX during processing
Accomplishments we're proud of
- Built a complete full-stack AI application using Serverpod's Dart ecosystem
- Implemented semantic search with pgvector for powerful, contextual recall
- Created intuitive UI for dumping and retrieving memories
- Leveraged Serverpod's Future Calls for reliable background processing and scheduled reminders
- Delivered real-time status updates that make the app feel responsive and alive
What we learned
- The power of vector embeddings for semantic understanding
- How Serverpod's architecture enables scalable, real-time applications
- The importance of handling diverse input types consistently
- Building AI-assisted UX that augments rather than overwhelms users
Built With
- dart
- flutter
- openai
- postgresql
- serverpod


Log in or sign up for Devpost to join the conversation.