This is a submission for the Notion MCP Challenge
What I Built
SAGE — Student Agent for Guided Education — is an academic co-pilot built for Filipino university students. You connect your Notion account, tell it your program, year, and semester, and it builds your entire academic workspace for you: course pages, topic breakdowns, task databases, and study prompts, all structured and ready to go.
It’s built on Notion MCP, FastAPI, Supabase, and Qwen on Vultr Inference. The workspace it creates is seeded with real curriculum data from Ghost Commons, a pre-built registry covering all six BSCPE Year 2 Semester 1 courses — Differential Equations, Engineering Data Analysis, Circuits, and more.
The frustration behind it is real: as a computer engineering student in the Philippines, my tasks come from Teams, Google Classroom, Canvas, and Blackboard all at once. I forget things. I don’t know where to start. SAGE is the one place I wished existed.
Video Demo
Show us the code
github.com/kuya-carlo/sage-mcp
How I Used Notion MCP
Notion MCP is the core of SAGE — not a wrapper, not an afterthought. Every workspace action goes through it: creating the root page, spinning up course databases with full property schemas, inserting topic rows, and querying workspace state for the load monitor.
The hardest part was making it stable at scale. Building a full semester workspace means dozens of concurrent MCP calls — course pages, Topics databases, Tasks databases, individual topic entries — all in parallel. I implemented a global semaphore, persistent SSE connection pooling via an async context manager, and inter-course delays to keep the MCP server stable.
What Notion MCP unlocks here is genuine multi-tenant isolation: every student authorizes their own Notion workspace via OAuth, and SAGE writes only to the pages they explicitly grant access to. Tokens are AES-encrypted at rest. No shared state, no data leakage.
The result is a workspace that feels like it was built by hand — because structurally, it was. SAGE just does it in one shot.