What I Built
NotionMind — a free, voice-enabled AI agent that treats your Notion workspace as its long-term memory.
You speak or type a note. It auto-titles it, tags it, and saves it to Notion. You ask a question. It searches your Notion and answers out loud. You add a research task. It searches the web, writes the results back to Notion, and marks the task done — all while you sleep.
Zero cost. No subscriptions. No data leaving your machine except to Notion and Groq's free tier.
Demo
$ python3 notionmind.py
╭─────────────────────────────────────────────────╮
│ NotionMind — Your Notion-powered AI memory │
│ You have 15 note(s) in your brain. │
│ 🔊 Voice: online — Jenny neural voice (Edge TTS)│
╰─────────────────────────────────────────────────╯
> voice
Voice for [save/ask/inbox]: ask
🎤 Listening... speak now!
You said: what did I work on this week?
Searching your Notion notes...
╭──────────────── NotionMind Answer ─────────────────╮
│ This week you built NotionMind — an MCP-powered │
│ AI agent with voice input/output, task execution, │
│ web search, and Notion as persistent memory. │
╰────────────────────────────────────────────────────╯
🔊 Speaking answer...
How It Uses Notion MCP
NotionMind uses Notion as both input and output — the true MCP pattern:
You write tasks in Notion inbox
→ Agent reads them via Notion MCP tools
→ Searches the web for each task
→ Writes research results back to Notion
→ Changes tag: inbox → done ✅
→ Creates a daily summary page in Notion
The MCP tool definitions power the agent's ability to interact with Notion naturally:
MCP_TOOLS = [
{
"type": "function",
"function": {
"name": "mcp_search_notes",
"description": "Search notes in Notion by keyword",
...
}
},
{
"type": "function",
"function": {
"name": "mcp_create_note",
"description": "Create a new note in Notion",
...
}
},
{
"type": "function",
"function": {
"name": "mcp_list_all_notes",
"description": "List all notes from Notion",
...
}
}
]
The agent uses a tool-calling loop — it decides which tools to use, calls them, processes results, and keeps going until it has a complete answer.
The Killer Daily Workflow
# Morning — check what's pending
python3 agent.py
> what's pending in my inbox?
> what did I work on yesterday?
# During the day — save notes instantly
python3 notionmind.py save "Fixed the auth bug — JWT expiry miscalculated"
# Add a research task
python3 notionmind.py inbox "Research best Python libraries for AI in 2026"
# Evening — let the agent work while you rest
python3 executor.py
# → searches web for each inbox task
# → writes full results to Notion
# → marks tasks Done automatically
# → creates daily summary page
Features
| Feature | How |
|---|---|
| 💾 Smart Save | AI auto-generates title, tags, date |
| 🧠 Ask | AI searches Notion, answers in text + voice |
| 📋 List | All notes in a rich table |
| 🔍 Search | Keyword filter across all notes |
| 📊 Stats | Streak, note count, top tags |
| 📥 Inbox | Add research tasks from CLI |
| ⚡ Executor | Auto-researches, writes back, marks done |
| 🎤 Voice Input | Speak instead of type |
| 🔊 Voice Output | Jenny Neural (Edge TTS) online, espeak offline |
| 🗑️ Delete | Remove notes with confirmation |
Free Stack
| Component | Tool | Cost |
|---|---|---|
| AI Brain | Groq — Llama 3.3 70B | Free |
| Workspace | Notion API | Free |
| Web Search | DuckDuckGo (ddgs) | Free |
| Voice Input | Google Speech Recognition | Free |
| Voice Output | Microsoft Edge TTS | Free |
| Offline Voice | espeak + MBROLA | Free |
Total: $0/month
What I Learned
This was my first Notion project. A few things surprised me:
Notion as memory is genuinely powerful. The difference between a chatbot that forgets everything and an agent that remembers your last 3 months of work is enormous. Every note you save becomes context the agent can reason about.
MCP changes the interaction model. Instead of telling the AI what to do step by step, you describe what you want and it figures out which Notion tools to call. That shift from imperative to declarative is the real value of MCP.
Voice changes everything. Adding voice input and output made it feel less like a developer tool and more like a personal assistant. Speaking "what did I work on today?" and hearing the answer back is a different experience from typing it.
Free doesn't mean limited. Groq's Llama 3.3 70B on the free tier is genuinely capable. Edge TTS sounds like ChatGPT. DuckDuckGo searches without an API key. The whole stack costs nothing and performs surprisingly well.
Project Structure
notionmind/
├── notionmind.py # Main CLI
├── agent.py # MCP-powered natural language agent
├── executor.py # Autonomous task executor
├── mcp_client.py # Notion MCP tool definitions
├── search.py # Free web search
├── voice.py # Voice input + output
├── .env.example # API key template
└── README.md
GitHub
github.com/Jeffrin-dev/NotionMind
Setup takes about 20 minutes. Full instructions in the README.
What's Next
- ⏰ Scheduled executor — runs automatically via cron
- 🌍 Multi-language voice support
- 📅
todaycommand — only today's notes - 📱 Telegram bot — control from your phone
Built for the Notion MCP Challenge · March 2026
First Notion project. Won't be the last.
Top comments (0)