🗣️ SayLess
An AI meeting assistant that joins your calls, listens, speaks, and summarizes, so you can say less and focus more.
💡 Inspiration
We’ve all been in meetings that drag on where it’s hard to keep up, take notes, and stay focused. SayLess was built to solve that problem. It’s an AI-powered meeting companion that joins your meetings, transcribes conversations in real time, speaks naturally using cloned voices, and generates instant summaries and key takeaways after every call.
⚙️ What it does
SayLess is more than just a meeting transcriber—it’s a real-time AI participant:
- ✅ Joins meetings automatically using Recall API
- ✅ Transcribes speech live with Deepgram
- ✅ Responds naturally through ElevenLabs voice cloning (Not implemented yet)
- ✅ Summarizes discussions using Google Gemini (Not implemented yet)
- ✅ Stores and organizes transcripts securely in MongoDB (Not implemented yet)
- ✅ Authenticates users with Clerk
Whether it’s a business call, a team stand-up, or a brainstorming session, SayLess ensures you never miss a detail.
🧠 How we built it
Frontend
- React.js with TypeScript
- Tailwind CSS for modern, responsive styling
- Clerk for authentication
- WebRTC + WebSockets for real-time audio flow
Backend
- Node.js + Express.js
- WebSockets for real-time meeting broadcast and audio streaming
- Integration with Recall, Deepgram, and ElevenLabs
- OpenRouter / Google Gemini for summaries
Database
- MongoDB to store users, transcripts, and summaries
External APIs & Tools
- Recall API—automatic meeting joining and recording
- Deepgram—real-time speech-to-text transcription
- ElevenLabs—text-to-speech + voice cloning
- Google Gemini (via OpenRouter)—summarization & insights
- Cloudflare—CDN and edge optimization
- Clerk—authentication & user management
🚧 Challenges we ran into
- Managing real-time transcription and low-latency audio streaming
- Synchronizing multiple AI APIs in real time (Deepgram → Gemini → ElevenLabs)
- Ensuring secure auth/data flow across services while streaming audio
🏆 What we shipped
- Working prototype: AI meeting bot that can join, listen, speak, transcribe, and summarize meetings
- End-to-end integration between speech-to-text, LLM summarization, and lifelike TTS
- Persistent transcript storage and a simple UI for viewing past meetings
📚 Tech stack
Frontend: TypeScript, React, Tailwind CSS
Backend: Node.js, Express.js, WebSockets
Database: MongoDB
APIs: Recall, Deepgram, ElevenLabs, Google Gemini (OpenRouter)
Auth/Deployment/CDN: Clerk, Cloudflare
🛠 Installation & Run (local dev)
Replace
your-repo-urlwith your actual repository URL
# Clone the repo
git clone https://github.com/your-username/your-repo.git
cd your-repo
# Backend
cd backend
cp .env.example .env
# Fill .env with your keys:
# MONGO_URI=...
# CLERK_PUBLISHABLE_KEY= ...
# DEEPGRAM_API_KEY=...
# ELEVENLABS_API_KEY=...
# OPENROUTER_API_KEY=...
# RECALL_API_KEY=...
npm install
npm run dev
# Frontend (new terminal)
cd ../frontend
cp .env.example .env
# Fill frontend .env variables if necessary
npm install
npm run dev


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