Automated Post-Event Feedback Intelligence System
EventPulse is an intelligent feedback automation system built with OpenAI Agent Builder, ChatKit, and custom MCP servers. It automates survey delivery, collects responses, performs AI-powered analysis, and enables conversational queries for historical event data.
Complete documentation is in the eventpulse/ directory:
- eventpulse/README.md - Project overview and quick start
- eventpulse/TECHNICAL_SPEC.md - System architecture
- eventpulse/API_DOCUMENTATION.md - MCP Server API reference
- eventpulse/DATABASE_SCHEMA.md - Database design
- eventpulse/AGENT_BUILDER_GUIDE.md - Agent Builder configuration
- eventpulse/PRD.md - Product requirements
- eventpulse/MVP_IMPLEMENTATION_PLAN.md - MVP implementation plan
This project consists of two parts: the frontend (ChatKit) and the backend (MCP Server). Both need to be running.
Before you begin, make sure you have:
- Node.js 18 or higher installed on your computer
- Python 3.8 or higher installed for the backend
- OpenAI API Key with access to Agent Builder
- Supabase account with database credentials
- Agent Builder workflow configured (refer to eventpulse/AGENT_BUILDER_GUIDE.md)
The MCP Server handles database operations, AI analysis, and receives webhook calls from Google Forms.
Navigate to the MCP server directory and install Python dependencies:
cd mcp-server
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txtCreate the backend environment file:
cp .env.example .envEdit .env and add your credentials:
# OpenAI API Key (for AI analysis)
OPENAI_API_KEY=sk-proj-your-api-key
# Supabase Database
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-supabase-service-role-key
# Server Authentication Token
MCP_SERVER_TOKEN=your-secure-token-hereRun the FastAPI server:
uvicorn app.main:app --reloadThe backend will start on http://localhost:8000. You can verify it's running by visiting:
- Health check: http://localhost:8000/health
- API tools: http://localhost:8000/mcp/tools
Important: Keep this terminal running. The backend must be active to handle webhook calls from Google Forms and process feedback data.
Open a new terminal (keep the backend running), navigate to the project root, and run:
cd /Users/liutonghao/Desktop/Ella_Project/ChatKit
npm installThis will install all required packages and dependencies for the frontend.
Create a local environment configuration file:
cp .env.example .env.localThen open .env.local and add your credentials:
# OpenAI API Key (get it from https://platform.openai.com/api-keys)
OPENAI_API_KEY=sk-proj-your-api-key
# ChatKit Workflow ID (from OpenAI Agent Builder)
NEXT_PUBLIC_CHATKIT_WORKFLOW_ID=wf_your-workflow-id
# EventPulse MCP Server URL (use localhost for local development)
NEXT_PUBLIC_MCP_SERVER_URL=http://localhost:8000
# MCP Server Bearer Token (must match the token in backend .env)
NEXT_PUBLIC_MCP_SERVER_TOKEN=your-secure-token-hereRun the following command to start the application:
npm run devThe frontend will start on http://localhost:3000. Open this URL in your web browser to access EventPulse.
Try these example commands to verify everything is working:
- "Create a new customer event" - Creates an event with participants
- "Show all my events" - Displays all stored events
- "Analyze event with ID [event-id]" - Generates AI-powered feedback analysis
- "Get analysis for event [event-id]" - Retrieves previously stored analysis
To run the full system locally, you need TWO terminals:
Terminal 1 - Backend:
cd mcp-server
source venv/bin/activate
uvicorn app.main:app --reloadTerminal 2 - Frontend:
npm run dev# Build frontend for production
npm run build
# Start frontend production server
npm start
# Run frontend code linter
npm run lintβββββββββββββββββββββββββββββββββββ
β ChatKit Frontend (This Repo) β
β - Next.js + React β
β - Conversational UI β
β - Client-side functions β
ββββββββββββββ¬βββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββ
β Agent Builder Workflow β
β (OpenAI Platform) β
β - AI conversation routing β
β - Function calling β
ββββββββββββββ¬βββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββ
β MCP Server (FastAPI) β
β - Event CRUD operations β
β - Feedback storage β
β - AI analysis β
β - Database queries β
ββββββββββββββ¬βββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββ
β Supabase (PostgreSQL) β
β - Event data β
β - Feedback responses β
β - Analysis results β
βββββββββββββββββββββββββββββββββββ
Frontend (This repository):
- Uses client-side functions to handle tool calls from Agent Builder
- Functions:
store_event,get_events,analyze_event,get_analysis - Location:
components/ChatKitPanel.tsx(lines 288-354) - Communication: Calls MCP Server REST API endpoints
Backend (Separate MCP Server repository):
- Uses MCP (Model Context Protocol) tools
- Exposes REST API endpoints at
/mcp/tools/{function_name} - Handles database operations and business logic
- See eventpulse/API_DOCUMENTATION.md for details
- Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS
- UI Component: @openai/chatkit-react
- Agent Platform: OpenAI Agent Builder
- Backend: FastAPI (Python) MCP Server (separate repository)
- Database: Supabase (PostgreSQL)
- Automation: Zapier (optional)
ChatKit/
βββ app/ # Next.js App Router
β βββ api/
β β βββ create-session/ # ChatKit session endpoint
β βββ App.tsx # Main application component
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
βββ components/ # React components
β βββ ChatKitPanel.tsx # Main ChatKit integration
β βββ ErrorOverlay.tsx # Error handling UI
βββ lib/
β βββ config.ts # App configuration (prompts, theme, greeting)
βββ hooks/
β βββ useColorScheme.ts # Theme management
βββ eventpulse/ # π Complete documentation
β βββ README.md # Project overview
β βββ PRD.md # Product requirements
β βββ TECHNICAL_SPEC.md # Technical architecture
β βββ AGENT_BUILDER_GUIDE.md # Agent Builder setup
β βββ API_DOCUMENTATION.md # MCP Server API
β βββ DATABASE_SCHEMA.md # Database design
β βββ MVP_IMPLEMENTATION_PLAN.md
βββ DOCUMENTATION.md # π Documentation index
βββ .env.local # Environment variables (create from .env.example)
# Test 1: Create Event
User: "Create a new event called 'Team Workshop' on March 20th"
Expected: Event created confirmation
# Test 2: View Events
User: "Show all my events"
Expected: List of all events
# Test 3: Analyze Feedback
User: "Analyze event with ID [event-id]"
Expected: AI-generated analysis with sentiment, themes, suggestions# Development mode
npm run dev
# Production build
npm run build
# Start production server
npm start
# Lint code
npm run lintBefore deploying:
- Set up production environment variables
- Configure domain in OpenAI Domain Allowlist
- Deploy MCP Server (see API documentation)
- Test all functions in production
Internal Use Only - Aetheron
Need Help? See eventpulse/README.md for complete guides and troubleshooting.