Inspiration

Public speaking is essential for interviews, presentations, and everyday conversations, yet most people rarely practice until it matters. Coaching is expensive, practicing alone offers little feedback, and improvement is difficult to measure. So the interview or the pitch ends up being the practice run.

Inspired by Wordle and Duolingo, we wanted to make public speaking a simple, competitive daily habit.

What It Does

OneTake gives everyone in the world the same daily prompt and 30 seconds to answer it. Patty the Panda, our AI coach, scores the take and shows you exactly what to work on.

Two taps, under two minutes:

  1. Open the envelope. Today's prompt spins in, and it's the same prompt for everyone.
  2. Tap Start. Patty reads the prompt aloud and counts you in, and the camera starts on its own.
  3. Talk for 30 seconds. One take, no retakes.
  4. Get your score. Patty reads it out loud, then shows you what to fix.

What you get back:

  • A speaking score (0–100) built from eye contact, posture, gestures, filler words, and language.
  • Personalized suggestions that point to specific moments and quote your own sentences.
  • Daily leaderboards, streaks, and friend challenges to make practice competitive and social.
  • Progress tracking to see your improvement over time.

How We Built It

  • React Native + Expo: mobile interface, recording, animations, and shareable scorecards.
  • Gemini API + FastAPI: video and transcript analysis, including body language, vocabulary, sentence structure, and filler words.
  • TigerData (PostgreSQL): stores scores, speaking history, and leaderboard data.
  • ElevenLabs: gives Patty her voice, with mouth and gestures synced to every word. Also provides Frutiger Aero themed music as users wait for speech to be analyzed
  • Node.js + Hono: social features, friend challenges, and push notifications.
  • FFmpeg: fixes phone video rotation and compresses recordings for analysis.

The Math Behind the Score

Rather than letting AI make up an overall score, Gemini rates observable speaking behaviors on a 1–5 rubric, and our Python backend calculates the final result. Filler words are counted separately.

Metric Weight
Eye Contact 25%
Language 25%
Filler Words 20%
Posture 15%
Gestures 15%

1. Rubric Scores

Gemini's ratings are converted to a 0–100 scale:

$$S_i = \frac{r_i - 1}{4} \times 100$$

where \( r_i \) is the rating between 1 and 5. Language is the average of the vocabulary and sentence-structure ratings.

2. Filler Word Penalty

Fillers are counted two ways. A regex catches um, uh, er, ah and hmm, and Gemini catches the ones that need context, such as filler "like" (versus "I like pizza"), "you know", and restarted phrases. Fillers get an exponential penalty based on their frequency:

$$f = \frac{n_{\text{fillers}}}{n_{\text{words}}} \times 100$$

$$S_{\text{fillers}} = 100 e^{-0.1 \max(0, f - 1)}$$

The first filler per 100 words is free. After that, each one costs a little more of what's left: \( f = 3 \) scores about 82, \( f = 5 \) about 67, and \( f = 10 \) about 41.

3. Overall Speaking Score

The final score is a weighted average, adjusted for available metrics and a minimum-word requirement:

$$\text{Score} = g \cdot \frac{\sum_{i \in A} w_i S_i}{\sum_{i \in A} w_i}$$

where:

  • \( S_i \) = individual metric score (0–100)
  • \( w_i \) = assigned metric weight
  • \( A \) = set of available metrics
  • \( g \) = anti-gaming multiplier

The anti-gaming multiplier keeps very short or silent recordings from getting artificially high scores:

$$g = \min\left(1, \frac{n_{\text{words}}}{30}\right)$$

4. Worked Example

Take a recording with \( 135 \) words, \( 7 \) fillers, and these Gemini ratings: eye contact \( 3.8 \), posture \( 4.2 \), gestures \( 3.0 \), vocabulary \( 3.6 \), structure \( 4.0 \).

$$S_{\text{eye}} = \frac{3.8 - 1}{4} \times 100 = 70 \qquad S_{\text{posture}} = \frac{4.2 - 1}{4} \times 100 = 80 \qquad S_{\text{gestures}} = \frac{3.0 - 1}{4} \times 100 = 50$$

$$S_{\text{language}} = \frac{\frac{3.6 + 4.0}{2} - 1}{4} \times 100 = 70$$

$$f = \frac{7}{135} \times 100 \approx 5.19 \quad \Rightarrow \quad S_{\text{fillers}} = 100 e^{-0.419} \approx 65.8$$

$$g = \min\left(1, \frac{135}{30}\right) = 1$$

$$\text{Score} = 0.25(70) + 0.25(70) + 0.20(65.8) + 0.15(80) + 0.15(50) \approx \mathbf{68}$$

This keeps the scoring transparent, consistent, and explainable. The weights are provisional, and we plan to calibrate them against human raters.

Neuro Visualization: Meta TRIBE v2 + Modal GPU

We wanted to explore not just how someone speaks, but how their words might be processed by the brain. Using Meta's TRIBE v2, deployed on a Modal GPU, we analyze speech transcripts and word timings to predict patterns of brain activity.

Users can explore an interactive 3D brain, see the moments with the strongest predicted response, and examine their language's vividness and wording style.

These are model predictions, not real brain scans or validated measures of audience engagement. The feature is exploratory and does not affect speaking scores or leaderboard rankings.

Challenges We Ran Into

  • Trustworthy scoring: we kept Gemini's observations separate from deterministic math.
  • Filler detection: we combined regex with Gemini to tell filler words apart from normal vocabulary.
  • Video processing: phones store rotation as metadata, and Gemini saw our videos upside down until FFmpeg re-encoded them. Re-encoding also cut uploads from about 28 MB to 1 MB.

Accomplishments That We're Proud Of

We built a two-tap speaking experience that combines multimodal AI, explainable scoring, an animated panda coach who talks, and daily social competition, turning public-speaking practice into something people look forward to.

What We Learned

AI feedback becomes more useful when paired with measurable progress. We also learned that shared daily challenges and friendly competition motivate consistent practice.

What's Next

Integrate MediaPipe for measured body-language tracking, calibrate scores against human evaluations, and expand into interviews, pitches, and presentations.

Citations and AI Use

  • Claude (Anthropic) helped with UI design and code.
  • Gemini (Google) and ElevenLabs APIs power scoring and Patty's voice.
  • TRIBE v2 (Meta), used under CC BY-NC 4.0 (non-commercial).

Built With

Share this project:

Updates

Submission history