← Back to Portfolio

Call The Score

A voice-activated scorekeeper with client-side AI for toxicity detection in casual games.

Call The Score Logo

About

I created Call The Score after noticing how often my friends and I forgot the score during intense ping pong games. Since we usually counted the score out loud anyway, I thought, why not build a web app to do it for us?

The app uses browser-based speech recognition to respond to natural voice commands like "Red point" or "Blue point," so players can focus on the game instead of remembering the score. I also added a toxicity analysis feature that monitors live conversation and displays a real-time "toxicity score" to promote more respectful gameplay.

I still use Call The Score whenever I play ping pong or badminton. It is built as a Progressive Web App, so you can add it to your home screen for quick access. On iPhone, just tap the share icon and choose "Add to Home Screen", and use in landscape mode. Try it out here!

Features

Voice-Activated Scoring

Score tracking using natural speech commands.

Toxicity Monitoring

AI-powered conversation sentiment analysis with visual toxicity gauge

Manual Controls

Traditional touch/click controls as backup to voice commands.

Cross-Platform Compatibility

Works on any device with a modern web browser.

Technologies Used

React

React

Framework

Web Speech API

Web Speech API

Speech Recognition

Hugging Face

Hugging Face

AI/ML

Xenova Transformers

Xenova Transformers

Library

GitHub Pages

GitHub Pages

Deployment

What I Learned

I discovered the power of running machine learning models directly in the browser using Xenova Transformers, eliminating the need for backend infrastructure. The real challenge was maintaining smooth performance while processing live audio transcripts in real-time. Building the toxicity detection system involved creating a weighted scoring algorithm that analyzes speech for "toxic" language. I then translated these scores into an animated gauge that responds to the conversation intensity.

I dove deep into the Web Speech API to understand how browser-based speech recognition works. The biggest challenge was dealing with inconsistent support across different devices and browsers, which pushed me to develop fallback strategies and different error handling systems.

This project taught me responsive design goes far beyond standard breakpoints. I spent considerable time solving the unique challenge of mobile landscape orientation, where screen height becomes extremely constrained. It required creative layout solutions and multiple iterations to get right.