π This app was built for entering the #AllThingsAgentic Hackathon
#
β‘ 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.
#
π Under the Hood: Key Engineering Highlights
- π¨ 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.
- π 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 (v1
β v2
β v3
): Every asset maintains complete lineage in Firestore and session state, allowing users to toggle between historical versions in the UI.
- π 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.
- ποΈ 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
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
, 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!