Inspiration

You've slept four hours, you've rehearsed the three-minute pitch, and then a judge asks "who actually pays for this?" and your mind goes blank. The pitch gets practised. The questions never do, because friends go easy on you and nobody wants to play the skeptical engineer at 3 AM.

It happened to us. In grade nine, Eric and Darren went to their first business competition. The idea was solid. But they rushed the pitch, said "um" every other sentence, and ran out of time. Then a judge asked them to explain their financials, and they both froze. They had practised the slides a dozen times. Never the questions.

We wanted something that plays the panel for you: one that has actually read your slides, asks the hard questions out loud, and tells you honestly how you did.

What it does

Tell the panel about your project by uploading your slides (PDF, up to 15), explaining it out loud, filling in a short form, or pasting text. An AI reads every slide once, including pictures and charts.

Pick your panel from four judges: an investor, a confused non-technical judge, a skeptical engineer, and a teacher. Or describe your own, like your actual professor. Set the difficulty from Friendly to Brutal, and the occasion: hackathon, class, thesis defense, demo day, or elevator pitch.

Practise two ways: Q&A practice, with one question at a time and feedback after each, or a full judging round, with a 3-minute pitch followed by 1 minute of rapid-fire questions.

See how you came across: a score, four checks (did you answer the question, use your slides, stay concise, sound confident), a follow-up question, and your transcript with filler words highlighted, plus your pace and long pauses.

How we built it

The page is plain HTML, CSS and JavaScript, no framework. pdf.js reads each slide's text and draws it as an image in the browser.

The server is five small Node functions on Vercel, one per job: read the slides, write questions, speak, transcribe, and give feedback. Only the server holds the API keys, and a shared passcode protects our credits on the public link.

The AI: Gemini 2.5 Flash (through OpenRouter) looks at the slide images once and writes a summary, including what charts and screenshots show. Every later request reuses that summary, so it stays fast and cheap.

Claude Sonnet 5.5 (through OpenRouter) plays the four judges: writing questions and grading answers. We picked it by testing four models on the same slides and the same saved answers. It asked the sharpest questions and graded a weak answer low, where the cheapest model gave it a 5 out of 10.

ElevenLabs text-to-speech gives each judge their own voice. While you answer one question, the page is already making the next question's audio, and keeps every clip so replays are free.

ElevenLabs Scribe turns your answer into text with a timestamp on every word, in verbatim mode so "um" and "uh" stay in. Our code counts fillers, words per minute and every gap of 2 seconds or more.

Challenges we ran into

Speech-to-text tools usually clean up filler words, which is the opposite of what we need. We had to make sure transcription runs in verbatim mode, and count fillers ourselves from word timestamps instead of asking the AI.

Deploying as a team. Our host blocked deploys from a private repo with two committers, so we made the repo public and deploy from the command line.

Accomplishments that we're proud of

Judges that interrupt you mid-ramble like a real panel.

Delivery numbers that are measured, not guessed: our code counts them from the word timestamps the transcription returns.

What we learned

How API keys work; how speech-to-text timestamps work; choosing an AI model by testing instead of guessing; splitting work with a written contract.

What's next for ToughCrowd

Events: organizers load their real rubric, and every team gets a practice panel before judging.

And for everyone: tracking which questions still trip you up, and a team mode where each question goes to whoever built that part.

Built With

Share this project:

Updates

Submission history