DEV Community

Karthik Rao
Karthik Rao

Posted on

Building EventMocha: An Autonomous Multi-Agent Assistant with Google ADK, Gemini Live Voice, and Workspace Automation

🚀 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 (v1v2).
    • 📅 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:

  1. Brainstorming themes and agendas in note apps.
  2. Generating copy in text-only chatbots.
  3. Designing graphics and posters in separate design software.
  4. Rendering video teasers.
  5. 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
Enter fullscreen mode Exit fullscreen mode

🔍 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 (MultimodalContentCreator and VideoGenerator) 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_targets tool 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 (v1v2v3): 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 AudioWorkletProcessor nodes 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

  1. 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.
  2. AudioWorklets Unlock Real Voice UX: Moving audio resampling off the main browser thread to Web Audio Worklets made bidirectional streaming feel instantaneous and conversational.
  3. Agent Specialization Makes Debugging Predictable: Isolating responsibilities across dedicated agents (ResearchAndPlanner, MultimodalContentCreator, VideoGenerator, and WorkspaceMCP) 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)