DEV Community

Harshal patil
Harshal patil

Posted on

I Built an AI Project Lifecycle Manager with Notion MCP: PRD Review to Tickets in One Flow

Notion MCP Challenge Submission 🧠

Notion Assist

AI-powered project lifecycle manager: from PRD review to TRD to tickets, all inside Notion. (Bye Bye PMs)


What It Does

Notion Assist takes your PRD, reviews it against your existing workspace context (business logic, RCAs, issues, engineering DB). Writes a Technical Requirements Document and creates a full tickets dashboard in one flow, all living in Notion.

Share a PRD link. One button later, you have three production-ready artifacts:

  • PRD Review — structured analysis with gaps, strengths, and completeness score
  • TRD — full technical doc with architecture, APIs, data models, edge cases
  • Tickets Dashboard — Notion database pre-populated with all tasks (type, priority, description)

The Problem

Every product team does this manually:

  1. Write PRD → share with team for review
  2. Engineers write TRD from PRD
  3. Someone breaks TRD into tickets

That's 3 context switches, 3 docs to write, and the information rarely stays connected. By the time tickets are created, half the PRD context is lost.


The Flow

You: "Review my PRD for the billing upgrade flow."
         ↓
Claude searches the Notion workspace (via MCP)
Claude reads PRD + related docs + known issues
Claude outputs: Summary → Gaps → Strengths → Score
         ↓
  [ → Build TRD + Tickets in Notion ]   ← one button
         ↓
TRD page created in Notion
         ↓
Tickets database created in Notion (pre-populated)
Enter fullscreen mode Exit fullscreen mode

The sidebar tracks live progress and shows ↗ view links to each artifact as they're created.


How It Works — Notion MCP

This branch uses the Anthropic Messages API mcp-client-2025-04-04 beta. One API call gives Claude native access to your entire Notion workspace — no tool definitions, no proxy for chat, no MCP client code.

fetch("https://api.anthropic.com/v1/messages", {
  headers: {
    "x-api-key": ANTHROPIC_API_KEY,
    "anthropic-version": "2023-06-01",
    "anthropic-beta": "mcp-client-2025-04-04",
    "anthropic-dangerous-direct-browser-access": "true",
  },
  body: JSON.stringify({
    model: "claude-sonnet-4-20250514",
    max_tokens: 8096,
    system: SYSTEM_PROMPT,
    messages: [...],
    mcp_servers: [{
      type: "url",
      url: "https://mcp.notion.com/sse",
      headers: { Authorization: `Bearer ${NOTION_TOKEN}` },
      name: "notion",
    }],
  }),
});
Enter fullscreen mode Exit fullscreen mode

Claude gets access to notion-search, notion-fetch, notion-create-pages, notion-create-database, and more — automatically. It decides which tools to call, reads multiple pages, cross-references issues, and creates artifacts. Zero routing logic on our end.

Session storage

Project state (name, stage, timestamps) is stored in a Notion database that the app creates automatically on first run (notion-assist-sessions-v1). This uses the Notion REST API via a Next.js server-side proxy to avoid CORS.

Browser → Anthropic API + mcp_servers  (chat, CORS allowed via beta header)
Browser → /api/notion (Next.js proxy)  (session storage only)
              ↕
         Notion Workspace
Enter fullscreen mode Exit fullscreen mode

Tech Stack

  • Next.js 16 (App Router) — frontend + /api/notion proxy for session storage
  • Tailwind CSS v4 — dark terminal-style UI
  • Anthropic API — Claude Sonnet with Notion MCP (mcp-client-2025-04-04)
  • Notion MCPmcp.notion.com/sse — full workspace read/write via Claude
  • react-markdown — AI response rendering

No backend. No database. Everything lives in Notion.


Architecture

Browser
  ├── Anthropic API (Claude + Notion MCP)   ← chat, PRD review, TRD, tickets
  │       Claude ↔ mcp.notion.com ↔ Notion workspace
  │
  └── /api/notion (Next.js proxy)           ← session/project tracking only
              ↕
         notion-assist-sessions-v1/
                 └── Projects DB
Enter fullscreen mode Exit fullscreen mode

Getting Started

1. Get an Anthropic API key
Sign up at console.anthropic.com. Key starts with sk-ant-.

2. Create a Notion integration
Go to notion.so/my-integrations, create an integration, copy the token (ntn_...). Share your workspace pages with it.

3. Run

npm install
npm run dev
Enter fullscreen mode Exit fullscreen mode

Open http://localhost:3000, enter your keys, and paste a PRD link to start.

Setup


What's Next

  • Retrospective stage — AI reads closed tickets and writes a retro doc
  • Slack integration — post PRD review summary to a channel
  • Real streaming — SSE streaming once MCP beta supports it
  • Multi-user — shared project state via the Notion DB (already there)

Branches

Branch LLM Notion access
anthropic-api (this) Claude via Anthropic API Notion MCP — native, zero tool code
main Gemini/Claude via OpenRouter (free) Direct Notion REST API + custom tools

Use main if you don't have an Anthropic key — it works with a free OpenRouter account.


Links

Top comments (3)

Collapse
 
phewww profile image
Umang

This is best.

Collapse
 
phewww profile image
Umang • Edited

Very cool.

Collapse
 
dhanashree_patil_280 profile image
Dhanashree Patil

Very useful