Your intelligent AI assistant for Tableau Cloud - powered by Google Gemini and LangGraph agents
An AI-powered analytics platform that transforms how you interact with Tableau Cloud. Chat with your dashboards, discover visualizations through natural language, and get instant insights from your data using Google Gemini AI.
- π Live Demo: https://ai-insights-copilot.vercel.app/
- π» GitHub Repository: https://github.com/shalwin04/ai-insights-copilot
- π‘ Backend API: https://tableau-copilot-backend.onrender.com
- π₯ Demo Video: https://youtu.be/n80pcvHKyI4
- π Documentation: Setup Guide | Architecture
Tableau AI Copilot bridges the gap between Tableau's powerful visualizations and natural language interaction. Instead of browsing through workbooks and views manually, simply ask questions and let AI find, display, and explain your dashboards.
Key Innovation:
- π€ AI-Powered Discovery: Semantic search across all your Tableau workbooks, views, and data sources
- π¬ Natural Language Chat: "Show me sales dashboard" β Instantly displays the right Tableau visualization
- π¨ Embedded Visualizations: View and interact with Tableau dashboards directly in the chat interface
- π Secure Authentication: JWT-based authentication using Tableau Connected Apps
- Connected Apps JWT Authentication: Secure, server-side authentication with Tableau Cloud
- Semantic Workbook Discovery: AI-powered search across workbooks, views, and data sources
- Embedded Tableau Embedding API v3: Interactive dashboards rendered directly in the chat
- Real-Time Indexing: Automatic workbook metadata indexing for instant discovery
- Multi-Project Support: Search across all your Tableau projects and folders
- Router Agent: Classifies user intent (Tableau discovery, data analysis, visualization)
- Tableau Discovery Agent: Semantic search for Tableau content with OpenAI embeddings
- Data Retriever Agent: Finds relevant datasets from Google Drive and other sources
- Analyzer Agent: Plans and executes data analysis workflows
- Summarizer Agent: Generates natural language insights and recommendations
- Multi-Source Data Integration: Google Drive, CSV uploads, Excel files
- Semantic Search: Vector-based search using OpenAI embeddings
- Automated Workflows: Create pipelines from data ingestion to insights
- Real-Time Insights: Live progress updates as agents analyze your data
- Chat with Tableau dashboards using plain English
- Context-aware conversations with memory
- Real-time agent progress indicators
- Session history persistence
- Modern React UI with Tailwind CSS and shadcn/ui
- Responsive design with dark mode support
- Real-time WebSocket updates
- Interactive data canvas for pinning insights
Frontend (React + TypeScript)
β REST API + WebSocket
Backend (Node.js + Express)
β LangGraph Multi-Agent Workflow
AI Agents (Router β Tableau Discovery β Analyzer β Summarizer)
β Google Gemini Pro + OpenAI Embeddings
Tableau Cloud (REST API v3.22 + Embedding API v3)
β Connected Apps JWT Auth
Vector Search (ChromaDB - Optional)
External Data Sources (Google Drive, Files)
Key Technologies:
- AI/ML: LangChain.js, LangGraph, Google Gemini Pro, OpenAI Embeddings
- Tableau: REST API v3.22, Embedding API v3, Connected Apps (Direct Trust)
- Backend: Node.js, Express, TypeScript, Socket.IO
- Frontend: React, TypeScript, Tailwind CSS, shadcn/ui, Framer Motion
- Auth: OAuth 2.0 (Google), Tableau JWT (Connected Apps)
- Vector DB: ChromaDB (optional for enhanced search)
- Node.js 18+ and npm
- OpenAI API key (for embeddings)
- Google Gemini API key
- Tableau Cloud account with Connected Apps enabled
- Google Cloud Console project (for Google Drive integration)
git clone <repository-url>
cd googlecloud-ai-acceleratecd Backend
npm install
# Create .env file with Tableau credentials
cat > .env << EOF
# Server
PORT=3000
SESSION_SECRET=your-secure-random-secret
FRONTEND_URL=
# AI Services
OPENAI_API_KEY=your-openai-api-key
GOOGLE_AI_API_KEY=your-gemini-api-key
# Tableau Cloud Connected Apps (Direct Trust)
TABLEAU_SERVER_URL=
TABLEAU_SITE_NAME=your-site-name
TABLEAU_USERNAME=your-tableau-username
TABLEAU_CLIENT_ID=your-connected-app-client-id
TABLEAU_SECRET_ID=your-connected-app-secret-id
TABLEAU_CLIENT_SECRET=your-connected-app-secret-value
# Optional: ChromaDB (for enhanced vector search)
CHROMA_ENABLED=false
CHROMA_URL=http://localhost:8000
EOF- Go to Tableau Cloud β Settings β Connected Apps
- Create a new Connected App with Direct Trust
- Enable scopes:
tableau:content:read,tableau:workbooks:read,tableau:views:embed - Copy the Client ID, Secret ID, and Secret Value to your
.envfile
cd ../Frontend
npm install
# Create .env file
cat > .env << EOF
VITE_API_URL=http://localhost:3000
VITE_GOOGLE_CLIENT_ID=your-google-client-id
EOFTerminal 1 (Backend):
cd Backend
npm run devTerminal 2 (Frontend):
cd Frontend
npm run devhttp://localhost:5173
- Open the application
- Navigate to the Tableau page (sidebar)
- Click "Connect to Tableau Cloud"
- Your workbooks will be automatically indexed
- View all your workbooks organized by project
- Expand workbooks to see individual views
- Click "Show Visualization" to embed dashboards
- Interact with visualizations directly in the browser
Ask natural language questions:
Tableau Discovery:
- "Show me the sales dashboard"
- "Find visualizations about revenue"
- "What Tableau reports do I have for Q4?"
- "Display the executive summary workbook"
Data Analysis:
- "Analyze trends in my sales data"
- "What are the key insights from Q4?"
- "Compare revenue across regions"
- "Summarize my customer data"
The interface shows real-time progress:
- π€ Router analyzes your intent
- π Tableau Discovery searches for relevant dashboards
- π Retriever finds additional data if needed
- π Analyzer generates insights
- βοΈ Summarizer creates natural language summaries
- Setup Guide: Detailed installation and configuration
- Architecture: System design and technical decisions
- Tableau Setup: Tableau Connected Apps configuration
| Endpoint | Method | Description |
|---|---|---|
/api/tableau/auth/connect |
POST | Connect with server-side credentials |
/api/tableau/auth/status |
GET | Check Tableau authentication status |
/api/tableau/auth/embedding-token |
GET | Get JWT token for embedding |
/api/tableau/workbooks |
GET | List all workbooks |
/api/tableau/views |
GET | List all views |
/api/tableau/views/:id/embed-url |
GET | Get embed URL for a view |
| Endpoint | Method | Description |
|---|---|---|
/api/auth/google |
GET | Initiate Google OAuth |
/api/drive/files |
GET | List Google Drive files |
/api/chat/message |
POST | Send chat message to AI agents |
/api/workflows |
GET | List automated workflows |
cd Backend
npm run test:tableaunpm run test:workflow# Connect to Tableau
curl -X POST http://localhost:3000/api/tableau/auth/connect
# Get workbooks
curl http://localhost:3000/api/tableau/workbooks \
--cookie "connect.sid=your-session"
# Chat with Tableau
curl -X POST http://localhost:3000/api/chat/message \
-H "Content-Type: application/json" \
-d '{"message": "Show me sales dashboard"}' \
--cookie "connect.sid=your-session"Uses OpenAI embeddings to create vector representations of:
- Workbook names and descriptions
- View names and content URLs
- Data source metadata
- Project names and tags
Tableau Embedding API v3 with:
- JWT token authentication
- Interactive filters and parameters
- Full toolbar support (refresh, download, maximize)
- Responsive sizing
LangGraph orchestrates:
- Intent classification
- Parallel data retrieval (Tableau + files)
- Context-aware analysis
- Natural language summarization
# Verify credentials
curl -X POST http://localhost:3000/api/tableau/auth/connect
# Check environment variables
echo $TABLEAU_CLIENT_IDCommon Issues:
- Invalid Connected App credentials β Verify Client ID and Secret in Tableau Cloud
- Token expired β Server automatically refreshes tokens
- Missing scopes β Ensure Connected App has read and embed permissions
If visualizations show "Sign in required":
- Check that
/api/tableau/auth/embedding-tokenreturns a valid JWT - Verify Connected App has
tableau:views:embedscope - Ensure TABLEAU_USERNAME matches your Tableau Cloud username
- Verify API keys in
.env - Check API credits and rate limits
- Gemini Pro requires billing enabled on Google Cloud
tableau-ai-copilot/
βββ Backend/
β βββ src/
β β βββ agents/ # LangGraph AI agents
β β β βββ tableauAgent.ts # Tableau integration
β β β βββ tableauDiscovery.ts # Semantic search
β β β βββ workflow.ts # Multi-agent orchestration
β β βββ services/
β β β βββ tableau.ts # Tableau REST API client
β β β βββ tableauJWT.ts # JWT token generation
β β βββ routes/
β β β βββ tableau.ts # Tableau API endpoints
β β βββ config/
β β βββ tableau.ts # Tableau configuration
β βββ package.json
β
βββ Frontend/
β βββ src/
β β βββ components/
β β β βββ features/
β β β β βββ TableauViz.tsx # Embedding component
β β β β βββ TableauWorkbookBrowser.tsx # Workbook browser
β β β βββ pages/
β β β βββ TableauPage.tsx # Main Tableau UI
β β βββ contexts/
β β β βββ TableauContext.tsx # Tableau state management
β β βββ lib/
β β βββ api.ts # API client
β βββ package.json
β
βββ README.md
- Tableau for the powerful analytics platform and Embedding API
- Google for Gemini Pro AI and Cloud infrastructure
- LangChain.js for agent orchestration framework
- OpenAI for embeddings API
- shadcn/ui for beautiful UI components
Tech Stack: TypeScript Β· React Β· Node.js Β· Google Gemini Β· Tableau Cloud Β· LangGraph Β· OpenAI