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

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages