🗣️ 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-url with 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

Share this project:

Updates