How We Built Elevate's AI Coaching Avatar: Four Subsystems, Under Two Seconds
Elevate wanted an AI avatar people could practice with, built for coaching and roleplay. That meant reading how someone said a thing, and not only what they said. We built an interface accepting voice and video input, analyzing sentiment and emotion in both, factoring that reading into the coaching response, then delivering it through speech synthesis with facial recognition keeping the avatar’s expression aligned to the audio. Four subsystems, orchestrated through LangChain, returning a full response in under two seconds.
Elevate set out to make human-AI interaction useful for coaching and roleplay, the contexts where practice matters more than information retrieval.
That ambition carries a specific technical requirement. Coaching depends on how a person says something. A hesitation, a rising tone, a defensive expression: those carry most of what a human coach actually responds to, and a text interface discards all of them before the model sees anything.
Elevate came to us with the product concept and a clear read on where the difficulty sat. Every individual capability was available. Making four of them behave as one conversation was the build.
A person typing a question sends the words. A person speaking the same question sends the words, the pace, the tone, and the expression on their face.
Every interface built on a text box throws that away and answers as though the question means the same thing regardless of the state of the person asking. For general information retrieval that is an acceptable trade. For coaching and roleplay it removes the product, because how someone says a thing is what a coach is responding to.
Building the alternative means solving four problems at once. Understanding speech. Reading sentiment across voice and video. Generating a response calibrated to that reading. Rendering it through a synthesized voice and a face that does not look wrong.
The compounding difficulty is that all four run in sequence inside one conversational turn. A delay or mismatch anywhere in that chain never reads to the user as one weak component among three strong ones. It reads as a broken avatar.
That framing shaped the whole build. Each subsystem here is individually solvable with available technology, and the difficulty is sequencing them inside a single turn fast enough that the conversation holds.
We used LangChain so the flow from input through sentiment analysis to response generation stayed one managed pipeline. Independent service calls are simpler to build and impossible to keep inside a latency budget.
Voice and video are both captured and both feed the sentiment read. Reading emotional state from tone and expression together is more reliable than either alone, particularly where the two disagree.
Sentiment had to feed generation. Detecting frustration is worthless if the response is composed identically either way, so we wired the emotional reading into the prompt context and the model treats it as an input.
Under two seconds was set as a constraint at the start and built toward throughout. In coaching and roleplay, a pause long enough to notice ends the immersion the product depends on.
Responses are delivered as speech, which removes the reading step and keeps the interaction conversational.
Facial recognition drives the avatar's expression against the synthesized audio, with no generic animation loop underneath. When an avatar's expression drifts out of sync with its voice, people stop trusting it, and they do so faster than they would forgive a wrong answer.
Every component served one conversational turn completing in under two seconds.
We built the orchestration pipeline end to end before refining any single subsystem. That order is counterintuitive, and it was the right call.
The reason is that each of the four capabilities validates cleanly in isolation. Sentiment analysis reads emotion correctly. The model generates good responses. Synthesis produces natural speech. Facial recognition tracks accurately. Then they run in sequence, total latency lands at five seconds, the sentiment read arrives after generation has already started, and the avatar’s mouth finishes moving before the audio does. None of those problems exist at the component level.
Tuning therefore ran across all four stages at once. Improving sentiment accuracy by adding a processing step costs latency that comes out of the synthesis budget. The subsystems trade against each other, and optimizing any one in isolation degrades the whole.
Of all those decisions, the sentiment-into-generation wiring was the one that made it a coaching product. Systems that detect emotion and then generate a response independently of that detection are common, and they produce the uncanny experience of an avatar that visibly notices you are frustrated and then answers as though it had not. Injecting the emotional reading into the prompt context means the model composes with it.
Facial synchronization came last in the build order and matters more than its position suggests. Users cannot articulate this component and immediately distrust it when it is wrong. Aligning facial position to the synthesized speech output is what moved the avatar from obviously artificial to acceptable.
Underneath all of it, the architecture keeps model selection separate from the multimodal layer, so Elevate can change the underlying language model without rebuilding the pipeline. Given how quickly model pricing and capability shift, that separation is worth more over time than any single model choice.
A user speaks to the avatar and it answers in a voice, with an expression matching what it is saying, calibrated to how the user sounded. Video input gives it a second reading on emotional state. The full turn completes in under two seconds, which is the threshold where a roleplay stays immersive.
For coaching and micro-learning, that speed is the product. A practice conversation that pauses is a practice conversation the user stops treating as practice.
Elevate can change the underlying language model without rebuilding the pipeline, because LangChain keeps model selection separate from the multimodal layer. As models get faster and cheaper, the latency budget gets easier to hold and no rebuild is required to benefit.
"AppVerticals delivered an AI avatar interface that accepts both voice and video input, analyzes sentiment and emotion, and adjusts its coaching response to match. Responses come back in under two seconds, which is what keeps a roleplay session feeling uninterrupted. We have been very pleased with the result and would recommend AppVerticals to teams building conversational AI."
We have orchestrated speech, sentiment, generation, and synthesis into a single sub-two-second turn. We know what this takes.
Start the conversation