AI-powered interview prep with real-time voice, code execution, resume parsing, and grounded web search.
| Feature | Detail |
|---|---|
| 🎙️ Live Voice Interview | Real-time bidirectional audio via Gemini Live API — interruptions, transcripts, and PCM audio pipeline |
| 📄 PDF Resume Upload | PDF sent as native inline data to Gemini — no client-side parsing, full comprehension |
| 🖼️ Image Attachments | Attach screenshots, diagrams, or whiteboard photos for visual context |
| 💻 Code Workspace | Monaco-style editor with live code execution across 8 languages via Piston API |
| 🔍 AI Code Review | Structured per-language rubric scoring (JS, TS, Python, Java, Go, React, Algorithms) |
| 🌐 Grounded Web Search | Gemini + Google Search grounding for real-time fact retrieval per question |
| 🧠 Session Memory | sessionStorage-backed context: facts from each exchange are stored and recalled |
| 🤖 Dual Persona | Toggle between strict Interviewer and encouraging Tutor mode |
| ⚡ DeepSeek Fallback | If Gemini errors, automatically falls back to DeepSeek-V3 via HuggingFace Router |
| 🗺️ Maps Grounding | Geographic context queries grounded via Google Maps |
Browser (React + Vite)
│
├── App.tsx — Main UI, file upload, voice/text orchestration
├── services/
│ ├── geminiService.ts — Gemini API (text, live audio, image gen, code review)
│ ├── mcpClient.ts — MCP layer: real sessionStorage memory, Gemini search, GitHub API
│ └── compilerService.ts — Code execution via Piston API (emkc.org)
├── utils/
│ ├── ragEngine.ts — RAG orchestration: retrieves and records session context
│ └── audioUtils.ts — PCM encode/decode for Live API audio pipeline
└── components/
├── CodeEditor.tsx — Code editor + run/review panel
├── TerminalMessage.tsx — Chat message renderer (markdown, images, grounding links)
└── AudioVisualizer.tsx — Real-time waveform animation during voice mode
Prerequisites: Node.js 18+
# 1. Clone and install
git clone https://github.com/Pavithran200412/Meet-AI
cd Meet-AI
npm install
# 2. Configure environment
cp .env.example .env
# Fill in your API key (see below)
# 3. Start
npm run devCreate a .env file in the project root:
# Required — Get from https://aistudio.google.com/apikey
API_KEY=your_gemini_api_key
# Optional — Enables DeepSeek fallback + image generation fallback via HuggingFace
HF_TOKEN=your_huggingface_token
# Optional — GitHub REST API (for candidate repo fetching; public API works without this)
GITHUB_TOKEN=your_github_tokenWarning
GITHUB_TOKEN and other secrets are server-side only and must NOT be added to vite.config.ts's define block — Vite inlines define() values as literals into the client bundle.
Only API_KEY and HF_TOKEN are intentionally client-visible (this app has no backend).
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite 5, Tailwind CSS |
| AI — Chat & Reasoning | Gemini 2.5 Flash / Gemini 3.1 Pro Preview |
| AI — Voice | Gemini 2.5 Flash Native Audio (Live API) |
| AI — Image Generation | Gemini 2.5 Flash Image, Imagen 3 |
| AI — Fallback | DeepSeek-V3 via HuggingFace Router |
| Code Execution | Piston API (Python, JS, TS, Java, Go, Rust, C++, SQL) |
| Context / MCP | sessionStorage memory + Gemini grounded search |
| Deployment | Netlify |
- Type a message or upload your PDF resume via the 📎 button
- The AI reads your resume and begins a structured technical interview
- Questions adapt based on your experience, covering algorithms, system design, and your stack
- Tap the 🎙️ mic button to start a live session
- Speak naturally — the AI interrupts, asks follow-ups, and transcribes in real-time
- Tap END to stop the session
- Navigate to the Workspace tab
- Write your solution in the editor (supports 8 languages)
- Hit Run to execute against the Piston sandbox
- Hit Review to get AI-powered rubric scoring
| Type | Handled As |
|---|---|
.pdf |
Native Gemini inline data — full document comprehension |
Images (.jpg, .png, .webp, etc.) |
Visual context passed alongside the prompt |
.txt, .js, .ts, .py |
Raw text injected as file context |
The app uses a lightweight Model Context Protocol implementation running entirely in-browser:
- Memory — Each AI exchange stores a summary fact in
sessionStorage, recalled on future turns - Web Search — Queries use Gemini's Google Search grounding for live web results
- Rubrics — Per-language structured scoring rubrics (auto-selected by topic)
- GitHub — Public repo fetching via GitHub REST API