Seamlessly bridge WhatsApp → LLM → Notion to automate tracking of internship and placement alerts. Built using
Node.js,whatsapp-web.js,Ollama (Mistral), andNotion SDK.
This project was built to automate the organization and tracking of internship and placement opportunities shared by my college’s Training & Placement cell on WhatsApp. Managing these messages manually was inefficient and error-prone, so this backend streamlines the process by parsing messages with LLMs and syncing structured data to Notion.
- ✅ Real-time WhatsApp message ingestion via
whatsapp-web.js - 🧠 Local LLM parsing using Ollama with models like
mistral - 🗂️ Structured data sync to Notion using
Notion SDK - 🔁 Message queueing and retry logic for stability
- 🔐 Environment-based configuration
- 🧪 Easily testable with POST endpoint (
/parse) - 🔍 Flexible message listening with detailed message logging
- Check
logs/whatsapp_message_log.jsonafter receiving messages to find the WhatsApp IDs of your desired contacts or groups. - Edit
services/whatsappService.jsand add those IDs to thetargetContactarray:const targetContact = [ '[email protected]', // Example contact '[email protected]', // Example group // Add more as needed ];
- Backend: Node.js, Express.js
- WhatsApp Integration:
whatsapp-web.js - LLM Parsing: Local LLM (e.g., Mistral) via
Ollama - Database Sync:
Notion SDK - Others:
dotenv,axios,cors,nodemon
- Node.js
- Ollama installed and running locally
- Notion integration + database (follow Notion SDK setup)
- WhatsApp account [ The qr will be displayed in the terminal when you run the project ]
git clone https://github.com/avinash7r/WhatsApp-Notion-sync.git
cd interntrack-backendnpm installCreate a .env file based on .env.example:
Then fill in:
NOTION_API_KEY– Get your integration keyNOTION_DB_ID– Your Notion database IDOLLAMA_URL– http://localhost:11434/api/chat- Any other relevant vars
Ensure Ollama is installed and running:
ollama pull mistral
ollama run mistralnpm run devThis project is licensed under the MIT License.