{"slug": "building-eventmocha-an-autonomous-multi-agent-assistant-with-google-adk-gemini", "title": "Building EventMocha: An Autonomous Multi-Agent Assistant with Google ADK, Gemini Live Voice, and Workspace Automation", "summary": "A developer built EventMocha, an autonomous multi-agent assistant that transforms event concepts into promotional campaigns and scheduled calendar workflows. It uses Google ADK, Gemini Flash models, Imagen, Veo, and Google Workspace MCP for multimodal generation, targeted revisions, and live voice interaction. The system was created for the #AllThingsAgentic Hackathon.", "body_md": "🚀 **This app was built for entering the #AllThingsAgentic Hackathon**\n\n##\n⚡ TL;DR\n\n-\n**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.\n-\n**Key Capabilities**:\n- 🎨\n**Multimodal Generation**: Interleaved HTML copy, Imagen visual posters, and cinematic Veo video teasers.\n- 🔄\n**Targeted Revisions**: Visual reference conditioning, copy preservation, and full version history tracking (`v1`\n\n→ `v2`\n\n).\n- 📅\n**Workspace Automation**: Automated creation of Google Calendar events, Google Tasks, and Gmail drafts via Model Context Protocol (MCP).\n- 🎙️\n**Live Voice**: Real-time bidirectional voice conversation via Gemini Live API + Web AudioWorklets.\n\n-\n**Core Tech**: Google ADK (Python), Gemini 3.7 Flash, Gemini 2.5 Flash, Imagen, Veo, React 19, FastAPI, Cloud Firestore, GCS.\n\n##\n💡 The Problem: The Fragmented Chaos of Event Planning\n\nPlanning any event — whether a 500-person developer conference, a community workshop, or a product launch — usually requires juggling multiple disconnected tools:\n\n- Brainstorming themes and agendas in note apps.\n- Generating copy in text-only chatbots.\n- Designing graphics and posters in separate design software.\n- Rendering video teasers.\n- Manually entering calendar blocks, task checklists, and email invite drafts.\n\nWhen feedback arrives (*\"Can we make the poster darker and update the date?\"*), the entire manual cycle repeats.\n\nI built **EventMocha** to bridge this gap. It acts as an autonomous creative agency and coordinator in a single continuous session.\n\n##\n🏗️ Multi-Agent Architecture\n\nEventMocha 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.\n\n##\n🔍 Under the Hood: Key Engineering Highlights\n\n###\n1. 🎨 Symmetrical Multimodal Pipeline (Imagen & Veo)\n\nTo keep persistent session state lightweight and prevent token bloat, I designed a symmetrical `after_model_callback`\n\narchitecture:\n\n-\n**Copy & Placeholder Generation**: Specialist agents (`MultimodalContentCreator`\n\nand `VideoGenerator`\n\n) output rich HTML copy alongside placeholders.\n-\n**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.\n\n###\n2. 🔄 Targeted Revisions with Version Lineage Tracking\n\nOne 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.\n\n-\n**Deterministic Staging**: The `stage_revision_targets`\n\ntool matches natural language critique to specific assets by title, category, or ID.\n-\n**Visual Reference Conditioning**: When revising an image, previous version image bytes are passed to Imagen as conditioning context to preserve composition and character consistency.\n-\n**Copy Preservation & Reuse**: If only copy changes, existing media URLs are preserved without triggering expensive re-rendering.\n-\n**Version History (**`v1`\n\n→ `v2`\n\n→ `v3`\n\n): Every asset maintains complete lineage in Firestore and session state, allowing users to toggle between historical versions in the UI.\n\n###\n3. 📅 Real-World Action via Google Workspace MCP\n\nContent creation is paired with immediate execution. EventMocha integrates with a dedicated FastMCP server over HTTP:\n\n- Automatically schedules\n**Google Calendar** events with proper timezone offsets.\n- Populates actionable items in\n**Google Tasks**.\n- Composes ready-to-send email drafts in\n**Gmail** with embedded HTML bodies.\n- Uses stateless OAuth 2.1 with AES-GCM token encryption.\n\n###\n4. 🎙️ Low-Latency Live Voice Interaction (Gemini Live API)\n\nInstead of relying on standard turn-based text chat, EventMocha supports bidirectional, real-time voice streaming:\n\n-\n**AudioWorklet Resampling**: The frontend captures microphone audio at 16kHz mono via custom `AudioWorkletProcessor`\n\nnodes and streams back 24kHz agent speech over WebSockets.\n-\n**Dynamic Live Transcripts**: Real-time speech-to-text bubbles accumulate fluidly on the screen with real-time waveform visualizers.\n-\n**Multimodal Voice Controls**: Users can speak instructions while simultaneously typing, attaching images, or inspecting generated visual cards.\n\n##\n🛠️ Tech Stack Overview\n\n-\n**Frontend**: React 19, Vite, TanStack Query, TailwindCSS, Web Audio API (AudioWorklet).\n-\n**Backend & Multi-Agent**: FastAPI, Python ADK (Agent Development Kit), Gemini 3.7 Flash, Gemini 2.5 Flash (Live Voice API), Google GenAI SDK.\n-\n**Storage & State**: Cloud Firestore (Native Mode), Google Cloud Storage (GCS), Vertex AI Agent Engine (`VertexAiSessionService`\n\n).\n-\n**Integrations**: FastMCP (Google Workspace), Google Search Grounding.\n-\n**Monorepo**: pnpm Workspaces + Turborepo.\n\n##\n🚀 Key Takeaways & What I Learned\n\n-\n**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`\n\n) dramatically improved routing reliability and reduced token latency.\n-\n**AudioWorklets Unlock Real Voice UX**: Moving audio resampling off the main browser thread to Web Audio Worklets made bidirectional streaming feel instantaneous and conversational.\n-\n**Agent Specialization Makes Debugging Predictable**: Isolating responsibilities across dedicated agents (`ResearchAndPlanner`\n\n, `MultimodalContentCreator`\n\n, `VideoGenerator`\n\n, and `WorkspaceMCP`\n\n) made prompt iterations and tool trajectories modular and easier to trace.\n\n##\n💬 What are your thoughts?\n\nI'd love to hear from the community:\n\n- How are you approaching multi-agent orchestration and revision workflows in your AI apps?\n- What features or integrations would you find most valuable in an automated event assistant?\n\n*Drop your thoughts, questions, or feedback in the comments!*", "url": "https://wpnews.pro/news/building-eventmocha-an-autonomous-multi-agent-assistant-with-google-adk-gemini", "canonical_source": "https://dev.to/karthikvrao/building-eventmocha-an-autonomous-multi-agent-assistant-with-google-adk-gemini-live-voice-and-1bei", "published_at": "2026-08-31 22:05:31+00:00", "updated_at": "2026-08-31 22:22:58.988815+00:00", "lang": "en", "topics": ["artificial-intelligence", "generative-ai", "ai-agents", "developer-tools", "ai-products"], "entities": ["Google ADK", "Gemini", "Imagen", "Veo", "Google Workspace", "EventMocha", "FastAPI", "Cloud Firestore"], "alternates": {"html": "https://wpnews.pro/news/building-eventmocha-an-autonomous-multi-agent-assistant-with-google-adk-gemini", "markdown": "https://wpnews.pro/news/building-eventmocha-an-autonomous-multi-agent-assistant-with-google-adk-gemini.md", "text": "https://wpnews.pro/news/building-eventmocha-an-autonomous-multi-agent-assistant-with-google-adk-gemini.txt", "jsonld": "https://wpnews.pro/news/building-eventmocha-an-autonomous-multi-agent-assistant-with-google-adk-gemini.jsonld"}}