Turn meeting recordings into clean summaries and actionable to-do lists β entirely on your own machine π
KhulasaAI is a privacy-first Telegram bot that turns meeting recordings into clean summaries and actionable to-do lists β entirely on your own machine. No paid APIs, no cloud transcription, no data ever leaves your computer.
Send a voice note or audio file to the bot, and get back:
- A concise, adaptive-length summary of the meeting
- A clean list of Action Items, with owners identified when mentioned
- A saved record of every meeting in a local SQLite database
| π | 100% local processing β speech-to-text and summarization both run on your machine |
| π€ | Accurate Arabic transcription via faster-whisper |
| π§ | Local LLM summarization via Ollama β works with any chat model you have pulled locally |
| π | Adaptive summary length β short meetings get tight summaries; long meetings get organized bullet lists |
| π§© | Map-reduce chunking for long meetings β avoids context-window truncation issues |
| ποΈ | Local archive β every transcript, summary, and action item list is saved to SQLite |
| π€ | Simple Telegram UX β just send a voice note or audio file, no commands needed |
- Python 3.10+
- FFmpeg installed and available on your system
PATH - Ollama installed and running locally
- A Telegram bot token from @BotFather
1. Clone the repo
git clone [https://github.com/RamiDevX/KhulasaAI.git](https://github.com/RamiDevX/KhulasaAI.git)
cd KhulasaAI
2. Create and activate a virtual environment
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
3. Install dependencies
pip install -r requirements.txt
4. Configure environment variables Create a .env file in the project root:
BOT_TOKEN=your_telegram_bot_token_here
WHISPER_MODEL_SIZE=small
OLLAMA_MODEL=llama3.2
OLLAMA_URL=http://localhost:11434/api/chat
5. Run the bot
python bot.py
KhulasaAI/
βββ bot.py # Telegram bot entry point & message handlers
βββ transcription.py # Local speech-to-text via faster-whisper
βββ summarizer.py # Local LLM summarization via Ollama
βββ database.py # SQLite persistence layer
βββ config.py # Environment-based configuration
βββ requirements.txt
βββ .env.example
βββ README.md
Note
The first run downloads the faster-whisper model weights, so the first request takes longer than usual.
[!NOTE] For better Arabic output quality, consider using an Arabic-tuned model like command-r7b-arabic.
[!WARNING] Never commit your .env file or bot token to version control.