Skip to content

ankitk20/AI-Project-Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AI Project Tracker

An intelligent AI-powered Project Tracker assistant that processes meeting transcripts, extracts action items, generates status reports, and provides AI-driven project insights.

Features

  • πŸ“ Meeting Transcript Processing - Automatically process meeting transcripts using LLMs
  • βœ… Action Item Extraction - Extract structured action items with owner, task, due date, and blockers
  • πŸ“Š Status Report Generation - Generate executive summaries, sprint status, risks, and blockers
  • πŸ€– AI Chat Interface - Ask questions about project memory and get intelligent answers
  • 🧠 Vector-based Memory - RAG (Retrieval-Augmented Generation) for context-aware responses
  • πŸ’Ύ PostgreSQL Integration - Persistent storage for meetings and action items with pgvector support
  • ⚑ Async API - Fast, non-blocking FastAPI endpoints

Architecture

API Layer (FastAPI)
  β”œβ”€β”€ /chat β†’ Chat Agent (RAG)
  └── /transcript β†’ Workflow (Action Extraction)
        ↓
LLM Layer (OpenAI via OpenRouter)
  β”œβ”€β”€ Chat Agent
  β”œβ”€β”€ Action Agent
  └── Status Agent
        ↓
Data Layer
  β”œβ”€β”€ Vector Store (PGVector with Ollama embeddings)
  └── PostgreSQL (Meetings, Action Items)

Tech Stack

  • Framework: FastAPI
  • LLM: OpenAI GPT-4o-mini (via OpenRouter)
  • Vector DB: PostgreSQL with pgvector
  • Embeddings: Ollama (nomic-embed-text)
  • Orchestration: LangGraph
  • ORM: SQLAlchemy

Installation

Prerequisites

  • Python 3.10+
  • PostgreSQL with pgvector extension
  • Ollama (for embeddings)
  • OpenAI API key

Setup

  1. Clone the repository

    git clone <repo-url>
    cd AI-Project-Tracker/api
  2. Create virtual environment

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install dependencies

    pip install -r requirements.txt
  4. Configure environment variables

    cp .env.example .env

    Edit .env with:

    OPENAI_API_KEY=your_api_key
    OPENAI_MODEL=openai/gpt-4o-mini
    DATABASE_URL=postgresql://user:password@localhost:5432/ai_pm
    
  5. Setup Database

    # Using docker-compose
    docker-compose up -d
    
    # Then run migrations
    alembic upgrade head
  6. Start Ollama (for embeddings)

    ollama run nomic-embed-text

Usage

Start the Server

uvicorn app.main:app --reload

The API will be available at http://localhost:8000

API Endpoints

1. Process Transcript

POST /transcript

{
  "meeting_title": "Sprint Planning",
  "meeting_time": "2024-05-10T10:00:00",
  "participants": ["Alice", "Bob", "Charlie"],
  "transcript": "Today we discussed... action items include..."
}

Response:

{
  "actions": {
    "items": [
      {
        "owner": "Alice",
        "task": "Complete backend API",
        "due_date": "2024-05-17",
        "blocker": "Waiting on design approval"
      }
    ]
  }
}

2. Chat with Project Memory

POST /chat

{
  "question": "What are the current blockers?"
}

Response:

{
  "answer": "Based on project memory, the current blockers are...",
  "retrieved_memories": ["...", "..."]
}

Project Structure

AI-Project-Tracker/api
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ main.py                 # FastAPI app entry point
β”‚   β”œβ”€β”€ llm.py                  # LLM configuration
β”‚   β”‚
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ transcript_api.py   # Transcript processing endpoint
β”‚   β”‚   └── chat_api.py         # Chat endpoint
β”‚   β”‚
β”‚   β”œβ”€β”€ agents/
β”‚   β”‚   β”œβ”€β”€ chat_agent.py       # RAG-based Q&A agent
β”‚   β”‚   β”œβ”€β”€ action_agent.py     # Action extraction
β”‚   β”‚   β”œβ”€β”€ status_agent.py     # Status report generation
β”‚   β”‚   β”œβ”€β”€ memory_agent.py     # Memory ingestion
β”‚   β”‚   └── transcript_agent.py # Transcript processing
β”‚   β”‚
β”‚   β”œβ”€β”€ graph/
β”‚   β”‚   └── workflow.py         # LangGraph workflow orchestration
β”‚   β”‚
β”‚   β”œβ”€β”€ memory/
β”‚   β”‚   β”œβ”€β”€ vector_store.py     # PGVector configuration
β”‚   β”‚   β”œβ”€β”€ postgres.py         # PostgreSQL setup
β”‚   β”‚   β”œβ”€β”€ schemas.py          # ORM models
β”‚   β”‚   └── memory_repository.py# Data access layer
β”‚   β”‚
β”‚   β”œβ”€β”€ prompts/
β”‚   β”‚   β”œβ”€β”€ action_prompt.py    # Action extraction prompts
β”‚   β”‚   β”œβ”€β”€ status_prompt.py    # Status generation prompts
β”‚   β”‚   └── summary_prompt.py   # Summary prompts
β”‚   β”‚
β”‚   └── models/
β”‚       └── dto.py              # Request/response schemas
β”‚
β”œβ”€β”€ requirements.txt            # Python dependencies
β”œβ”€β”€ docker-compose.yml          # PostgreSQL + pgvector setup
└── README.md

Key Concepts

RAG (Retrieval-Augmented Generation)

The chat agent uses vector embeddings to retrieve relevant project context before answering questions, ensuring responses are grounded in actual project data.

Agents

  • Chat Agent: Answers user questions using RAG
  • Action Agent: Extracts structured action items from transcripts
  • Status Agent: Generates comprehensive status reports
  • Memory Agent: Ingests and vectorizes meeting data

Workflow

LangGraph orchestrates a state machine that processes transcripts through various agents and returns results.

Development

Running Tests

pytest tests/

Code Style

black app/
pylint app/

Database Migrations

# Create migration
alembic revision --autogenerate -m "description"

# Apply migrations
alembic upgrade head

Contributing

  1. Create a feature branch
  2. Make your changes
  3. Submit a pull request

License

MIT

Support

For issues and questions, please open an issue on the repository.

About

Tracks projects via meeting discussion transripts

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages