Learn the language of emergencies.
Inspiration
911 dispatchers are incredibly important to our society, yet the systems in place to support them are so outdated.
It takes 1.5 years to hire, recruit, and train a single dispatcher, since emergency services must hold lengthy practice roleplays and even longer on-the-job situation training. This friction leads to a chronically understaffed dispatcher force. In fact, in peak hours around 5:00pm, people need to wait up to 11 minutes just to have their call answered. These are 11 critical minutes where a victim could be suffering from injuries, and a suspect could be fleeing.
What it does
We built Duolingo for dispatchers. Learning the language that saves lives.
dispatchlingo aids dispatcher training by providing a variety of real-time AI training situations. The trainee receives a call from a low-latency ElevenAgent tuned to a panicked attitude to mimic real human reactions to emergency situations like robberies and house fires. As the trainee responds to the call and fills in crucial situation information, Presage is used to monitor vitals such as heart rate, breathing rate, and facial expression. Combining the three, dispatchlingo uses a complex formula to calculate a composure score that decreases as the dispatcher trainee becomes more nervous. As the trainee's composure score decreases, the ElevenAgent is prompted to become more distressed, similar to a human caller's reaction to a nervous dispatcher.
After the call, the trainee is evaluated based on 3 factors:
- Their average composure score
- Text response analysis with Google Gemini
- Their accuracy when taking down Incident Details
Upon passing a scenario, the dispatcher is directed to a more difficult and complex situation, ensuring a thorough education.
How we built it
Presage
Predicts heart rate and breathing rate, and this information is not only displayed on screen; it is crucial to the course: Composure tracking Call evaluation Caller reaction to stress
ElevenLabs
Each situation is a separate ElevenAgent To create the most realistic and panicked tone, each agent is trained on a nervous voice, and the following settings are applied:
- Model = Eleven Flash v2.5
- LLM temperature = 1
- Eagerness = Eager
- Take turn after silence = 1 second
Gemini
Grades the call once the trainee hangs up. The transcript, the trainee's incident notes, and a vitals summary go to Gemini with a fixed JSON schema. It scores their responses, covering what they did well and what to improve, and it scores incident accuracy by comparing their answers against the scenario's ground truth.
Auth0
Handles sign-in through Universal Login, Google, SSO, and passwordless. It is enforced on every route, and it always keeps a "Try the demo, no login" guest path.
Next.js + React
The frontend plus a thin Node backend. Webcam frames stream at about 30 fps to a long-lived Node process that holds a per-session Presoll back at 1 Hz. Voice runs between the browser and ElevenLabs over WebRTC, and the server only mints the token and never touches the audio.
Composure engine
Ties Presage and ElevenLabs together.g, and facial tension collapses into one composure score of red, amber, or green. A director state machine sends silent [DIRECTOR] cues to the caller during the call. When the trairades and panics are harder. When the trainee stays calm, the caller stabilizes. The trainee's own body sets the difficulty in real time, and this loop is the product.
Challenges we ran into
- Implementing Presage on the web
- Engineering realistic, panicked, and low-latency ElevenAgent tones
Log in or sign up for Devpost to join the conversation.