Back to Home

Master PM tech stack: AI assistant on FastAPI

Guide for PM on mastering tech stack through creating AI assistant on FastAPI and PostgreSQL. 10 stages from MCP to hybrid RAG with Qdrant. Focus on SQL, indexes and optimization for real projects.

PM in code: build AI assistant from scratch in 30 days
Advertisement 728x90

A Step-by-Step Plan for PMs to Master Tech Stack by Building an AI Assistant

PMs without a technical foundation risk losing credibility with developers. Build a real SaaS project—an AI assistant based on a task tracker. It answers queries like "How's the team doing?" or "What's the developer's workload?" An alternative for beginners: an Open Source GitHub analyst that handles questions like "Critical bugs in React?"

The project covers client-server architecture, REST, unit tests, containerization, and logging. It requires live data and scaling to two frontend clients.

Tech Stack:

Google AdInline article slot
  • Backend: Python, FastAPI, PostgreSQL, uv
  • Frontend: React, TypeScript, Vite, Shadcn, Tailwind

Setting Up the Environment and Tools

Install Python, npm, pip (replace with uv), Git. Add an IDE (Antigravity), Docker Desktop, DBeaver. For AI coding, use Google AI Pro: frontier models (Gemini-3.1-pro high), IDE Antigravity, CLI Gemini.

MCP (Model Context Protocol) — Basic Set:

  • serena
  • sequential-thinking
  • context7
  • filesystem

MCP Config (mcp_config.json):

Google AdInline article slot
{
  "mcpServers": {
    "filesystem": {
      "$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "C:\\Users\\User\\a_projects",
        "C:\\Users\\User\\.ssh"
      ],
      "env": {}
    },
    "sequential-thinking": {
      "$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sequential-thinking"
      ],
      "env": {}
    },
    "context7": {
      "$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
      "command": "npx",
      "args": [
        "-y",
        "@upstash/context7-mcp"
      ],
      "env": {}
    },
    "serena": {
      "$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/oraios/serena",
        "serena",
        "start-mcp-server"
      ],
      "env": {}
    }
  }
}

Install the skills.sh registry: npm install -g @skills/cli. Add skills as you progress through the stages.

Rules for Working with AI in Coding

Break down tasks: one chat per task. If it's not resolved, start a new chat with clarification. Write in English without roles or goals. For difficulties, apply the "duck" method:

  • Discuss in chat, create context.md.
  • In a new chat—vision.md for architecture.
  • tasks.md with tasks.
  • Execute tasks.

Stage 1: Telegram Bot with Jira via MCP

Create a bot on FastAPI: access Jira MCP, respond in Telegram. Tokens in .env. AI handles Atlassian MCP calls.

Google AdInline article slot
  • Result: Local bot, basic chat.
  • Stack: Python, FastAPI, Gemini API, Atlassian MCP.

Server: @aashari/mcp-server-atlassian-jira.

Stage 2: Direct REST Requests to Jira API

Abandon MCP. Git init, main branch. Scripts: users, statuses, project tasks (30 days).

Skill: fastapi-expert.

  • Result: Control via HTTP, .venv, .gitignore, .env.example.
  • Stack: Jira REST API, requests, Git.
  • Practices: VCS, Tool Calling, API.

Stage 3: PostgreSQL with FTS

Schema: tasks, changelog. Sync button (overwrites old data). AI uses top-5 via FTS (tsvector/tsquery, BM25).

  • Result: Local storage, fast search.
  • Stack: PostgreSQL FTS, raw SQL.
  • Practices: DB Design, SQL Migrations, IR.

Install tsvector, DBeaver.

Stage 4: Hybrid RAG with Vectors

Tables: assignee, status, type (int ID). Manual migrations. Vectorize tasks in Qdrant (HNSW). Search: top-5 tasks → JOIN changelog by task_id.

Indexes: assignee_id, status_id, type_id, HNSW, task_id. EXPLAIN ANALYZE for optimization.

Skill: postgresql-optimization.

  • Result: Semantic search with history, performance on thousands of records.
  • Stack: Qdrant, PostgreSQL (HNSW, tsvector).
  • Practices: RAG, Hybrid Search, Vector DB, Query Opt.

Key Takeaways

  • The project is built step-by-step: from MCP to direct APIs, SQL, RAG.
  • Focus on practices: VCS, indexing, JOIN, query optimization.
  • AI accelerates, but the PM controls architecture and stack.
  • Extensions: two frontends, server deployment, AI integration.

— Editorial Team

Advertisement 728x90

Read Next