Pitch Perfect
An AI presentation and interview coach that scores both delivery and content against a customisable rubric, tracking posture and gaze privately in the browser.



Project Details
About the Project
Can an AI coach help you stop your nerves from showing?
I built Pitch Perfect, an AI coach for presentations and interviews. It evaluates how you speak — pace, pauses, eye contact, posture and pitch — and pairs it with what you say, scoring each rehearsal against a weighted rubric. It also features my mascot, Mane the lion.
Rationale
I’m currently taking the Management Communication module at SMU, and one of my struggles is not letting my fear of public speaking show when I present. I also realised that in high-stakes interviews for jobs or EXCO roles, I let my nerves get the better of me and fumble, which affects the quality of my answers.
After researching what interviewers and audiences look for, I decided to build a coach that gives me a scored evaluation of how I fared in every round.
How It Works
The app has three tabs:
- Presentation Coach — upload slides (PDF or PPTX) and a script, customise the rubric weights, rehearse on webcam and receive a scorecard with timestamped feedback tied to each criterion;
- Interview Coach — pick an industry, fill in the job details, use generated questions or write your own, and have answers evaluated on STAR structure, strategic alignment, directness and more; and
- Analytics — every session is stored locally and rolls up into trend lines and radar charts, so progress shows over time.
MediaPipe tracks posture and gaze from the camera feed, while the Web Speech API handles transcription and text-to-speech. Google Gemini then grades the transcript against the weighted rubric. Rubrics, slides and scripts arrive in different formats, so I used pdfjs-dist for PDFs and JSZip to unpack PPTX decks.
Keeping It Private
All posture, gaze and pitch analysis runs on-device, so no video is ever recorded or uploaded and no raw frames leave the browser. The Gemini API key stays fully server-side, with the model called only from server route handlers.
Project Satisfaction
I’m most proud of building a scoring system you can actually trust. Instead of letting the AI guess, I set up a check that throws out any feedback unless it points to an exact quote you actually said during rehearsal.
Biggest Challenge
Gemini overload errors and API rate limits meant some live tries returned no score, and noisy webcam data confused the model. I fixed this by summarising the raw camera stats before passing them to the model and building an offline backup engine so the app keeps working if the network drops.
I learnt that structured outputs with post-validation are non-negotiable, and that building the offline engine early made demos less stressful.
Areas for Improvement
With more time, I would add real-time nudges while you speak, such as a gentle alert when you break eye contact or start rushing. I’d also make it easier to jump straight to the weak parts of an answer, and build a dashboard for career coaches to track progress over time.