Gather-Up-AI is a microservices-based event planning platform that leverages AI to help users find the perfect vendors and venues for their events. Using natural language processing and intelligent recommendation systems, it simplifies the event planning process.
- 🤖 AI-Powered Recommendations: Uses cloud-based LLM and RAG (Retrieval-Augmented Generation) for intelligent vendor suggestions
- 📍 Smart Location Search: Integrates with Google Places API to find ideal event venues
- 🎨 AI Image Generation: 🆕 ComfyUI + Ollama Integration - Fast, high-quality image generation with Z-Image Turbo (4-step generation, ~10s)
- 🤖 Intelligent Prompt Enhancement: Uses Ollama LLM to transform simple prompts into detailed, optimized descriptions
- ☁️ Cloud Storage: Automatic Cloudinary integration for CDN-delivered images
- 🔗 Microservices Architecture: Scalable, modular design with separate services for different functionalities
- 🚀 FastAPI Backend: High-performance async API services
- 🧠 Vector Search: Semantic similarity search using sentence transformers
- 🎯 Event Context Awareness: Image generation understands event themes, colors, and mood
Generate stunning event images with AI in seconds!
Quick Start:
- Install Ollama:
winget install Ollama.Ollama - Get model:
ollama pull llama3.2 - Configure Cloudinary in
.env - Start service:
cd services/image-service && .\start-service.ps1
Features:
- ⚡ Fast: ~10-15 seconds per image
- 🎨 High Quality: Z-Image Turbo model optimized for speed
- 🤖 Smart: Ollama LLM enhances prompts automatically
- ☁️ Cloud-Ready: Cloudinary CDN integration
- 🎯 Context-Aware: Understands your event details
Documentation:
Gather-Up-AI/
│
├── services/
│ ├── api-gateway/ # Main entry point - Routes requests to services
│ │ ├── main.py
│ │ ├── requirements.txt
│ │ ├── .env.example
│ │ ├── .env
│ │ └── tests/
│ │ └── test_main.py
│ │
│ ├── location-service/ # Venue/location search using Google Places API
│ │ ├── main.py
│ │ ├── requirements.txt
│ │ ├── schemas.py
│ │ ├── .env.example
│ │ ├── routes/
│ │ │ └── location_routes.py
│ │ ├── services/
│ │ │ └── places_service.py
│ │ └── tests/
│ │ └── test_main.py
│ │
│ ├── vendor-service/ # RAG-based vendor recommendations
│ │ ├── main.py
│ │ ├── requirements.txt
│ │ ├── database.py
│ │ ├── schemas.py
│ │ ├── .env.example
│ │ ├── .env
│ │ ├── routes/
│ │ │ └── vendor_routes.py
│ │ ├── services/
│ │ │ ├── llama_service.py
│ │ │ └── vector_service.py
│ │ └── tests/
│ │ └── test_main.py
│ │
│ └── image-service/ # 🆕 AI Image Generation with SDXL
│ ├── main.py
│ ├── requirements.txt
│ ├── schemas.py
│ ├── .env
│ ├── routes/
│ │ └── image_routes.py
│ ├── services/
│ │ ├── comfyui_service.py
│ │ └── llama_service.py
│ ├── test_service.py
│ └── README.md
│
├── .venv/
├── start_all.py # 🔥 One-click launcher for all services
├── COMFYUI_SETUP.md # 🎨 ComfyUI installation guide
├── .gitignore
└── README.md
- Central entry point for all client requests
- Routes requests to appropriate microservices
- Handles CORS and request/response aggregation
- Supports image generation endpoints
- Manages vendor data in MongoDB
- Uses sentence transformers for semantic search
- Implements RAG pattern with LLM for intelligent recommendations
- Vector similarity search for matching user requirements
- Integrates with Google Places API
- Searches for venues based on location and event type
- Returns detailed venue information including ratings and contact details
- AI-powered image generation using ComfyUI
- Ollama LLM for intelligent prompt enhancement
- Z-Image Turbo model for fast generation
- Cloudinary integration for cloud storage
- Event context-aware image generation
- Your ComfyUI Setup: Already configured at http://127.0.0.1:8000
- AI-powered image generation using Zephyr Image Turbo (cloud-optimized model)
- Prompt enhancement with cloud-based LLM for better results
- Real-time progress streaming via Server-Sent Events
- Integration with ComfyUI for professional image generation
- Supports customizable image generation with modern turbo diffusion
- Uses qwen_3_4b text encoder for superior text understanding
- Framework: FastAPI
- Language: Python 3.10+
- Database: MongoDB (Vendor Service)
- AI/ML:
- PyTorch
- Sentence Transformers
- Hugging Face Transformers
- Zephyr Image Turbo (via ComfyUI)
- Cloud-based LLM via Ollama (glm-4.6:cloud)
- qwen_3_4b text encoder
- External APIs: Google Places API, Ollama Cloud API
- Image Generation: ComfyUI with Zephyr Image Turbo
- HTTP Client: HTTPX, Requests, aiohttp
- Environment Management: python-dotenv
- Testing: pytest, pytest-asyncio, pytest-cov
- CI/CD: GitHub Actions
- Python 3.10+ installed
- MongoDB instance (for vendor service)
- Google Places API key (for location service)
- ComfyUI with Zephyr Image Turbo models (for image service)
- qwen_3_4b.safetensors (text encoder)
- z_image_turbo_bf16.safetensors (diffusion model)
- ae.safetensors (VAE)
- Cloud-based Ollama API access (or local Ollama with models)
git clone https://github.com/Gather-Up/Gather-Up-AI
cd Gather-Up-AIpython -m venv .venvWindows PowerShell:
.\.venv\Scripts\Activate.ps1Command Prompt:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activateYou should see (.venv) before your terminal prompt.
Install all service dependencies into the shared virtual environment:
pip install -r services/api-gateway/requirements.txt
pip install -r services/location-service/requirements.txt
pip install -r services/vendor-service/requirements.txt
pip install -r services/image-service/requirements.txtNote: For GPU support with PyTorch, use:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu129Each service has an .env.example file. Copy and configure them:
API Gateway:
cd services/api-gateway
cp .env.example .env
# Edit .env with your configurationLocation Service:
cd services/location-service
cp .env.example .env
# Add your GOOGLE_PLACES_API_KEYVendor Service:
cd services/vendor-service
cp .env.example .env
# Add your MONGODB_URI and other configurationsImage Service: 🆕
cd services/image-service
# .env already created - verify COMFYUI_URL and OLLAMA_API_URLRequired models for Zephyr Image Turbo:
- Text Encoder:
qwen_3_4b.safetensors - Diffusion Model:
z_image_turbo_bf16.safetensors - VAE:
ae.safetensors
Place models in:
ComfyUI/models/
├── text_encoders/qwen_3_4b.safetensors
├── diffusion_models/z_image_turbo_bf16.safetensors
└── vae/ae.safetensors
Start ComfyUI on port 8000 and verify at http://localhost:8000
Option A: One-Click Launcher 🔥 RECOMMENDED
# From project root
python start_all.pyThis will open separate windows for:
- API Gateway (8000)
- Vendor Service (8001)
- Location Service (8002)
- Image Service (8000)
Option B: Manual Start
Open 4 separate terminal windows, activate the virtual environment in each, and run:
Terminal 1 - API Gateway:
cd services/api-gateway
python main.pyRuns on: http://localhost:8000
Terminal 2 - Vendor Service:
cd services/vendor-service
python main.pyRuns on: http://localhost:8001
Terminal 3 - Location Service:
cd services/location-service
python main.pyRuns on: http://localhost:8002
GET /- Root endpointGET /health- Health check for all servicesPOST /plan-event- Main event planning endpoint (natural language input)
GET /- Service infoGET /health- Health checkPOST /api/vendors/recommend- Get vendor recommendationsPOST /api/vendors- Add new vendorGET /api/vendors- List all vendors
GET /- Service infoGET /health- Health checkPOST /api/locations/search- Search venues by location and type
After installing new packages:
pip freeze > services/<service-name>/requirements.txtTo run a specific test file:
cd services/<service-name>
pytest tests/test_main.py -vTo run tests with detailed output:
pytest tests/ -v -s- Follow PEP 8 guidelines
- Use type hints where possible
- Document functions with docstrings
If you move or rename the project folder, recreate the virtual environment:
Remove-Item -Recurse -Force .venv
python -m venv .venv
.\.venv\Scripts\Activate.ps1
# Reinstall dependenciesChange the port in the respective service's .env file:
API_GATEWAY_PORT=8000VENDOR_SERVICE_PORT=8001LOCATION_SERVICE_PORT=8002
Ensure MongoDB is running and the MONGODB_URI in .env is correct.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Sachitha Samadhi
- GitHub: @Gather-Up
- Google Places API for venue data
- Hugging Face for transformer models
- FastAPI framework for the excellent async support
- The shared
.venvensures consistency and avoids duplicate installations - Do not move the
.venvfolder after creation — paths inside it are absolute - All services must be running simultaneously for full functionality
Happy Event Planning! 🎊