Most CRMs solve the wrong problem. They give you a pristine pipeline view while your actual work, the proposals, the meeting notes, the follow-up threads, lives somewhere else entirely. You end up maintaining two systems in parallel, paying twice, and trusting neither.
I built RevOps AI to collapse that gap. Notion is already where your team does its thinking. This project makes Notion your CRM too, with a Gemini-powered AI agent that operates it autonomously through the Model Context Protocol.
The Problem Worth Solving
Consider what a typical sales manager's week looks like. They check the CRM for pipeline metrics. They read the notes in Notion. They export data to a spreadsheet for the weekly report. They ask a rep to draft a follow-up email because the CRM's template engine is unusable. None of these tools talk to each other, and every transition between them costs time and introduces drift.
The underlying issue is that CRM tools treat your data as their data. Salesforce, HubSpot, and Pipedrive lock your contacts, deals, and activity history behind proprietary walls. Migration is painful and lossy. Custom fields cost money. AI features are locked behind enterprise tiers.
RevOps AI takes the opposite position. Your data stays in Notion, which you own and control. The AI is a layer on top, not a warden.
How MCP Makes This Work
The Model Context Protocol is the architectural piece that makes autonomous AI tooling practical at small scale.
Without MCP, building an AI that can "query the deals database and update a field" requires writing adapters, prompt-engineering tool descriptions, and maintaining that glue code every time Notion's API changes. With MCP, the Notion MCP server exposes all 22 Notion operations as a standardized tool catalog, and the mcpToTool() utility from @google/genai maps that catalog directly to Gemini function declarations at runtime.
// The entire AI-to-Notion bridge, in two lines
const mcp = new MCPClient({ url: process.env.MCP_SERVER_URL });
const tools = await mcp.getTools(); // All 22 Notion operations, auto-mappedGemini receives the full tool list and decides at runtime which operations to chain. Ask "Brief me on the Acme deal before my call tomorrow" and the AI:
- Searches Notion for the deal record
- Queries the Activities database for recent interactions
- Retrieves the linked Contact and Company records
- Synthesizes a pre-call briefing from the raw data
No hardcoded query paths. No if/else dispatch. Just function declarations and Gemini reasoning.
What the Platform Does
Revenue Dashboard shows pipeline metrics in real-time — total pipeline value, win rate by stage, top deals by value, and recent team activity. All figures pull from Notion through MCP on each request.
Visual Deal Pipeline is a drag-and-drop Kanban board built with @dnd-kit. Deals move through six stages: Lead, Qualified, Proposal, Negotiation, Closed Won, Closed Lost. Every drag syncs back to Notion instantly via an MCP update call.
AI Lead Scoring runs a one-click analysis against a contact's profile — role seniority, company size, engagement history — and returns a 0–100 score with written reasoning. The score persists to the Notion contact record so your whole team sees it.
AI Sales Team Manager is the natural language interface. Ask "What's our pipeline health this quarter?" and the AI queries Notion, calculates win rates, and surfaces at-risk deals. Say "Create a follow-up activity for the Dubai Tech deal" and it creates the activity record linked to the right deal, in the right database, with no form-filling.
The Notion Database Schema
Four databases power the entire platform.
| Database | Key Fields |
|---|---|
| Contacts | Name, Email, Company, Role, Lead Score, Source |
| Deals | Name, Contact (relation), Stage, Value, Close Date, Priority |
| Activities | Type, Date, Deal (relation), Summary, Raw Notes |
| Companies | Name, Industry, Size, Website |
The relation fields are what make the AI briefings work. When Gemini retrieves a deal, it follows the relation to the contact, then to the company, pulling context from three databases in a single multi-step reasoning chain.
Why Not Just Use an Existing CRM's AI?
Every major CRM now ships an AI feature. The problem is that they are trained on your data to serve their product roadmap, not yours.
Gemini through MCP gives you a general-purpose reasoning engine with full access to your data and no hidden guardrails. You can ask it to calculate custom metrics, draft emails in your specific tone, or analyze patterns that no CRM vendor would think to build a button for.
More practically: the Gemini free tier handles this workload without a bill. No enterprise tier required.
Getting Started
The full source is on GitHub. Setup takes about 15 minutes.
git clone https://github.com/pooyagolchian/ai-sales-crm.git
cd ai-sales-crm
pnpm install
cp .env.example .env.local
# Add GEMINI_API_KEY and NOTION_TOKEN to .env.local
pnpm dev:allYou need four Notion databases (Contacts, Deals, Activities, Companies) with the schema from the README. The setup guide walks through each field and the Notion integration permissions required.
Explore the project:
- Live Demo (YouTube) — full walkthrough of all features
- GitHub Repository — source code and setup guide
- Project Page — feature breakdown and screenshots
Built for the Notion MCP Challenge on Dev.to.
