An intelligent AI-powered Project Tracker assistant that processes meeting transcripts, extracts action items, generates status reports, and provides AI-driven project insights.
- π 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
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)
- Framework: FastAPI
- LLM: OpenAI GPT-4o-mini (via OpenRouter)
- Vector DB: PostgreSQL with pgvector
- Embeddings: Ollama (nomic-embed-text)
- Orchestration: LangGraph
- ORM: SQLAlchemy
- Python 3.10+
- PostgreSQL with pgvector extension
- Ollama (for embeddings)
- OpenAI API key
-
Clone the repository
git clone <repo-url> cd AI-Project-Tracker/api
-
Create virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Configure environment variables
cp .env.example .env
Edit
.envwith:OPENAI_API_KEY=your_api_key OPENAI_MODEL=openai/gpt-4o-mini DATABASE_URL=postgresql://user:password@localhost:5432/ai_pm -
Setup Database
# Using docker-compose docker-compose up -d # Then run migrations alembic upgrade head
-
Start Ollama (for embeddings)
ollama run nomic-embed-text
uvicorn app.main:app --reloadThe API will be available at http://localhost:8000
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"
}
]
}
}POST /chat
{
"question": "What are the current blockers?"
}Response:
{
"answer": "Based on project memory, the current blockers are...",
"retrieved_memories": ["...", "..."]
}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
The chat agent uses vector embeddings to retrieve relevant project context before answering questions, ensuring responses are grounded in actual project data.
- 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
LangGraph orchestrates a state machine that processes transcripts through various agents and returns results.
pytest tests/black app/
pylint app/# Create migration
alembic revision --autogenerate -m "description"
# Apply migrations
alembic upgrade head- Create a feature branch
- Make your changes
- Submit a pull request
MIT
For issues and questions, please open an issue on the repository.