Inspiration

We've all blanked during an interview or viva and wished we had a smart friend could help us with mock interview or tell us in depth . That's exactly what EasyCall is. I built it because pressure shouldn't get in the way of what you actually know.

What it does

EasyCall lets you speak naturally and get instant, smart answers in real time. Talk to it like a friend - ask anything, interrupt it, change topics ,it keeps up. There's also a live analysis panel that quietly works in the background, giving you deeper insights after each response.

How we built it

Built using Google Agent Development Kit (ADK) as the core framework, powered by Gemini Live API for real-time, natural conversation. The agent is defined using ADK's LlmAgent, which handles conversation state, context, and tool use automatically. A FastAPI backend manages WebSocket connections for live two-way communication, while the frontend provides a clean, distraction-free chat interface. The whole system is designed to be lightweight — no heavy setup, just open and chat.

Challenges we ran into

1.Setting up ADK's session management correctly so conversation context persists across turns 2.Handling real-time interruptions gracefully using Gemini Live API's streaming events 3.Getting the GOOGLE_API_KEY loaded correctly before ADK initializes agents 4.Managing WebSocket disconnections cleanly without crashing the agent session 5.Fixing encoding issues in .env files on Windows (UTF-16 vs UTF-8)

Accomplishments that we're proud of

1.Successfully integrated Google ADK with Gemini Live API for real-time streaming responses 2.Built a multi-agent architecture — a Live Agent handles conversation while a Detail Agent analyzes it after each turn 3.Achieved graceful interruption handling — the agent stops mid-response and picks up the new question instantly 4.Deployed a fully working WebSocket-based chat that feels fast and responsive 5.Kept the entire stack simple enough for anyone to run locally with just uvicorn main:app --reload

What we learned

1.How Google ADK structures agents — LlmAgent, LiveAgent, Runner, SessionService and how they connect 2.The difference between run() and run_live() in ADK and when to use each 3.How Gemini Live API handles audio transcription — both input and output in real time 4.How to pass session state between multiple agents using InMemorySessionService 5.That load_dotenv() must run before any ADK imports — order of imports matters more than expected

What's next for RealTime

1.Full voice mode — speak your question, hear Gemini answer back in real time

  1. Document upload — feed your resume, notes, or syllabus so answers are personalized
  2. Mock interview mode — ADK agent simulates an interviewer, scores your answers, gives feedback
  3. Deploy to Google Cloud Run — make it accessible from anywhere, not just localhost
  4. Mobile-friendly UI — one tap access during exams or interviews
  5. Multi-language support — powered by Gemini's multilingual capabilities

Built With

Share this project:

Updates