How purvanshbhatt/interview-ghost works
Ghost is a multi-surface interview and meeting copilot: users capture screen and/or conversation audio, choose an assistance mode, receive streamed AI suggestions, and can retain transcripts or meeting notes. Desktop orchestration is centered in main.js; the extension and mobile app have separate capture, AI, and storage paths. The README documents additional modes and platform features not fully represented in the sampled source; those are included where their source paths are supported, without asserting unsampled call wiring.
Main entry points: main.js Session orchestration · SessionScreen.tsx Live session · service_worker.js Capture and suggestion control · llm-client.js Provider streaming
Components 28
Desktop App
- Session orchestration
main.js - HUD and dashboard
renderer/renderer.js - Screen context
src/screen.js - Speech transcription
src/stt.js - Local Whisper
src/local-whisper-transcriber.js - Whisper models
src/whisper-model-manager.js - Interview context
src/context.js - LLM streaming
src/llm.js - Notes and transcripts
src/notes.js - Session state
src/store.js
Browser Extension
- Meeting-tab HUD
extension/content/content.js - Capture and suggestion control
extension/background/service_worker.js - Tab audio capture
extension/offscreen/offscreen.js - Provider streaming
extension/lib/llm-client.js - Mode prompts
extension/lib/prompts.js - Settings and session
extension/lib/storage.js
Mobile App
- Mobile navigation
mobile/App.tsx - Live session
mobile/src/screens/SessionScreen.tsx - Audio capture
mobile/src/services/audio-capture.ts - Audio transcription
mobile/src/services/stt-service.ts - Interview context
mobile/src/services/context-builder.ts - LLM streaming
mobile/src/services/llm-service.ts - Mode prompts
mobile/src/services/prompts.ts - Settings and sessions
mobile/src/services/storage.ts
Other components
- Desktop user
- AI providers
- Browser user
- Mobile user
Connections 31
- Desktop user → HUD and dashboard: uses
- HUD and dashboard → Session orchestration: sends actions
- Session orchestration → Screen context: captures context
- Session orchestration → Speech transcription: transcribes audio
- Session orchestration → Local Whisper: routes local audio
- Session orchestration → Whisper models: manages models
- Session orchestration → Interview context: builds context
- Session orchestration → LLM streaming: requests suggestions
- LLM streaming → AI providers: streams requests
- Session orchestration → Notes and transcripts: persists notes
- Session orchestration → Session state: updates state
- Session orchestration → HUD and dashboard: sends updates
- Browser user → Meeting-tab HUD: uses
- Meeting-tab HUD → Capture and suggestion control: sends actions
- Capture and suggestion control → Tab audio capture: starts capture
- Tab audio capture → Capture and suggestion control: sends transcript
- Capture and suggestion control → Provider streaming: requests suggestions
- Provider streaming → Mode prompts: builds prompt
- Provider streaming → AI providers: streams requests
- Capture and suggestion control → Settings and session: reads and writes
- Capture and suggestion control → Meeting-tab HUD: dispatches updates
- Mobile user → Mobile navigation: uses
- Mobile navigation → Live session: opens session
- Live session → Audio capture: captures audio
- Live session → Audio transcription: transcribes audio
- Live session → Interview context: builds context
- Live session → LLM streaming: requests suggestions
- LLM streaming → Mode prompts: builds prompt
- LLM streaming → AI providers: streams requests
- Live session → Settings and sessions: saves session
- Mobile navigation → Settings and sessions: loads settings