🚀 This app was built for entering the #AllThingsAgenticHackathon
⚡ TL;DR
- What it is: EventMocha ☕ is an autonomous, full-stack multi-agent assistant that transforms high-level event concepts into complete, production-ready promotional campaigns and scheduled calendar workflows in real time.
-
Key Capabilities:
- 🎨 Multimodal Generation: Interleaved HTML copy, Imagen visual posters, and cinematic Veo video teasers.
- 🔄 Targeted Revisions: Visual reference conditioning, copy preservation, and full version history tracking (
v1→v2). - 📅 Workspace Automation: Automated creation of Google Calendar events, Google Tasks, and Gmail drafts via Model Context Protocol (MCP).
- 🎙️ Live Voice: Real-time bidirectional voice conversation via Gemini Live API + Web AudioWorklets.
- Core Tech: Google ADK (Python), Gemini 3.7 Flash, Gemini 2.5 Flash, Imagen, Veo, React 19, FastAPI, Cloud Firestore, GCS.
💡 The Problem: The Fragmented Chaos of Event Planning
Planning any event — whether a 500-person developer conference, a community workshop, or a product launch — usually requires juggling multiple disconnected tools:
- Brainstorming themes and agendas in note apps.
- Generating copy in text-only chatbots.
- Designing graphics and posters in separate design software.
- Rendering video teasers.
- Manually entering calendar blocks, task checklists, and email invite drafts.
When feedback arrives ("Can we make the poster darker and update the date?"), the entire manual cycle repeats.
I built EventMocha to bridge this gap. It acts as an autonomous creative agency and coordinator in a single continuous session.
🏗️ Multi-Agent Architecture
EventMocha is built on a modular multi-agent system powered by the Google Agent Development Kit (ADK) and the Gemini 2.5 / 3.7 Flash model family.
Orchestrator / VoiceOrchestrator (Root Agent)
├── EventInfoGatherer → Friendly multi-turn discovery, captures event details into session state
└── ContentPipeline → Sequential pipeline (ContentGenerationManager & ResponseFormatter)
└── ContentGenerationManager → Coordinates creative synthesis and workspace execution
├── ResearchAndPlanner → Real-time Google Search grounding & strategic blueprints
├── MultimodalContentCreator → Interleaved rich HTML copy, social posts, posters, email invites (Imagen)
├── VideoGenerator → Cinematic HD event teaser videos rendered via Veo
├── ProductivityCreator → Structured productivity payloads for schedule and task items
└── WorkspaceMCP Client → Executes Google Calendar, Tasks, and Gmail actions via Model Context Protocol
🔍 Under the Hood: Key Engineering Highlights
1. 🎨 Symmetrical Multimodal Pipeline (Imagen & Veo)
To keep persistent session state lightweight and prevent token bloat, I designed a symmetrical after_model_callback architecture:
-
Copy & Placeholder Generation: Specialist agents (
MultimodalContentCreatorandVideoGenerator) output rich HTML copy alongside placeholders. - Callback Media Generation: An asynchronous callback intercepts these placeholders, triggers Google GenAI / Imagen for visuals and Google Veo for 720p HD video teasers, uploads assets directly to Cloud Storage (GCS), and injects live media URLs into the rendered card.
2. 🔄 Targeted Revisions with Version Lineage Tracking
One of the toughest challenges in creative AI is the revision loop. If a user asks to tweak one specific asset, you shouldn't regenerate unrelated assets or discard approved copy.
-
Deterministic Staging: The
stage_revision_targetstool matches natural language critique to specific assets by title, category, or ID. - Visual Reference Conditioning: When revising an image, previous version image bytes are passed to Imagen as conditioning context to preserve composition and character consistency.
- Copy Preservation & Reuse: If only copy changes, existing media URLs are preserved without triggering expensive re-rendering.
-
Version History (
v1→v2→v3): Every asset maintains complete lineage in Firestore and session state, allowing users to toggle between historical versions in the UI.
3. 📅 Real-World Action via Google Workspace MCP
Content creation is paired with immediate execution. EventMocha integrates with a dedicated FastMCP server over HTTP:
- Automatically schedules Google Calendar events with proper timezone offsets.
- Populates actionable items in Google Tasks.
- Composes ready-to-send email drafts in Gmail with embedded HTML bodies.
- Uses stateless OAuth 2.1 with AES-GCM token encryption.
4. 🎙️ Low-Latency Live Voice Interaction (Gemini Live API)
Instead of relying on standard turn-based text chat, EventMocha supports bidirectional, real-time voice streaming:
-
AudioWorklet Resampling: The frontend captures microphone audio at 16kHz mono via custom
AudioWorkletProcessornodes and streams back 24kHz agent speech over WebSockets. - Dynamic Live Transcripts: Real-time speech-to-text bubbles accumulate fluidly on the screen with real-time waveform visualizers.
- Multimodal Voice Controls: Users can speak instructions while simultaneously typing, attaching images, or inspecting generated visual cards.
🛠️ Tech Stack Overview
- Frontend: React 19, Vite, TanStack Query, TailwindCSS, Web Audio API (AudioWorklet).
- Backend & Multi-Agent: FastAPI, Python ADK (Agent Development Kit), Gemini 3.7 Flash, Gemini 2.5 Flash (Live Voice API), Google GenAI SDK.
-
Storage & State: Cloud Firestore (Native Mode), Google Cloud Storage (GCS), Vertex AI Agent Engine (
VertexAiSessionService). - Integrations: FastMCP (Google Workspace), Google Search Grounding.
- Monorepo: pnpm Workspaces + Turborepo.
🚀 Key Takeaways & What I Learned
-
State Cleanliness is Paramount: Keeping heavy binary data and verbose copy out of the persistent ADK session state while relying on flat asset registries (
root_asset_id -> entry) dramatically improved routing reliability and reduced token latency. - AudioWorklets Unlock Real Voice UX: Moving audio resampling off the main browser thread to Web Audio Worklets made bidirectional streaming feel instantaneous and conversational.
-
Agent Specialization Makes Debugging Predictable: Isolating responsibilities across dedicated agents (
ResearchAndPlanner,MultimodalContentCreator,VideoGenerator, andWorkspaceMCP) made prompt iterations and tool trajectories modular and easier to trace.
💬 What are your thoughts?
I'd love to hear from the community:
- How are you approaching multi-agent orchestration and revision workflows in your AI apps?
- What features or integrations would you find most valuable in an automated event assistant?
Drop your thoughts, questions, or feedback in the comments!







Top comments (0)