Skip to content

Repository files navigation

Agentic AI Assistant

A production-ready multi-agent orchestration system that automates complex workflows across Slack, Jira, and enterprise memory systems.

Overview

The Agentic AI Assistant leverages CrewAI to coordinate specialized AI agents that work together to complete intelligent workflows. The system reads from Slack, manages Jira tickets, and maintains semantic memory—all through a unified REST API or interactive web interface.

Key Features

  • Multi-Agent Orchestration: Hierarchical delegation system with specialized agents
  • Slack Integration: Read, summarize, and extract information from Slack channels
  • Jira Management: Create, update, and search project tickets programmatically
  • Semantic Memory: Store and retrieve information using vector embeddings
  • REST API: FastAPI-based HTTP endpoints for programmatic access
  • Web Interface: Streamlit UI for interactive task management
  • Async Processing: Background task execution with real-time status tracking
  • Error Resilience: Automatic retry logic and graceful failure handling

Technology Stack

Component Technology Version
Orchestration CrewAI Latest
API Framework FastAPI 0.100+
Web UI Streamlit 1.28+
Vector DB Weaviate Cloud
LLM Provider OpenAI GPT-4o-mini
Runtime Python 3.10+

Quick Start

Prerequisites

  • Python 3.10 or higher
  • pip package manager
  • Internet connection
  • API keys for OpenAI, Slack, Jira, and Weaviate

Installation

  1. Clone repository
git clone <repository-url>
cd AI_ASSISTANT
  1. Create virtual environment
python -m venv .venv
source .venv/bin/activate
# On Windows: .venv\Scripts\activate
  1. Install dependencies
pip install -r requirements.txt
  1. Configure environment
cp .env.example .env
# Edit .env with your API keys
  1. Launch system
python main.py

Choose from:

First Task (via UI)

  1. Navigate to "Submit Task" tab
  2. Enter: "Read the latest 5 messages from Slack"
  3. Set priority: "high"
  4. Click "Submit Task"
  5. Check status in "Task Status" tab

Project Structure

project-root/
├── main.py                         # Application entry point
├── src/
|   ├── config/
|   |   ├── __init__.py
|   |   ├── agent_config.yaml
|   |   └── weaviate_schema.json
│   ├── llm/
│   │   ├── __init__.py
│   │   └── openai_client.py
│   ├── api/                      # REST API layer
│   │   ├── main.py               # FastAPI application
│   │   ├── routes.py             # Endpoint definitions
│   │   ├── models.py             # Pydantic models
│   │   ├── background.py         # Task execution
│   │   └── dependencies.py       # Dependency injection
│   ├── ui/
|   |   ├── main.py
│   │   ├── streamlit_app.py      # Web interface
│   │   └── __init__.py
│   ├── agents/                   # AI agent definitions
│   │   ├── base_agent.py
│   │   ├── planner_agent.py
│   │   ├── slack_agent.py
│   │   ├── jira_agent.py
│   │   └── memory_agent.py
│   ├── tools/                    # Tool implementations
│   │   ├── __init__.py
│   │   ├── slack_tools_crewai.py   
│   │   ├── slack_tools/
|   |   |   ├── slack_reader.py
|   |   |   ├── slack_summarizer.py
|   │   │   └── __init__.py
│   │   ├── jira_tools/
|   |   |   ├── jira_creator.py
|   |   |   ├── jira_updater.py
|   │   │   └── __init__.py
│   │   └── memory_tools/
|   |       ├── memory_store.py
|   |       ├── memory_retrieve.py
|   │       └── __init__.py 
│   ├── orchestration/
│   │   ├── __init__.py
│   │   ├── approval_workflow.py
│   │   ├── error_handler.py
│   │   ├── tast_executer.py
│   │   └── crew_manager.py       # CrewAI orchestration
│   └── memory/
│       └── weaviate_client.py    # Vector database client
├── scripts/
|   └── wetup_weaviate.py
├── config/
|   ├── __init__.py
|   ├── agent_config.yaml
|   └── weaviate_schema.json
├── tests/
|   ├── quick_test_delegation.py
|   └── test_multi_agent.py
├── docs/                         # Documentation
├── requirements.txt              # Python dependencies
├── .env.example                  # Example configuration
└── README.md                     # This file

Core Components

Planner Agent

Analyzes user requests and coordinates specialist agents using delegation tools. Routes tasks to appropriate specialists and consolidates results.

Slack Agent

Specialized for Slack interactions. Reads messages, summarizes conversations, and extracts relevant information from channel discussions.

Jira Agent

Manages Jira tickets. Creates new issues, updates status, searches existing tickets, and tracks project work.

Memory Agent

Maintains long-term context using Weaviate vector database. Stores important information and performs semantic similarity searches.

Usage Examples

Example 1: Read Slack and Create Tickets

curl -X POST http://localhost:8000/task \
  -H "Content-Type: application/json" \
  -d '{
    "request": "Read recent Slack messages and create Jira tickets for bugs",
    "priority": "high",
    "dry_run": false
  }'

Example 2: Search Memory

curl http://localhost:8000/memory \
  -G -d "query=important%20decisions" \
  -d "limit=5" \
  -d "min_importance=0.5"

Example 3: Check Task Status

curl http://localhost:8000/status/task-abc123

API Documentation

Interactive API documentation available at:

Full API reference: See API.md

Configuration

Environment variables required in .env:

# OpenAI
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini

# Slack
SLACK_BOT_TOKEN=xoxb-...
SLACK_CHANNEL_ID=C...

# Jira
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_EMAIL=user@domain.com
JIRA_API_TOKEN=ATATT...
JIRA_PROJECT_KEY=SCRUM

# Weaviate
WEAVIATE_URL=https://cluster.weaviate.cloud
WEAVIATE_API_KEY=...

# System
CREWAI_TRACING_ENABLED=true

Detailed setup instructions: See SETUP.md

Architecture

System diagram and detailed architecture: See ARCHITECTURE.md

Key features:

  • Sequential task processing
  • Hierarchical agent delegation
  • Asynchronous background execution
  • Real-time status tracking
  • Error handling and retries

Documentation

Performance Characteristics

  • Task execution time: 5-30 seconds (depending on complexity)
  • Memory queries: <1 second (semantic search)
  • Concurrent task limit: Limited by API rate limits
  • Task storage: In-memory (restart clears history)

Security Considerations

  • Never commit .env file to version control
  • Regenerate API keys if exposed
  • Use environment variables for sensitive data
  • Implement rate limiting for production
  • Add authentication layer for API endpoints

Support & Troubleshooting

Health Check

curl http://localhost:8000/health

Common Issues

Connection refused: Ensure API server is running with python main.py

OpenAI error: Verify OPENAI_API_KEY is valid and account has credits

Slack/Jira errors: Check API tokens and permissions in respective services

Weaviate timeout: Check internet connection and Weaviate cluster status

See TROUBLESHOOTING.md for detailed solutions.

Contributing

Guidelines for contributions: See CONTRIBUTING.md

License

Proprietary - All rights reserved

Version

Current version: 1.0.0

Last updated: October 2025

About

A production-oriented multi-agent AI assistant that orchestrates specialized agents to automate enterprise workflows across Slack and Jira. Built with CrewAI and FastAPI, it combines hierarchical agent delegation, semantic memory with Weaviate, asynchronous task execution, error recovery, and a Streamlit interface for intelligent task management.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages