Inspiration

High-stakes meetings often leave us wondering if we were clear or professional. I wanted to build a "communication copilot" that provides immediate, objective coaching to boost communication confidence in real-time.

What it does

It acts as a live coach that listens to your speech, transcribes it using Gemini’s Native Audio, and delivers actionable feedback on tone, clarity, and professionalism every 15 seconds via text and voice.

How we built it

Built with FastAPI and the Google GenAI SDK. We utilized Gemini 2.5 Flash Native Audio for low-latency streaming and deployed the containerized app on Google Cloud Run with session affinity for stable WebSockets.

Challenges we ran into

The primary challenge was managing the bidirectional streaming state between the client and the Gemini SDK. Handling high-frequency audio input while simultaneously processing multimodal output often led to race conditions and synchronization drifts. To overcome this, I decoupled the audio ingestion from the AI processing logic by implementing an asynchronous buffer queue. By batching these audio chunks and managing them through an orchestrated pipeline, I significantly minimized stream interruptions and ensured that Gemini’s feedback remained consistent and contextually aligned, even under varying network conditions.

Accomplishments that we're proud of

Successfully implementing a full-duplex, real-time multimodal pipeline that handles audio collection and AI analysis concurrently without blocking the UI, providing a seamless user experience.

What we learned

I learned that building a real-time multimodal agent is less about the AI's intelligence and more about the orchestration of data streams. Managing a full-duplex connection taught me the critical importance of decoupling ingestion from processing to maintain system stability. I realized that without a robust buffering strategy, even the most advanced LLM can suffer from synchronization drifts. Additionally, I gained deep insights into resource lifecycle management within a serverless environment like Cloud Run, specifically how to handle long-lived stateful WebSockets while ensuring high availability.

What's next for AI Communication Copilot

Color Feedback: I plan to implement a dynamic UI that changes color (e.g., Green for confident, Red for aggressive) based on real-time sentiment analysis.

Built With

Share this project:

Updates

Submission history