<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Schezeen Fazulbhoy</title>
    <description>The latest articles on DEV Community by Schezeen Fazulbhoy (@schezfaz).</description>
    <link>https://dev.to/schezfaz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F510717%2Ff4bf205e-941a-400e-ac94-0a1637c7d60e.jpeg</url>
      <title>DEV Community: Schezeen Fazulbhoy</title>
      <link>https://dev.to/schezfaz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/schezfaz"/>
    <language>en</language>
    <item>
      <title>MOMENTUM - AIccountability, Vision Board Tracker using Notion MCP</title>
      <dc:creator>Schezeen Fazulbhoy</dc:creator>
      <pubDate>Mon, 30 Mar 2026 05:45:08 +0000</pubDate>
      <link>https://dev.to/schezfaz/momentum-aiccountability-using-notion-mcp-for-vision-board-progress-2b9i</link>
      <guid>https://dev.to/schezfaz/momentum-aiccountability-using-notion-mcp-for-vision-board-progress-2b9i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/notion-2026-03-04"&gt;Notion MCP Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MOMENTUM&lt;/strong&gt; is an AI-powered personal accountability agent. It uses Claude to interpret your goals, then &lt;strong&gt;creates your entire Notion workspace from scratch using Notion MCP&lt;/strong&gt; — databases, dashboard, streak tracking, analytics pages — and runs an automated daily coaching loop through Telegram.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;No templates. No configuration. No manual logging.&lt;/p&gt;

&lt;p&gt;These aren't hypothetical goals — I built MOMENTUM to track my own fitness and health. Real Garmin step data, real gym sessions, real streaks. &lt;/p&gt;

&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://youtu.be/YnaauSkPRok" rel="noopener noreferrer"&gt;Momentum - Notion MCP Challenge&lt;/a&gt;: &lt;a href="https://youtu.be/YnaauSkPRok" rel="noopener noreferrer"&gt;https://youtu.be/YnaauSkPRok&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us the code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/schezfaz/momentum" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;: &lt;a href="https://github.com/schezfaz/momentum" rel="noopener noreferrer"&gt;https://github.com/schezfaz/momentum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The loop: User Experience&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Write goals in Notion (or just chat in Telegram) &lt;/li&gt;
&lt;li&gt;Momentum interprets them with Claude &lt;/li&gt;
&lt;li&gt;Creates databases, dashboard, and schedules&lt;/li&gt;
&lt;li&gt;Pulls fitness data automatically from Garmin/Strava&lt;/li&gt;
&lt;li&gt;Sends personalized coaching via Telegram&lt;/li&gt;
&lt;li&gt;Logs everything back to Notion&lt;/li&gt;
&lt;li&gt;Generates weekly analytics → Repeat — ALL USING THE NOTION MCP&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero-config onboarding&lt;/strong&gt;: Two paths — fill a Notion table or just chat with Momentum on Telegram. Both produce the same fully-built infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI goal classification&lt;/strong&gt;: Claude analyzes each goal to determine what to track, where data comes from, how often to nudge, and when to sync — no hardcoded rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-generated Notion dashboard&lt;/strong&gt;: Color-coded goal cards, daily score out of 100, streak heatmaps, weekly completion bars, motivational quotes — all created dynamically based on YOUR goals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated fitness sync&lt;/strong&gt;: Steps from Garmin, runs from Strava — pulled automatically at intelligent times (morning + evening for steps, evening for workouts).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude-powered coaching&lt;/strong&gt;: Morning motivation, midday check-ins, evening scorecards — all personalized with your real data, streaks, and local weather. Kind and encouraging, never guilt-tripping.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural language logging&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streak tracking with milestones&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly analytics&lt;/strong&gt;: Every Sunday, Momentum generates a new Notion page with completion rates, trends, streak summaries, and AI-generated insights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notion-driven scheduling&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weather-aware coaching&lt;/strong&gt;: Raining? Momentum adjusts — skip the outdoor walk, hit steps indoors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo mode&lt;/strong&gt;: Run &lt;code&gt;/demo&lt;/code&gt; 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graceful degradation&lt;/strong&gt;: If Garmin is down, the briefing still sends — it just notes the missing data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python 3.14&lt;/strong&gt; with full async/await&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notion MCP&lt;/strong&gt; (&lt;code&gt;@notionhq/notion-mcp-server&lt;/code&gt;) as the sole backend — no external database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude API&lt;/strong&gt; (Anthropic) for all intelligence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;python-telegram-bot&lt;/strong&gt; v21+ for the user interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;APScheduler&lt;/strong&gt; for goal-driven job scheduling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Garmin Connect, Strava, OpenWeatherMap&lt;/strong&gt; integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Used Notion MCP
&lt;/h2&gt;

&lt;p&gt;Notion MCP isn't just a storage layer in MOMENTUM — it's the &lt;strong&gt;backbone of the entire system&lt;/strong&gt;. The agent communicates with Notion exclusively through the MCP stdio protocol (&lt;code&gt;@notionhq/notion-mcp-server@1.9.1&lt;/code&gt;), never through REST.&lt;/p&gt;

&lt;p&gt;Here's what makes this a deep MCP integration:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Agent Creates the Workspace (Not the User)
&lt;/h3&gt;

&lt;p&gt;Most Notion integrations read from pre-existing databases. MOMENTUM &lt;strong&gt;creates the entire workspace from scratch&lt;/strong&gt; based on the user's goals:&lt;/p&gt;

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

&lt;p&gt;Different goals produce different infrastructure. Track 3 goals? You get 3 rows, 3 streak records, and a 3-column dashboard. Track 7? Everything scales.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Bidirectional Data Flow Through MCP
&lt;/h3&gt;

&lt;p&gt;Every data movement in MOMENTUM flows through Notion MCP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This isn't "read once, write once" — it's a continuous read-write loop running multiple times per day across 5 databases.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Notion as the Single Source of Truth
&lt;/h3&gt;

&lt;p&gt;There is &lt;strong&gt;no external database&lt;/strong&gt;. No SQLite, no Redis, no JSON files. Every piece of state lives in Notion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Goal configuration and targets&lt;/li&gt;
&lt;li&gt;Daily logged values (manual + auto-synced)&lt;/li&gt;
&lt;li&gt;Streak records (current + longest)&lt;/li&gt;
&lt;li&gt;Briefing history and schedule preferences&lt;/li&gt;
&lt;li&gt;Weekly analytics&lt;/li&gt;
&lt;li&gt;The dashboard itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. MCP Tool Usage Across the Lifecycle
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;MCP Operations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Onboarding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;search&lt;/code&gt; (find workspace), &lt;code&gt;create_database&lt;/code&gt; x5, &lt;code&gt;create_page&lt;/code&gt; (goals, streaks, dashboard), &lt;code&gt;append_block_children&lt;/code&gt; (dashboard layout)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Daily sync&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;query_database&lt;/code&gt; (get today's log), &lt;code&gt;create_page&lt;/code&gt; or &lt;code&gt;update_page&lt;/code&gt; (upsert values)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Briefings&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;query_database&lt;/code&gt; x3 (goals, daily log, streaks) → Claude generates message → &lt;code&gt;create_page&lt;/code&gt; (briefing log)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Evaluation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;query_database&lt;/code&gt; x2 → score calculation → &lt;code&gt;update_page&lt;/code&gt; (streaks), &lt;code&gt;create_page&lt;/code&gt; (daily summary)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Analytics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;query_database&lt;/code&gt; x4 (full week) → Claude analyzes → &lt;code&gt;create_page&lt;/code&gt; with rich block content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Config&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;get_block_children&lt;/code&gt; (read User Profile) → parse briefing schedule → register jobs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On a typical day with 5 goals, MOMENTUM makes &lt;strong&gt;40+ MCP tool calls&lt;/strong&gt; — reads, writes, queries, and page creation — all orchestrated by the agent without any user intervention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture (~4,800 lines of Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;em&gt;Built for the Notion MCP Challenge. MOMENTUM proves that Notion + MCP + AI can replace purpose-built accountability apps — no extra infrastructure needed.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
