An intelligent task assignment system powered by AI that analyzes GitHub issues and developer profiles to make optimal task assignments. Features multi-provider AI support, Google SSO authentication, and automatic notification generation.
- User Authentication: Secure login/signup with password hashing
- Google SSO: One-click sign-in with Google OAuth
- API Key Management: Store and auto-load your AI provider keys
- OpenAI (GPT-4, GPT-3.5)
- Google Gemini (Gemini 1.5 Pro, Gemini 2.0 Flash)
- Local AI (Ollama - run models locally)
- GitHub Integration: Fetch issues and contributors directly from repositories
- AI Analysis: Intelligent matching of tasks to developers based on skills, workload, and preferences
- Manual Upload: JSON file upload for offline use
- Auto-generate Jira tickets with professional descriptions
- Create Slack messages for developer notifications
- Draft Messenger updates for quick status sharing
- SQLite database for persistent storage
- Assignment history tracking
- User profile management
- Python 3.8+
- Git
- Google Cloud Console account (for Google SSO)
- Clone the repository
git clone https://github.com/yordanos-habtamu/AI-Task-Assigner.git
cd AI-Task-Assigner- 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 .envEdit .env and add your API keys:
# AI Provider (choose one)
OPENAI_API_KEY=your_openai_key
# OR
GOOGLE_API_KEY=your_gemini_key
# Google OAuth (optional, for SSO)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# GitHub (optional, for higher rate limits)
GITHUB_TOKEN=your_github_tokenTerminal 1 - Start OAuth Server:
./run_oauth.shTerminal 2 - Start Streamlit App:
./run.shAccess at:
- Streamlit App: http://localhost:8501
- OAuth Server: http://localhost:8502
./run.shThen create an account using username/password.
- Go to Google Cloud Console
- Create a new project or select existing
- Go to APIs & Services β Credentials
- Click Create Credentials β OAuth 2.0 Client ID
- Configure OAuth consent screen
- Add redirect URI:
http://localhost:8502/auth/google/callback - Copy Client ID and Client Secret to
.env
See GOOGLE_SSO_SETUP.md for detailed instructions.
- Get API key from OpenAI Platform
- Add to
.env:OPENAI_API_KEY=sk-...
- Get API key from Google AI Studio
- Add to
.env:GOOGLE_API_KEY=...
- Install Ollama: https://ollama.ai
- Pull a model:
ollama pull llama3.1 - Start Ollama:
ollama serve
- Google: Click "Continue with Google"
- Username/Password: Create an account or login
- Select provider (OpenAI, Gemini, or Ollama)
- Enter API key if needed
- Choose model
- Click "πΎ Save API Keys to Profile" (optional)
Option A: GitHub Repository
- Enter repository URL (e.g.,
owner/repo) - Add GitHub token for private repos
- Click "Fetch Data"
Option B: Manual JSON Upload
- Upload
issues.jsonanddevelopers.json - See
backend/data/for example formats
- Click "π Run AI Assignment"
- View results in the table
- Check "π Review & Send" tab for notifications
- Edit Jira ticket descriptions
- Customize Slack messages
- Click "π Send All (Simulate)" or individual send buttons
TaskAssignAi/
βββ backend/
β βββ ai/ # AI agents
β β βββ llm_provider.py # Multi-provider abstraction
β β βββ issue_agent.py # Issue analysis
β β βββ dev_agent.py # Developer analysis
β β βββ assign_agent.py # Task assignment
β β βββ notification_agent.py # Notification generation
β βββ oauth_server.py # Flask OAuth server
β βββ database.py # SQLAlchemy models
β βββ crud.py # Database operations
β βββ auth_utils.py # Password hashing
β βββ data/ # Sample JSON files
βββ frontend/
β βββ app.py # Main Streamlit UI
β βββ auth.py # Login/Signup pages
βββ run.sh # Start Streamlit
βββ run_oauth.sh # Start OAuth server
βββ requirements.txt # Python dependencies
pytestpython backend/main.py# View database
sqlite3 task_assignments.db
# Reset database
rm task_assignments.db- API keys are stored in plain text in the database (encrypt in production)
- Use HTTPS in production
- Rotate OAuth secrets regularly
- Don't commit
.envfile to version control
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details
For issues and questions:
- GitHub Issues: https://github.com/yordanos-habtamu/AI-Task-Assigner/issues
- Documentation: See
QUICKSTART.mdandDEMO.md
Made with β€οΈ by the TaskAssignAI Team