AI Companion
a companion that listens and speaks at the same time
- Client
- Ainoviq, Blackngreen's AI division
- Role
- Full-stack and AI Engineer
- Duration
- ongoing since 2026
- Delivered
- 1 Jun 2026
- Status
- live
The problem
Half-duplex voice assistants take turns: you speak, they wait, they answer. Real conversation does not work that way — people overlap, interrupt, murmur agreement while the other person is still talking. A system that can only take turns feels like a walkie-talkie, and every awkward pause reminds you what you are talking to.
Constraints
- Full-duplex means the model is listening while it is speaking, so interruption is a normal input rather than an error case
- Barge-in has to stop generation mid-sentence and keep enough context to carry on sensibly
- Latency budget is tighter than a phone call's, because overlap makes any lag audible immediately
- The failure mode of a companion is being uncanny, which is a design problem as much as an engineering one
What I did
- Built the companion around a full-duplex conversational model, so listening and speaking overlap instead of alternating
- Handled barge-in as a first-class path: generation stops, the interruption is heard, and the thread survives it
- Built the surrounding product — state, memory of the conversation so far, and the behaviour that decides when to stop
- Tuned the behaviour against recorded exchanges rather than by feel, because “does this sound natural” is not a spec
The hard part
Full-duplex changes what a “turn” even is. In a half-duplex system you can wait for silence and then act; here audio is arriving while audio is going out, so the question stops being “has the user finished” and becomes “is what they just said something I should stop for”. A cough is not an interruption. “Mm-hm” is not an interruption. “No, wait —” very much is, and you have perhaps a few hundred milliseconds to decide.
Outcome
The companion holds an overlapping conversation rather than a turn-based one, and interruption behaves the way it does between two people.
What this did not do
- This is current work at my employer. The product, its users and its numbers are not mine to publish; the engineering problem is.
- The full-duplex model itself is not mine — I built the companion around one. The work here is everything that has to be right for overlap to feel natural.
- Full-duplex is better, not solved. It still occasionally stops for a cough or talks over something it should have stopped for.
- I am one engineer on this, not the whole team.
Stack
Related results
Results
- viditparashar.meviditparashar.me › projects › conversational-agents
Conversational AI Platform — the layer other teams build voice and chat…
Case studyLive2026
1 Jul 2026 — … seems broken. Real conditions make it worse — compressed audio, a noisy line, and people who trail off mid-sentence. A working platform for building voice and chat…
- Python
- TypeScript
- Next.js
- Node.js
- LangChain
- LLMs
- +4 more
- viditparashar.meviditparashar.me › experience › ainoviq
Full-stack and AI Engineer at Ainoviq (Blackngreen) (Mar 2026 – present)
Full-timeMar 2026 – present
1 Mar 2026 — Building AI products inside Blackngreen's AI division and running several at once — an AI companion on a full-duplex model, and the automation that now handles hiring,…
- viditparashar.meviditparashar.me › projects › clinical-agents
Clinical Agent Suite — four AI agents for the parts of care that are…
Case studyShipped2025
31 Aug 2025 — … pilots, not asserted. Designed and built four separate agents — medical scribe, patient intake, clinical decision support, and medical coding — on Next.js, LangChain…
- 40%physician documentation time saved
- 4clinical agents designed and shipped
- 2academic health systems integrated
- Next.js
- TypeScript
- Python
- LangChain
- LLMs
- Node.js
- +2 more