DEV Community

Cover image for I Built a Free Voice-Enabled AI Agent That Uses Notion as Its Brain — Notion MCP Challenge
Twisted-Code'r
Twisted-Code'r

Posted on • Edited on

I Built a Free Voice-Enabled AI Agent That Uses Notion as Its Brain — Notion MCP Challenge

Notion MCP Challenge Submission 🧠

What I Built

NotionMind is a free, voice-enabled AI agent that uses your Notion workspace as its long-term memory. You can save notes by speaking, ask questions about your past work, search by meaning not keywords, trace connections across a knowledge graph, and view a stunning terminal analytics dashboard — all at zero cost.

The tagline: Your Notion workspace, but it thinks back.


The Problem I Was Solving

I had hundreds of Notion notes but couldn't actually use them. Searching by keyword misses context. I'd forget I already researched something. I couldn't see patterns in what I was learning. Notes just sat there — static, passive, dumb.

I wanted a brain that:

  • Remembers everything I tell it
  • Answers questions from my own notes
  • Finds connections I missed
  • Works offline, costs nothing

The Free Stack (Genuinely $0/Month)

This was a hard constraint I set myself — no paid APIs, no credits, nothing that expires.

Component Tool
AI Brain Groq — Llama 3.3 70B + Llama 3.1 8B (free tier)
Workspace Notion API (free)
Semantic Search fastembed BAAI/bge-small-en-v1.5 (runs locally)
Web Search DuckDuckGo ddgs (no key needed)
Voice Input Google Speech Recognition (free)
Voice Output Microsoft Edge TTS — Jenny Neural (free)
Telegram Bot python-telegram-bot (free)

Total: $0/month. Not "free tier with limits you'll hit." Actually free.


How It Works — The MCP Architecture

NotionMind uses the Notion MCP to give Groq structured access to your workspace. The agent has three tools:

  • mcp_search_notes — keyword search across the database
  • mcp_create_note — create new notes with AI-generated title + tags
  • mcp_list_all_notes — retrieve recent notes sorted by date

When you ask a question, the MCP agent calls these tools in a loop until it has enough context to answer.


Feature Walkthrough

1. Smart Save

Type or speak anything. Groq auto-generates the title, tags, and date:

>: i fixed the JWT expiry bug in the auth module today
→ routed to: save
✓ Saved!
Title: Fixed JWT Expiry Bug
Tags:  auth, bug-fix, JWT
Date:  2026-03-24
Enter fullscreen mode Exit fullscreen mode

2. Natural Language Routing

This was one of my favorite features to build. Instead of making users type exact commands, Groq reads the input and routes it automatically:

>: who is Virat Kohli
→ routed to: ask

>: show me my recent notes
→ routed to: list

>: remind me to study at 6pm
→ routed to: remind
Enter fullscreen mode Exit fullscreen mode

Exact command names bypass Groq entirely — zero latency for power users.


3. Semantic Search

This is where it gets interesting. Regular search matches keywords. Semantic search matches meaning.

>: graph → 7. Search
What are you looking for: cricketer from Kerala
Enter fullscreen mode Exit fullscreen mode

It finds the note about Sanju Samson even though the search phrase "cricketer from Kerala" doesn't appear verbatim anywhere. The fastembed model converts both the query and all note content into vectors, then measures cosine similarity.

The model runs entirely on CPU — no API call, no internet needed after the first download.


4. Think — Multi-hop Reasoning

Ask a complex question. NotionMind finds relevant notes, expands one hop through the knowledge graph, then asks Groq to reason across all of it:

>: graph → 8. Think
Your question: what have I been researching lately?
Enter fullscreen mode Exit fullscreen mode

It extracts keywords from your question, searches each separately, merges results, pulls in graph-connected notes, and gives you a synthesized answer with exact note citations.


5. Recall — Knowledge Evolution

Pick any topic and see how your understanding evolved over time:

>: graph → 9. Recall
Topic to recall: notionmind
Enter fullscreen mode Exit fullscreen mode

Groq narrates the arc: initial curiosity → experiments → insights → where it seems headed. It references your actual notes and dates.


6. The Dashboard

This is the most visually striking part of the project.

>: dashboard
Enter fullscreen mode Exit fullscreen mode

You get:

  • GitHub-style 30-day activity heatmap using ASCII heat characters (· ▪ ▫ ▬ █)
  • 14-day knowledge growth bar chart
  • Topic velocity — tags this week vs last week with ↑ ↓ → trend arrows
  • Quick stats panel — streak, total notes, top tag, avg per day
  • Upcoming reminders panel
  • Pending todos with priority icons




Enter fullscreen mode Exit fullscreen mode

7. AI Insights

>: insights
Enter fullscreen mode Exit fullscreen mode

Four beautifully styled panels:

  • 🔥 Peak Productivity — when you're most active, specific dates cited
  • 🕳 Knowledge Gaps — what you're underexploring given your current work
  • 📉 Fading Topics — what you explored but drifted from
  • This Week's Action — one sharp, specific recommendation

8. Knowledge Graph

>: graph → 1. Build
Enter fullscreen mode Exit fullscreen mode

Groq analyses all your notes in pairs and finds genuine content connections — not just temporal ones. The graph is stored locally and built incrementally, so it only checks new pairs on each rebuild.

From there you can:

  • View an ASCII tree of connections
  • Find the shortest path between two notes
  • See all neighbours of a note
  • Manually relate two notes

9. Suggest — Auto Related Notes

Every time you save a note, NotionMind automatically suggests related ones:

✓ Saved! Title: Watched India vs Australia

Related notes in your brain:
  → research about Virat Kohli (2026-03-22)
  → research about god of cricket (2026-03-23)
Enter fullscreen mode Exit fullscreen mode

The suggestion engine extracts the single main keyword from your note (ignoring noise like "today", "watched", "done"), then matches it against existing note summaries. Fast and surprisingly accurate.


10. Full Telegram Bot

Every feature is available on your phone:

/save   /ask    /today   /list    /search
/semantic       /read    /delete  /stats
/todos  /addtodo        /donetodo
/remind /reminders
/think  /recall  /dashboard      /insights
/weekly /inbox   /results
/menu   /export
Enter fullscreen mode Exit fullscreen mode

11. Todo List

>: todo
Enter fullscreen mode Exit fullscreen mode

Todos stored directly in your Notion database, tagged todo. Add with priority (🔴 high / 🟡 medium / 🟢 low), due date, and notes. Overdue items highlighted in red. Completed items archived cleanly.


12. Voice Mode

>: voice
Enter fullscreen mode Exit fullscreen mode

Speak your note. Google STT transcribes it, you confirm, NotionMind saves it. Responses are read back using Edge TTS (Jenny neural voice online, espeak offline). Six languages supported: English, Hindi, Spanish, French, Tamil, Malayalam.


The Hardest Parts to Build

Semantic search that doesn't hallucinate

My first attempt used Groq to rank notes by relevance. It hallucinated constantly — returning completely unrelated notes with score 1.0. The fix was switching to fastembed for actual vector similarity, which never hallucinates because it's pure math. The tricky part was getting "cricketer from Kerala" to correctly find the Sanju Samson note — the solution was fetching full page block content instead of just the summary field.

The suggest feature

The naive approach (semantic search the full note text) was too slow and too noisy. "I watched cricket match today" would match notes about "daily summaries" because the word "today" was everywhere. The fix was asking Groq to extract a single main keyword first — so "cricket match" becomes just cricket, which then matches only cricket notes.

Command routing strictness

Early versions of the Groq router would confidently route "who is Sachin Tendulkar" to list instead of ask. The fix was a strict JSON schema, an explicit confidence threshold, and specific rules for question words (who/what/when/where/why/how → always ask).


What I'd Add Next

  • Browser extension to save highlighted web content directly to NotionMind
  • Daily digest email — Groq summarises yesterday's notes and emails it to you
  • Obsidian sync — two-way sync with Obsidian vault

Links


Try It Yourself

git clone https://github.com/Jeffrin-dev/NotionMind.git
cd NotionMind
python3 -m venv venv
source venv/bin/activate
pip install notion-client==2.2.1 groq python-dotenv rich \
            httpx ddgs SpeechRecognition edge-tts pygame \
            schedule python-telegram-bot fastembed numpy
cp .env.example .env
# fill in your Notion + Groq API keys
python3 notionmind.py
Enter fullscreen mode Exit fullscreen mode

You need a free Notion account and a free Groq account. That's it. No credit card anywhere.


Built for the Notion MCP Challenge · March 2026 · by Jeffrin

Top comments (0)