Gaurang Joshi
CASE STUDIES

The work,
taken apart.

Five systems: the problem each one started from, the architecture, where the models sit, and what shipped.

01 / VOICE AI
OPENAI AGENTSVONAGE VOICE APIGOOGLE STT / TTSNODE.JS · EXPRESSWEBSOCKET

An AI agent that answers the phone and books the appointment.

PROBLEM

Booking a vehicle service appointment required a human agent to answer calls, collect customer and vehicle details, and confirm booking slots. Time-consuming, repetitive, and limited to business hours.

APPROACH

A voice assistant that receives live calls, talks to customers naturally, and books appointments autonomously. Available 24×7, handling multiple concurrent calls, doing what a human agent would do.

WHERE THE MODELS SIT

OpenAI Agents carry the conversation and the booking logic. The agent reads intent, asks the questions it needs, and collects customer, vehicle and service details. Tool-functions cut token usage and handle context switching.

Customer and vehicle history is reused for returning callers, so the agent stops asking for what it already knows.

HOW IT WORKS

  1. 01The customer dials a Vonage-powered line. Vonage routes live audio to the Express service, which owns session state and streaming.
  2. 02Audio packets stream over WebSocket. Google STT transcribes in real time and the transcript goes to the agent.
  3. 03The agent interprets intent, gathers what it needs, and generates the reply.
  4. 04Google TTS turns that text back into speech, returned to Vonage over the same socket so the caller hears it instantly.
  5. 05Express orchestrates the whole pipeline: call control, streaming, STT, agent, TTS, playback. When the details are confirmed the call ends and the booking is finalised in the background.

OUTCOME

Customers book service appointments without waiting for a human agent. Conversations are accurate and fast enough to feel natural, and the Express service is a modular base for CRM and service-platform integrations.

Next: multi-engine STT (Whisper, Jargonic) for noisy environments, CRM and ERP integration, multilingual support, and deeper conversation-quality analytics.

02 / PLATFORM
GOOGLE STT STREAMINGWHISPER VARIANTSNODE.JS · EXPRESSWEBSOCKETREACTPOSTGRESQL

Pulling speech-to-text out of one product and making it a service.

PROBLEM

The voice agent relied on a rigid, tightly coupled STT service. It was hard to scale or reuse elsewhere, and it struggled with multiple WebSocket clients, noise cancellation and stable real-time streaming.

APPROACH

Abstract STT into a standalone, decentralised, data-centric microservice. Plug-and-play real-time transcription that any project can integrate without knowing anything about audio streaming or provider internals.

ARCHITECTURE

  1. 01A thin abstraction over Google’s streaming STT API with connect, close, writeToStream and stopStream, emitting events like stt_started, transcript and user_speaking.
  2. 02Clients authenticate with an API key and secret pair; JWT access tokens control session authorisation.
  3. 03WebSocket connection handling with automatic queuing and fair allocation under load. Queued clients are told they are queued and auto-connected when capacity frees up.
  4. 04A React developer portal for sign-up, application creation, key and secret management, API docs and usage stats.
  5. 05A modular socket handler so engines can be swapped or benchmarked. Google STT is the production engine; Faster-Whisper, fine-tuned Whisper and IBM Granite are used internally for testing.

WHY IT MATTERS

One service architecture now serves multiple applications instead of each one repeating the setup. That is the difference between a feature and a platform, and it is the decision I would defend hardest on this project.

OUTCOME

A production-ready, low-latency STT service backing multiple applications, with client integration and resource management simplified and one portal for configuration and monitoring.

Next: an analytics dashboard for transcription quality and latency, multi-language support, and quality-of-service management to prioritise premium users in the queue.

03 / AI + 3D
OPENAI AGENTSREACT · TYPESCRIPTNODE.JS · EXPRESSMYSQLSTRIPEGLBOAUTH

Animated avatars that talk back, sold by subscription.

PROBLEM

Avatar platforms offered limited customisation and no intelligent interaction, so the experience stayed static. There was no flexible plan-based feature access or role-based restriction, which made monetisation and scaling difficult, and no simple way to export an avatar and reuse it elsewhere.

APPROACH

One platform where admins, tenants and users create, customise and manage animated avatars: Standard, Custom 3D, Stealth and Digital Human. Role-based permissions and social login (Google, Microsoft) control who can do what; each tenant manages its own team.

WHERE THE MODELS SIT

An OpenAI-powered assistant drives the conversation. Avatars respond in real time with synchronised speech and facial animation, so they read as assistants rather than graphics.

Users can capture a screenshot of any page, quiz or content and pass it to the assistant for a contextual answer, which opens up quizzes, research and web interaction.

COMMERCIAL MODEL

Subscription plans define the feature ceiling: number of avatars, digital human creation, stealth avatar access. Stripe handles checkout and subscription activation, and plan limits are applied automatically on activation. Users upgrade or downgrade at any time.

OUTCOME

Avatars export as GLB files for use in external applications, AR/VR environments, presentations and customer engagement tools, and embed directly into chat interfaces.

Tenant and admin controls cover plan configuration, role assignment and usage monitoring, which is what makes the thing sellable rather than just impressive.

04 / PRODUCT
NODE.JS · EXPRESSREACTMYSQL · SEQUELIZEDYNAMIC QRVCFJWTAWS S3

A business card that updates itself.

PROBLEM

Printed cards get lost, cannot be updated without reprinting, and tell you nothing about who looked at them. Sharing details over email or chat is slow and error-prone, and the whole workflow usually spans several tools.

APPROACH

A digital business card platform where individuals and businesses create, customise and share contact details, combining dynamic QR codes, real-time scan tracking and vCard generation in one place.

HOW IT WORKS

  1. 01The user signs in to the React portal, enters their contact details, and customises layout, theme and branding with a live preview.
  2. 02The Express backend validates the input and generates a dynamic QR code that resolves to the card or downloads the contact as a VCF file. The same code shares over SMS or WhatsApp.
  3. 03The card downloads as a vCard for saving straight to a device, compatible with the major phone and email clients.
  4. 04Print-ready, high-resolution QR exports keep the code sharp and the branding consistent on physical cards, posters and brochures.

OUTCOME

Cards are created, customised and shared instantly, and the QR codes scan across platforms. Secure REST endpoints cover creation, customisation and analytics retrieval, with JWT authentication and S3 for media and downloadable files.

The Express backend leaves room for the obvious next moves: deeper analytics, third-party integrations and enterprise features.

05 / TRANSLATION AI
GPT-4WHISPERNESTJSREACTWEBRTCSOCKET.IOPOSTGRESQL

Two people, two languages, one conversation.

PROBLEM

Language still limits who can work together. Existing options mean leaving the conversation to use a translation app, which breaks the flow of an actual discussion.

APPROACH

A multilingual chat application where everyone writes and speaks in their own language. Text and voice messages are translated in real time and delivered in the recipient’s language, as text and as synthesised speech.

WHERE THE MODELS SIT

Whisper handles speech recognition on inbound audio. GPT-4 does context-aware translation and drives natural text-to-speech generation, so a voice message arrives as both translated text and translated audio.

Recipients see the original alongside the translation, which means people pick up the other language as a side effect of using the app.

HOW IT IS PUT TOGETHER

React and WebRTC on the front end, NestJS and Socket.io behind it, with JWT auth and PostgreSQL. WebRTC carries real-time audio at low enough latency for voice exchange to feel immediate.

Users set their native language at sign-up, then create public rooms that anyone can join or private rooms protected by a password and a secure invite link. Chat data and media are encrypted in transit.

OUTCOME

A working communication bridge rather than a chat app with a translate button: text, audio and translation in one flow, for international teams, communities and educators.

Next: video calls with live subtitles, group translation where each participant receives the same message in their own language, an offline mode with preloaded models, and emotion-aware voice synthesis.