Inspiration
Enterprise compliance, auditing, and organizational policies are historically dry and frustrating to navigate. Traditional text-based chatbots often feel like glorified search bars, they lack empathy, personality, and the ability to truly collaborate. For the "Collaborative Partner" track, we wanted to build an AI that feels like a real teammate. We were inspired to bridge the gap between cold data and human interaction by creating an embodied, face-to-face virtual auditor that not only knows the rules but adapts to how you uniquely prefer to work.
What it does
Visionary Agent is an embodied 3D virtual auditor that guides users through complex compliance rules. Instead of reading blocks of text, users interact with a fully animated, voice-driven 3D avatar.
- It Knows: It uses RAG to pull grounded facts directly from organizational PDFs.
- It Learns: It actively listens for your workflow preferences (e.g., "give me bullet points," "skip the intro") and saves them to a long-term memory database, isolating those preferences to your specific session.
- It Reacts: The 3D avatar features procedural breathing, darting eye saccades, and real-time lip-syncing driven directly by the agent's synthesized voice.
How we built it
We engineered a decoupled, real-time architecture utilizing the Google Cloud ecosystem:
- The Brain (Backend): We used FastAPI and the Google Agent Development Kit (ADK) orchestrated by Gemini 3. The ADK is equipped with custom Python tools that query a Firestore Vector Database for document context, and read/write to a
user_preferencescollection to maintain state. - The Voice: We stream responses through Google Cloud Text-to-Speech, utilizing an async worker thread to chunk text and generate base64-encoded MP3 audio on the fly.
- The Face (Frontend): We built an Angular application rendering a
facecap.glbmodel using Three.js. We established a WebSocket connection to stream the audio and text seamlessly. - The Animation: Using the browser's native Web Audio API, we analyze the frequency of the incoming audio stream frame-by-frame and map the volume amplitude directly to the avatar's ARKit
jawOpenblendshape to achieve zero-latency lip-syncing.
Challenges we ran into
- TTS Hallucinations from Markdown: LLMs naturally output markdown (asterisks, hashes, bolding), which completely breaks Text-to-Speech engines, making the agent speak out punctuation marks awkwardly. We had to build a custom regex sanitization pipeline inside the backend to clean the ADK's output before synthesizing the voice.
- User Data Isolation over WebSockets: We wanted the agent to remember user preferences without forcing judges through a complex login flow. We solved this by generating an anonymous
guest_idin the browser'slocalStorageand attaching it to every WebSocket payload. On the backend, we used Python'sContextVarsto ensure the ADK tools always read/wrote to the correct user's Firestore document asynchronously. - Static "Ventriloquist Dummy" Effect: Initially, just moving the jaw made the 3D model look lifeless. We had to dive deep into Three.js math to program continuous sine-wave head swaying and randomized blendshape eye saccades to introduce procedural human "noise" to the mesh.
Accomplishments that we're proud of
We are incredibly proud of successfully transitioning from a standard prompt-response chatbot into a true Agentic workflow. By utilizing the Google ADK to orchestrate tools, the AI actively decides when to search the knowledge base and when to log a new user preference on its own. Pairing that advanced backend reasoning with a highly responsive, custom-built WebGL frontend resulted in an MVP that feels genuinely alive and production-ready.
What we learned
- The profound difference between standard LLM calls and true agentic frameworks like the Google ADK. Giving an agent its own tools changes how you architect an entire application.
- Advanced Three.js optimization techniques, including using
KTX2LoaderandMeshoptDecoderto compress 3D assets so the frontend loads instantly. - How to effectively handle streaming data over WebSockets using exponential backoff to handle transient API limits gracefully.
What's next for Visionary Agent
Our immediate next step is expanding the multimodal capabilities. We plan to integrate the user's webcam and screen-sharing, allowing the Visionary Agent to "see" the documents a user is actively auditing on their desk and offer real-time, vocal corrections. We also want to implement a seamless interruption feature, allowing users to cut the agent off mid-sentence with their microphone if they need immediate clarification.
Built With
- 3d-avatar
- agentic-ai
- angular.js
- cloud-run
- docker
- fastapi
- firebase-hosting
- firestore
- gemini-3
- google-agent-development-kit
- google-cloud
- python
- rag
- serverless
- text-to-speech
- three.js
- typescript
- vector-database
- web-audio-api
- webgl
- websockets
Log in or sign up for Devpost to join the conversation.