💡 Inspiration
Professional networking is often chaotic. We meet people at conferences, exchange hundreds of emails, and have quick calls, but our brains aren't built to retain all that context perfectly. Existing "Personal CRMs" felt like data entry jobs—manual, tedious, and disconnected from our actual communication channels.
We were inspired by the concept of a "Second Brain" specifically for relationships. We wanted to build something that lives where we live (in our Inbox and conversations) and acts as an intelligent, proactive Chief of Staff—a butler who whispers in your ear:
"You last spoke to John 3 months ago about the acquisition, and you promised to follow up today."
✨ What it does
Recall is an intelligent personal relationship management app that acts as an automated memory layer for your professional life.
Core Features
🔄 Zero-Entry Sync
Connects directly to your Gmail, automatically ingests emails, filters out spam/promotions, and extracts meaningful interactions without you lifting a finger.🎤 Voice-to-Memory
Record quick voice notes after a meeting (e.g., "Just met Sarah, she needs the proposal by Friday"), which are transcribed and analyzed to create contacts and agenda items.📊 Smart Health Scores
Calculates a "Relationship Health" score for every contact based on recency and frequency of interaction. If a key relationship is drifting, Recall nudges you to reconnect.🤖 AI Butler (RAG)
Chat with your history. Ask "What did I promise the client last week?" or "When is my flight?", and Recall retrieves relevant context to give you a factual answer.✍️ Context-Aware Drafting
Doesn't just write generic emails; it drafts replies based on your actual history with that person (e.g., "Great to hear from you after 3 months...").
🛠️ How we built it
We built a unified full-stack Dart application to ensure type safety and speed across the entire stack.
Architecture
graph LR
A[Flutter App] --> B[Serverpod Server]
B --> C[PostgreSQL + pgvector]
B --> D[Google Gemini 2.0 Pro]
B --> E[Groq Llama 3]
B --> F[Gmail API]
Tech Stack
| Component | Technology |
|---|---|
| Backend | Serverpod (Dart) on Docker |
| Frontend | Flutter (Cross-platform) |
| AI Brain | Hybrid: Google Gemini 2.0 Pro + Groq (Llama 3) |
| Vector DB | PostgreSQL with pgvector (768-dim embeddings) |
| Email Processing | Custom MIME multipart parser with privacy filters |
Key Components
- Recall Server: Built with Serverpod, handling the heavy lifting of background jobs and API integrations. It runs widely on Docker.
- Flutter App: A beautiful, cross-platform mobile interface for interacting with your data.
- The Brain (Hybrid AI): We implemented a sophisticated AI layer that switches between Google Gemini 2.0 Pro (for complex reasoning and embeddings) and Groq (Llama 3) (for ultra-fast drafting) depending on the task.
- Vector Database: We used PostgreSQL with pgvector to store 768-dimensional embeddings of every email and voice note, enabling semantic search.
- Data Processing: We wrote custom logic to parse MIME multipart emails, identifying meaningful content while adhering to strict privacy filters (stripping OTPs, newsletters, and system alerts).
🚧 Challenges we ran into
1. The "Context Window" Problem
Emails can be massive. Feeding entire threads into an LLM gets expensive and slow. We had to build smart truncation and summarization logic to extract just the essence of an email (Intent Tags, Events) before embedding it.
2. Sync Logic Complexity
Syncing Gmail efficiently without hitting rate limits was tough. We implemented an incremental sync using historyId and internalDate, but handling "Data Healing" (retrospectively linking orphaned emails to new contacts) required complex fuzzy matching algorithms.
3. Hallucination Control
Early versions of the "Drafting" feature would invent meetings that never happened. We solved this by implementing a "Strict Context" prompt architecture, where the LLM is explicitly forbidden from using outside knowledge.
🏆 Accomplishments that we're proud of
🎩 The "Butler" Persona
We tuned the RAG (Retrieval-Augmented Generation) system to behave like a polite, private butler. It doesn't just dump data; it says:
- "I don't recall seeing that in your recent emails"
- "You have a dinner planned for Tuesday"
🔒 Privacy-First Architecture
We successfully built a system where sensitive "Secrets" (like API keys or specific PII patterns) are explicitly filtered out by the system prompt before they ever reach the user-facing chat.
⚡ Startup Speed
Using Serverpod allowed us to generate our entire client library automatically. We moved from "Idea" to "Working Sync" in record time because we never had to write manual JSON serialization code.
📚 What we learned
🎯 Structured AI is King
Asking an LLM to "summarize" is okay, but asking it to "Return JSON with {'intent': 'follow_up', 'priority': 'high'}" allows you to build powerful software features on top of fuzzy text.
🔍 Embeddings need help
Vector search is great for "concepts," but bad for "keywords" (like specific names). We learned that a hybrid search approach (Keyword + Vector) yields the best results for a CRM.
🚀 What's next for Recall
Roadmap
[ ] Multi-Source Sync
Expanding beyond Gmail to include LinkedIn DMs and WhatsApp exports.[ ] Proactive Agenda
Instead of just answering questions, we want Recall to push a morning briefing to your phone:
"Good morning. You have 3 risky relationships and a pending promise to Nithin from last week."[ ] Offline Intelligence
Porting some of the embedding logic to the device (using on-device LLMs) for even greater privacy.
👥 Contributors
Built with ❤️ by [ClusterStorm]
**Made for people who value relationships**
Built With
- dart
- firebase-cloud-messaging-(fcm)
- flutter
- gmail-api
- google-gemini-ai
- google-sign-in
- groq
- postgresql
- redis
- riverpod
- serverpod