DEV Community

Cover image for MOMENTUM - AIccountability, Vision Board Tracker using Notion MCP
Schezeen Fazulbhoy
Schezeen Fazulbhoy

Posted on

MOMENTUM - AIccountability, Vision Board Tracker using Notion MCP

Notion MCP Challenge Submission 🧠

This is a submission for the Notion MCP Challenge

What I Built

MOMENTUM is an AI-powered personal accountability agent. It uses Claude to interpret your goals, then creates your entire Notion workspace from scratch using Notion MCP β€” databases, dashboard, streak tracking, analytics pages β€” and runs an automated daily coaching loop through Telegram.

You tell it your goals in plain language β€” "10k steps daily, gym 5x/week, drink a gallon of water, take my meds" β€” and it does everything else.

No templates. No configuration. No manual logging.

These aren't hypothetical goals β€” I built MOMENTUM to track my own fitness and health. Real Garmin step data, real gym sessions, real streaks.

Video Demo

Momentum - Notion MCP Challenge: https://youtu.be/YnaauSkPRok

Show us the code

GitHub Repo: https://github.com/schezfaz/momentum

The loop: User Experience

  1. Write goals in Notion (or just chat in Telegram)
  2. Momentum interprets them with Claude
  3. Creates databases, dashboard, and schedules
  4. Pulls fitness data automatically from Garmin/Strava
  5. Sends personalized coaching via Telegram
  6. Logs everything back to Notion
  7. Generates weekly analytics β†’ Repeat β€” ALL USING THE NOTION MCP

Key Features

  • Zero-config onboarding: Two paths β€” fill a Notion table or just chat with Momentum on Telegram. Both produce the same fully-built infrastructure.
  • AI goal classification: Claude analyzes each goal to determine what to track, where data comes from, how often to nudge, and when to sync β€” no hardcoded rules.
  • Auto-generated Notion dashboard: Color-coded goal cards, daily score out of 100, streak heatmaps, weekly completion bars, motivational quotes β€” all created dynamically based on YOUR goals.
  • Automated fitness sync: Steps from Garmin, runs from Strava β€” pulled automatically at intelligent times (morning + evening for steps, evening for workouts).
  • Claude-powered coaching: Morning motivation, midday check-ins, evening scorecards β€” all personalized with your real data, streaks, and local weather. Kind and encouraging, never guilt-tripping.
  • Natural language logging: Text "drank 2 bottles of water" or "just took my meds" β€” Momentum understands and logs it. Or tap inline YES/NO buttons for quick confirmation.
  • Streak tracking with milestones: Current and longest streaks per goal with heatmap calendars. Momentum celebrates 7-day, 30-day, 100-day milestones and warns when streaks are at risk.
  • Weekly analytics: Every Sunday, Momentum generates a new Notion page with completion rates, trends, streak summaries, and AI-generated insights.
  • Notion-driven scheduling: Briefing times are read from the User Profile page in Notion β€” change "Morning Briefing" to "8:45 PM" and the scheduler adapts. Notion as config, not just storage.
  • Weather-aware coaching: Raining? Momentum adjusts β€” skip the outdoor walk, hit steps indoors.
  • Demo mode: Run /demo in Telegram and Momentum creates a fully populated demo workspace β€” 30 days of realistic data across all goals, complete with dashboard, streaks, charts, and analytics. Judges can see the full experience in 60 seconds.
  • Graceful degradation: If Garmin is down, the briefing still sends β€” it just notes the missing data.

Tech Stack

  • Python 3.14 with full async/await
  • Notion MCP (@notionhq/notion-mcp-server) as the sole backend β€” no external database
  • Claude API (Anthropic) for all intelligence
  • python-telegram-bot v21+ for the user interface
  • APScheduler for goal-driven job scheduling
  • Garmin Connect, Strava, OpenWeatherMap integrations

How I Used Notion MCP

Notion MCP isn't just a storage layer in MOMENTUM β€” it's the backbone of the entire system. The agent communicates with Notion exclusively through the MCP stdio protocol (@notionhq/notion-mcp-server@1.9.1), never through REST.

Here's what makes this a deep MCP integration:

1. The Agent Creates the Workspace (Not the User)

Most Notion integrations read from pre-existing databases. MOMENTUM creates the entire workspace from scratch based on the user's goals:

  • 5 databases (Goals/Tums, Daily Log, Streaks, Weekly Summary, Briefing Log) β€” all created via MCP create_database calls with dynamic schemas
  • A live dashboard page with inline database views, color-coded callout blocks, streak leaderboards, and progress indicators β€” built block-by-block through MCP
  • Weekly analytics pages with toggle lists, dividers, embedded views, and AI-generated content

Different goals produce different infrastructure. Track 3 goals? You get 3 rows, 3 streak records, and a 3-column dashboard. Track 7? Everything scales.

2. Bidirectional Data Flow Through MCP

Every data movement in MOMENTUM flows through Notion MCP:

READ:  Goals from onboarding page β†’ classify with Claude
WRITE: Create databases, dashboard, streak records
READ:  Current daily values β†’ generate briefings
WRITE: Synced fitness data β†’ Daily Log
READ:  Streaks + history β†’ evening evaluation
WRITE: Updated scores, streaks β†’ all databases
READ:  Week of data β†’ weekly analytics
WRITE: New analytics page with AI insights
READ:  User Profile β†’ briefing schedule times
Enter fullscreen mode Exit fullscreen mode

This isn't "read once, write once" β€” it's a continuous read-write loop running multiple times per day across 5 databases.

3. Notion as the Single Source of Truth

There is no external database. No SQLite, no Redis, no JSON files. Every piece of state lives in Notion:

  • Goal configuration and targets
  • Daily logged values (manual + auto-synced)
  • Streak records (current + longest)
  • Briefing history and schedule preferences
  • Weekly analytics
  • The dashboard itself

The Notion workspace IS the application state. If you look at a user's Notion after a week with MOMENTUM, you see their complete accountability history β€” beautifully organized, fully searchable, and entirely created by the agent.

4. MCP Tool Usage Across the Lifecycle

Phase MCP Operations
Onboarding search (find workspace), create_database x5, create_page (goals, streaks, dashboard), append_block_children (dashboard layout)
Daily sync query_database (get today's log), create_page or update_page (upsert values)
Briefings query_database x3 (goals, daily log, streaks) β†’ Claude generates message β†’ create_page (briefing log)
Evaluation query_database x2 β†’ score calculation β†’ update_page (streaks), create_page (daily summary)
Analytics query_database x4 (full week) β†’ Claude analyzes β†’ create_page with rich block content
Config get_block_children (read User Profile) β†’ parse briefing schedule β†’ register jobs

On a typical day with 5 goals, MOMENTUM makes 40+ MCP tool calls β€” reads, writes, queries, and page creation β€” all orchestrated by the agent without any user intervention.

Architecture (~4,800 lines of Python)

main.py              Entry point β€” wires Telegram bot + Notion MCP + scheduler

agent/               Intelligence layer (all Claude API calls)
  onboarding.py      Goal classification, DB creation, dashboard building
  briefing.py        Morning/midday/evening message generation
  evaluator.py       Daily scoring, streak tracking, milestone detection
  analytics.py       Weekly analytics page generation
  prompts.py         System prompts for Claude

bot/
  telegram_bot.py    Commands + inline keyboards + NL message parsing

integrations/
  notion_client.py   All Notion ops via MCP stdio subprocess
  garmin_sync.py     Garmin Connect integration
  strava_sync.py     Strava OAuth + activity sync
  weather.py         OpenWeatherMap integration

scheduler/
  jobs.py            APScheduler β€” 7 job types registered from goal config

scripts/
  demo.py            30-day mock data generator for demo mode
Enter fullscreen mode Exit fullscreen mode

Built for the Notion MCP Challenge. MOMENTUM proves that Notion + MCP + AI can replace purpose-built accountability apps β€” no extra infrastructure needed.

Top comments (0)