Echoletter is a "set it and forget it" newsletter service. Tell it what you're interested in, and our AI agent does the rest: finds the latest articles, writes a concise custom summary, and delivers it to you on a daily or weekly cadence.
Where Echoletter stands out: every newsletter is also an audio broadcast. We use Murf's API to transform text summaries into natural, expressive audio so you can catch up on your personalized news during your commute, workout, or coffee break.
Huge thanks to the Murf AI team for the amazing tools used to build this!
Tags: #MurfAIHackathon #TextToSpeech #FutureOfNews #AI #JavaScript
- Create personalized news digests based on user interests.
- Automated article discovery and summarization via an AI agent.
- Text-to-speech conversion for each newsletter using Murf AI—delivered as an audio broadcast.
- Delivery scheduling (daily / weekly).
- Background processing and job retries using BullMQ.
- Persistent storage of subscribers/preferences using MongoDB.
- Web UI built with React for subscription management and admin controls.
- User signs up and configures interests/preferences.
- A scheduled job (daily / weekly) triggers the agent.
- Agent finds recent articles matching the user's interests.
- Agent summarizes the articles into a single short newsletter.
- The newsletter text is sent to Murf's Text-to-Speech API to produce a natural-sounding audio file.
- The text summary and audio broadcast are delivered to the user (email ).
- Jobs & retries are managed via BullMQ; data is stored in MongoDB.
- Node.js (backend)
- LangChain.js (AI orchestration)
- Murf AI (text-to-speech)
- Gemini (LLM)
- MongoDB (data storage)
- BullMQ and Cron-Job (background jobs and scheduling)
- React (frontend)
- JavaScript, CSS, HTML
These are general steps to get a local dev environment running. Adjust commands as needed for your environment and repository conventions.
Prerequisites:
- Node.js (v16+ recommended)
- npm or yarn
- MongoDB (local or Atlas)
- Redis (required by BullMQ)
- Murf API key and any other AI keys you use
-
Clone the repo
- git clone https://github.com/s-mahali/Echoletter.git
- cd Echoletter
-
Install dependencies
- npm install
- or
- yarn
-
Create a .env file in the project root with the required environment variables (example below).
-
Run the app in development
- npm run dev
- or
- yarn dev
-
Open the frontend (usually at http://localhost:5173) and the backend (e.g., http://localhost:3000) depending on how the repo is organized.
Create a .env (or .env.local for frontend) and fill in the required keys. Example:
- MONGO_URI=your_mongodb_connection_string
- REDIS_URL=redis://localhost:6379
- MURF_API_KEY=your_murf_api_key
- MURF_PROJECT_ID=your_murf_project_id (if used)
- OPENAI_API_KEY=your_openai_api_key (if using OpenAI via LangChain)
- NODE_ENV=development
- PORT=3000
- FRONTEND_URL=http://localhost:5173
Notes:
- Replace keys above with actual provider values used by the project.
- Do NOT commit secrets to source control.
Echoletter uses BullMQ for background processing (article fetching, summarization, TTS generation and delivery).
- Ensure Redis is running and accessible via REDIS_URL.
- Start any worker processes required for processing jobs:
- npm run worker
- or the repository's documented worker start command.
- /server — backend Node.js app (API, workers, queue config)
- /client — React frontend
- /scripts — utility scripts (seeders, migrations)
- /config — environment & integration configs
- /docs — additional docs & architecture diagrams
(Adjust to match actual repository layout.)
- Built for the Murf AI Hackathon.
- Big thanks to Murf AI for their Text-to-Speech API.
- Built with LangChain.js and several open-source tools.