Train your voice. Own the room.
An open-source AI interview coach for Product Managers. Practice spoken PM interviews, stakeholder debates, and conversation roleplay with real-time STAR scoring, spaced-repetition vocabulary, and voice I/O — all in the browser.
If FluentPM helps your interview prep, please ⭐ star this repo — it helps others discover it.
📸 Screenshot / GIF coming soon. Run
npm run devto see it live in under 3 minutes.
FluentPM is an AI-powered PM interview coach that runs entirely in your browser. It uses DeepSeek (via OpenRouter) for real-time STAR framework scoring, the Web Speech API for voice input and output, and Firebase for session persistence — no backend server required.
Built for Product Managers who need to practice spoken communication under pressure: FAANG interviews, senior PM roles, or everyday stakeholder conversations. Especially useful for non-native English speakers who want structured, AI-coached repetition.
The problem: Generic speaking apps don't simulate PM-specific dynamics — stakeholder pushback, behavioral interview probing, or domain vocabulary like metrics, prioritisation trade-offs, and ownership language.
The solution: FluentPM puts you in realistic PM scenarios with AI opponents that score your STAR-format answers, probe your reasoning, track vocabulary growth, and adapt to your weak points over time.
- Arena — Real-time debate against an AI opponent. Get scored on clarity, structure, and ownership language across multiple turns.
- Interview Simulation — Full PM interview session with an AI interviewer. STAR framework scoring, follow-up probing, and detailed debrief.
- Lightning Round — Rapid-fire Q&A to practice spaced-repetition expressions under time pressure.
- Pushback Drill — Handle tough stakeholder objections with coached responses.
- Quick Drill — 30-second focused answer challenges for busy schedules.
- Podcast Sim — Upload a real conversation transcript, pick your role, tag phrases to practice, and perform your side of the conversation with AI scoring.
- Lexicon — Personal expression library with automatic AI enrichment (definition, usage examples, pronunciation tips) and spaced-repetition scheduling.
- Story Bank — Store and manage your STAR stories for behavioral interview prep.
- Custom Questions — Import your own question bank for personalized practice.
- Stats Dashboard — Session history, difficulty breakdown, scoring trends, and debrief cards.
- Progress Tracker — XP, rank progression, streaks, and achievement badges.
- League — Weekly rankings to add a competitive edge to daily practice.
| Category | Technology |
|---|---|
| Frontend | React 19, Vite 8 |
| Language | JavaScript (ES Modules) |
| Styling | Inline CSS-in-JS |
| Database | Firebase Firestore |
| Auth | Firebase Auth (Google Sign-In) |
| AI / LLM | OpenRouter API (DeepSeek Chat) |
| Speech Input | Web Speech API (SpeechRecognition) |
| Speech Output | Web Speech API (SpeechSynthesis) |
| Hosting | Firebase Hosting |
User (Google Auth)
│
▼
Firebase Auth ◄──────────────────► Firestore
│ (sessions, lexicon,
▼ progress, stories)
App.jsx (React SPA)
│
├─ Speaking input ──► Web Speech API (STT)
│
├─ AI responses ────► OpenRouter (DeepSeek)
│ ↳ System prompts with STAR scoring,
│ role isolation, feedback blocks
│
├─ TTS playback ────► Web Speech API (SpeechSynthesis)
│ ↳ 12 character voice profiles
│
└─ Session save ────► Firestore addDoc
flowchart TD
A[User speaks] --> B[Web Speech API\nSpeechRecognition]
B --> C[Transcript text]
C --> D[OpenRouter API\nDeepSeek Chat]
D --> E[AI response + score]
E --> F[Web Speech API\nSpeechSynthesis]
E --> G[Firestore\nSession saved]
F --> H[User hears AI]
G --> I[Stats & Progress\nupdated]
- Node.js 20+
- A Firebase project with Firestore and Google Authentication enabled
- An OpenRouter API key
git clone https://github.com/ashishworkacc/fluentpm.git
cd fluentpm
npm installcp .env.example .envOpen .env and fill in your Firebase config values (from Firebase Console → Project Settings → Your apps) and your OpenRouter API key.
npm run devOpen http://localhost:5173 in your browser. Sign in with a Google account to start practicing.
npm run buildDeploy the dist/ folder to Firebase Hosting or any static host.
- Voice coaching dashboard — WPM, filler word frequency, and pacing trends across sessions
- Podcast Sim history — Compare past podcast sessions and track phrase mastery over time
- Multi-language support — Practice modes adapted for non-English PM interview markets
- AI readiness score — Weekly assessment that surfaces your weakest question types and suggests a daily drill plan
Contributions are welcome. Please read CONTRIBUTING.md for setup instructions, coding conventions, and the PR process.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). If you run a modified version as a network service, you must make your source code available to users of that service.
This tool is intended for personal, non-commercial use — language learning, interview preparation, and self-improvement. Please read TERMS_OF_USE.md for the full ethical use guidelines, including attribution requirements and restrictions on commercial redistribution.
For security vulnerabilities, see SECURITY.md.
- DeepSeek / OpenRouter — LLM backbone
- Firebase — Auth and real-time database
- Web Speech API — Browser-native speech recognition and synthesis
- Vite & React — Build tooling and UI framework