/bu# Vexel: A Google Cloud Sales Assistant
Vexel is a powerful, AI-driven application designed to assist Google Cloud sales teams. It provides tools for managing customer interactions, analyzing sales data, and streamlining the sales workflow.
This repository contains the backend services and the frontend application for Vexel.
The project is organized as a monorepo with two main parts:
/
(Backend): The core backend is a Python application built using uv. It contains various agents (calendar_agent
,charts_agent
, etc.) that handle specific business logic and integrations with Google Cloud services.vexel-app/
(Frontend): The frontend is a Next.js application built with pnpm. It provides the user interface for interacting with the Vexel agents and services.
Follow these instructions to set up your local development environment.
Before you begin, ensure you have the following installed:
- Python:
v3.12
or higher - Node.js:
v20
or higher
-
Install
pipx
pipx
is used to install and run Python applications in isolated environments.python3 -m pip install --user pipx python3 -m pipx ensurepath
(You may need to restart your terminal after installing
pipx
for the changes to take effect.) -
Install
uv
uv
is an extremely fast Python package installer and resolver.pipx install uv
-
Install
pnpm
pnpm
is a fast, disk space-efficient package manager for JavaScript.npm install -g pnpm
-
Create and Activate a Virtual Environment: From the root directory of the project, run:
python3 -m venv .venv source .venv/bin/activate
-
Install Python Dependencies:
uv pip install -e .
Still under development
-
Navigate to the Frontend Directory:
cd vexel-app
-
Install JavaScript Dependencies:
pnpm install
-
Run the Development Server:
pnpm dev
The application will be available at http://localhost:3000.
Go back to the root directory for the following.
-
Install the ADK CLI:
npm i -g @google/generative-ai-adk
-
Login to Google Cloud:
gcloud auth application-default login
-
Enable the Gemini API:
gcloud services enable aiplatform.googleapis.com
The project uses .env
files for managing environment variables.
The Python backend requires credentials for authenticating with Google Cloud services. Create a .env
file in the root directory of the project with the following content:
# .env
# Google Cloud Project ID
GOOGLE_CLOUD_PROJECT="your-gcp-project-id"
# Path to your Google Cloud service account key file
# Ensure this file is not committed to version control.
GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
The Next.js frontend requires OAuth client credentials for user authentication. Create a .env.local
file in the vexel-app/
directory. You can use the following template:
# vexel-app/.env.local
# Google OAuth 2.0 Client Credentials
OAUTH_CLIENT_ID="your-google-oauth-client-id.apps.googleusercontent.com"
OAUTH_CLIENT_SECRET="your-google-oauth-client-secret"
# The redirect URI must match the one configured in your Google Cloud Console.
REDIRECT_URI="http://localhost:3000/api/auth/callback"
# A secret string for signing session cookies.
SESSION_SECRET="generate-a-strong-random-secret"
graph TD
A[👤 User] --> B[Pulse Web Application UI];
B -- HTTPS Request --> C{OrchestratorAgent 🚀 on Cloud Run};
subgraph "Agent Reasoning & Delegation"
C -- "1. Understands intent" --> D[🧠 Gemini API];
C -- "2. Delegates task to Sub-Agent" --> E((SessionManagerAgent));
C -- "2. Delegates task to Sub-Agent" --> F((DataAnalysisAgent));
C -- "2. Delegates task to Sub-Agent" --> G((RAGAgent));
end
subgraph "Backend Services & Data"
E -- "API Call" --> H[Pulse Application API];
H --> I[(Pulse Production DB)];
F -- "Semantic Search" --> J[📊 Vertex AI Vector Search];
J --> I;
G -- "Retrieves" --> K[RAG Data Sources];
end
subgraph "Response Flow"
H -- "Result" --> C;
J -- "Result" --> C;
K -- "Result" --> C;
C -- "3. Sends Final Response" --> B;
end