A multi-agent AI system for internal company knowledge management, team analytics, and employee onboarding.
- Knowledge Management: Hierarchical "textbook-style" knowledge graph with semantic search
- Multi-Agent System: Specialized agents for knowledge retrieval, onboarding, and team analysis
- MCP Connectors: Integration with Jira, GitHub, and Slack
- Voice Onboarding: Voice-enabled onboarding using Deepgram STT and ElevenLabs TTS
- Team Analytics: Health metrics, velocity tracking, and bottleneck detection
The system is a multi-agent, service-oriented architecture built around a LangGraph orchestrator. The FastAPI layer provides REST and WebSocket endpoints that handle user sessions, authentication, and request routing. Each request flows through an intent classifier and router to choose the right agent and tools, ensuring low-latency paths for direct responses and deeper pipelines for knowledge retrieval or analytics.
- Client request hits the FastAPI gateway (REST or WebSocket).
- Orchestrator classifies intent and routes to a specialized agent.
- Agent execution uses tools and shared services (memory, knowledge, MCP connectors).
- LLM calls are handled through Keywords AI (OpenAI-compatible proxy), with model selection controlled by configuration.
- Response streaming returns partial tokens for chat and voice workflows.
- Supabase Postgres is the primary system of record for users, conversations, onboarding flows, and analytics.
- Neo4j stores hierarchical knowledge and relationships (textbook-style graph).
- Qdrant indexes embeddings for fast semantic retrieval.
- Redis provides low-latency caching and backs Celery queues.
This separation optimizes for query patterns: transactional records in Postgres, graph traversal in Neo4j, and vector similarity in Qdrant.
- Orchestrator maintains session state and manages tool access using a shared memory interface.
- Short-term memory stores the immediate conversation context.
- Org/team/user memory enables durable personalization and cross-session continuity.
- Knowledge agent resolves facts by combining graph traversal and semantic retrieval.
- MCP connectors pull data from GitHub/Jira/Slack on schedules or user demand.
- Indexing pipeline chunks and embeds documents, writes embeddings to Qdrant, and links canonical entities in Neo4j.
- Consistency is maintained with background Celery tasks to keep graph and vector indexes aligned.
- Deepgram handles speech-to-text.
- ElevenLabs handles text-to-speech.
- A dedicated WebSocket stream supports low-latency bidirectional audio.
- Docker Compose orchestrates local services (API, workers, Redis, Neo4j, Qdrant).
- Observability captures logs and optional traces to diagnose latency or LLM/tool errors.
- Configuration is centralized via environment variables for easy switching between providers.
Keywords AI
Supabase
Docker
| Component | Technology |
|---|---|
| API Framework | FastAPI |
| Agent Framework | LangGraph |
| LLM | Keywords AI (OpenAI-compatible) / Anthropic (optional) |
| Embeddings | Voyage AI / OpenAI |
| Knowledge Graph | Neo4j |
| Vector Database | Qdrant |
| Primary Database | Supabase Postgres |
| Cache/Queue | Redis |
| Task Queue | Celery |
| Voice | Deepgram + ElevenLabs |
- Python 3.11+
- Docker and Docker Compose
- API keys for Anthropic, Voyage AI (or OpenAI for embeddings)
- Clone the repository:
git clone <repository-url>
cd ai-internal-manager- Copy environment file and configure:
cp .env.example .env
# Edit .env with your API keys- Start services with Docker Compose:
cd docker
docker-compose up -d- Run database migrations:
alembic upgrade head- Start the API server:
uvicorn src.main:app --reload- Create a virtual environment:
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows- Install dependencies:
pip install -e ".[dev]"- Run tests:
pytestPOST /api/v1/chat/conversations- Create conversationPOST /api/v1/chat/conversations/{id}/messages- Send messageWebSocket /api/v1/chat/ws/{id}- Real-time chat
POST /api/v1/voice/sessions- Create voice sessionWebSocket /api/v1/voice/ws/{id}- Voice streaming
POST /api/v1/knowledge/search- Semantic searchGET /api/v1/knowledge/graph/hierarchy- Get knowledge structureGET /api/v1/knowledge/graph/node/{id}- Get node details
GET /api/v1/onboarding/flows- List onboarding flowsPOST /api/v1/onboarding/start- Start onboardingGET /api/v1/onboarding/progress- Get progress
GET /api/v1/analytics/team/{id}/health- Team health scoreGET /api/v1/analytics/team/{id}/velocity- Sprint velocityGET /api/v1/analytics/team/{id}/bottlenecks- Identified bottlenecks
Key environment variables:
# Core
DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/ai_manager
REDIS_URL=redis://localhost:6379/0
NEO4J_URI=bolt://localhost:7687
QDRANT_HOST=localhost
# LLM
ANTHROPIC_API_KEY=your-key
# Embeddings
VOYAGE_API_KEY=your-key # or use OPENAI_API_KEY
# Voice (optional)
DEEPGRAM_API_KEY=your-key
ELEVENLABS_API_KEY=your-key
# External Services (optional)
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_API_TOKEN=your-token
GITHUB_TOKEN=your-token
SLACK_BOT_TOKEN=your-tokenai-internal-manager/
├── docker/ # Docker configuration
├── src/
│ ├── api/v1/ # REST + WebSocket endpoints
│ ├── agents/ # Agent implementations
│ │ ├── orchestrator/ # Main orchestrator with LangGraph
│ │ ├── knowledge/ # Knowledge retrieval agent
│ │ ├── onboarding/ # Onboarding agent
│ │ └── team_analysis/ # Team analytics agent
│ ├── mcp/ # MCP connectors
│ │ ├── jira/
│ │ ├── github/
│ │ └── slack/
│ ├── knowledge/ # Knowledge graph management
│ │ ├── graph/ # Neo4j operations
│ │ ├── textbook/ # Hierarchy management
│ │ └── indexing/ # Embeddings and chunking
│ ├── memory/ # Memory system
│ ├── models/ # SQLAlchemy models
│ └── schemas/ # Pydantic schemas
├── workers/ # Celery workers
├── alembic/ # Database migrations
└── tests/ # Test suite
MIT









