Built for the Notion MCP Hackathon — zero direct API calls, 100% MCP.
Project managers track risks mentally but never systematically. When a task slips, nobody knows which 8 downstream tasks just broke their deadlines. Single points of failure hide in plain sight — one person quietly blocking an entire workstream. By the time anyone notices, the cascade has already happened.
Risk Radar reads your Notion project databases, builds a dependency graph, and surfaces risks that humans miss. It writes actionable risk reports back to Notion and automatically propagates deadline changes through the dependency chain.
Mark one task late → watch 8 downstream dates shift automatically.
Everything runs through the Model Context Protocol (MCP) — zero direct Notion API calls.
- Read — Fetches all projects and tasks from Notion via MCP, including dependency relations
- Analyze — Builds a directed dependency graph and runs:
- Critical path detection (longest dependency chain)
- At-risk task identification (overdue, due soon but not started)
- Single point of failure detection (one person blocking multiple downstream tasks)
- Cascade impact calculation (if task X slips, what breaks?)
- Score — Calculates an overall risk score (0-100) based on overdue ratio, SPOF count, and cascade exposure
- Narrate — Gemini AI generates an executive summary referencing specific tasks, people, and numbers
- Write — Creates a formatted Risk Report page in Notion with all findings
- Track — Logs a health history entry for trend analysis over time
- Cascade — For overdue tasks, automatically pushes downstream deadlines forward via MCP
- Show the Tasks database with dependencies linked
- Run
npm run scan— a risk report appears in Notion with critical path, SPOFs, and cascade risks - Mark a task as overdue
- Run scan again — watch downstream deadlines shift automatically
- Show Health History tracking risk scores over time
┌─────────────┐ mcp-remote ┌──────────────────┐
│ Risk Radar │◄──────────────►│ Notion MCP │
│ Agent │ (stdio→HTTP) │ mcp.notion.com │
└──────┬───────┘ └────────┬─────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ Risk Engine │ │ Notion Workspace │
│ - DAG build │ │ - Projects DB │
│ - Critical │ │ - Tasks DB │
│ path (DFS) │ │ - Reports DB │
│ - SPOF scan │ │ - Health DB │
│ - Cascade │ └──────────────────┘
│ propagation│
└──────┬───────┘
│
▼
┌──────────────┐
│ Gemini 2.5 │
│ Flash (AI) │
└──────────────┘
The agent uses 4 MCP tools: notion-search to query databases, notion-fetch to read pages and resolve relations, notion-create-pages to write reports and health entries, and notion-update-page to cascade deadline changes.
- Critical Path — DFS with memoization to find the longest dependency chain from root tasks
- Single Points of Failure — Recursive downstream traversal per owner, flagging anyone blocking ≥2 tasks
- At-Risk Detection — Deadline analysis: overdue tasks, tasks due in <3 days but not started, tasks due tomorrow still in progress
- Cascade Impact — BFS from each at-risk task through the dependency graph to find all affected downstream tasks
- Risk Score — Weighted formula:
overdue_ratio × 40 + spof_penalty (max 30) + cascade_penalty (max 30)
| Property | Type |
|---|---|
| Project Name | Title |
| Status | Status (Active / On Hold / Complete) |
| Property | Type |
|---|---|
| Task Name | Title |
| Owner | People |
| Deadline | Date |
| Status | Status (Not started / In progress / Done) |
| Depends On | Relation → Tasks (self-referencing) |
| Project | Relation → Projects |
| Property | Type |
|---|---|
| Report Name | Title |
| Risk Score | Number |
| Date | Date |
| Property | Type |
|---|---|
| Project | Title |
| Risk Score | Number |
| Date | Date |
| Status | Select (Healthy / Warning / Critical) |
cp .env.example .env
# Fill in GEMINI_API_KEY and all DB IDs
npm install
# Seed sample data (optional)
npx tsx src/seed.ts
# Run risk scan
npm run scan
# Manual cascade: simulate a task slipping by N days
npm run cascade -- "Design API Schema" 3On first run, mcp-remote opens a browser for Notion OAuth. Credentials are cached after that.
- TypeScript + tsx
@modelcontextprotocol/sdk+mcp-remote(Notion MCP connection)@google/generative-ai(Gemini 2.5 Flash for risk narratives)- Custom graph algorithms (critical path, cascade propagation, SPOF detection)
- Notion as the entire data layer — no external database