Vijay Mohan Dhanwant

+91-7768888995 · vijay.mohan.dhanwant@gmail.com · linkedin.com/in/vijaydhanwant

About

Built a production voice AI pipeline handling live phone calls at sub-2-second latency, handling 5,000+ monthly callers — then migrated the entire system from AWS to Azure in one week when the client's licensing changed three weeks before handoff. 3+ years shipping at the intersection of Generative AI, voice interfaces, and cloud infrastructure. Also delivered an AI-powered restaurant SaaS platform as sole engineer, piloted across 15–20 US restaurants. Now looking to go deeper — building AI-native products and the infrastructure layer underneath them.

Technical Stack

CV / Data: OpenCV Tesseract OCR PyTorch Pandas

ML: Predictive Modelling (classification, regression, time-series), Data Mining (clustering, Apriori)

AI / LLM: OpenAI Azure OpenAI AWS Bedrock Claude AI LiteLLM RAG Systems Graph RAG Vector Databases · Prompt Loop Engineering · Evals · LLM Knowledge Graphs

Voice & STT/TTS:

Cloud & Infra:

Backend: Python FastAPI Node.js ASP.NET MVC / .NET WebSockets

Frontend / Mobile: React Streamlit · iOS/Android (cross-platform)

Real-Time Voice AI Pipeline for a Genesys Contact Center

GenAI Engineer · e-Zest (Accion Labs) · Dec 2025–Present e-Zest is an Accion Labs company, a technology services firm. Owned the complete cloud pipeline within a cross-functional team — BA, tester, Genesys dev (team lead), project manager, client manager, solutions architect — as the sole AI/cloud/voice engineer.

flowchart TD
    A[Caller] --> B[Genesys]
    B --> C[Audio Connector]
    C --> D["Decrypt & Stream PCM Audio"]
    D --> E["Azure STT (Streaming)"]
    E --> F{"Needs LLM?"}
    F -- Yes --> G["Prompt LLM\n(streaming out)"]
    F -- No --> H["Workflow Logic\n(deterministic)"]
    G --> I["TTS\n(parallel streaming)"]
    H --> J[Cached TTS]
    I --> K[Stream Audio Back to Caller]
    J --> K
    K --> L[Conversation Logs + Outcomes]
    L --> M["Eval Sets ← Human Review"]
    M --> N[Prompt & Flow Refinement]
    N --> G
      

How it started — and why the architecture changed.

Constraining the LLM for a live phone line.

Keeping it fast without burning inference cost.

Choosing the production model with data.

Shipping iteratively, not just once.

Making the system better over time.

Hiding a 12-second upstream bottleneck.

Migrating the entire pipeline in one week — with AI-accelerated development.

Other work under the same engagement.

AI-Powered Restaurant Management Platform

Data Scientist → Full-Stack AI Engineer · Nice Software & Solutions · Oct 2024–Nov 2025 · Nagpur · dineai.ai

flowchart TD
    CA["Customer App\n(iOS/Android)"] --> BE
    WA["Waiter App\n(iOS/Android)"] --> BE
    OP[Owner Management Portal] --> BE

    subgraph BE["FastAPI Backend (Multi-tenant)"]
        subgraph REC[Recommendation Engine]
            Q[Query] --> ID["Intent Detection\n(guardrails)"]
            ID --> RH[Request Handlers]
            RH --> DN[Date Night]
            RH --> AF[Allergen Filter]
            RH --> GP[Group Party]
            DN --> DBF["DB Flags + LLM\n(cached prompts + Redis)"]
            AF --> DBF
            GP --> DBF
        end
        subgraph OM[Order Management]
            OMD["Tables, preferences,\nstatus, invoicing"]
        end
        subgraph AN[Analytics]
            CL[Claude AI] --> ANR["Dish performance,\nregional taste trends, revenue"]
        end
        subgraph MR[Multi-Restaurant]
            MRD["Chain → Branches → Menus"]
        end
        IMG["Image Generation · Payment Gateway"]
        AUTH["Auth: JWT · Roles · Subscription-tier access"]
    end

    BE --> PG["PostgreSQL\n(unified DB)"]
    BE --> RD["Redis (Menu Cache)"]
    PG --> DO["DigitalOcean (Nginx, SSL)"]
    RD --> DO
      
flowchart TD
    PDF[PDF Menu] --> EXT[Text-Level Extraction]
    EXT --> FIL[Menu-Relevant Filter]
    FIL --> CT{"Content Type?"}
    CT -- Image --> OCR["OpenCV + Tesseract\n(OCR pipeline)"]
    CT -- Text --> LLM["LLM Extraction\n(pattern-free parsing)"]
    OCR --> ENR["LLM Enrichment\n(spicy, allergen, dietary,\ncuisine type, flavor profile)"]
    LLM --> ENR
    ENR --> FC{"Flags complete?"}
    FC -- Yes --> OUT["Structured Menu + Flags\n→ DB + Redis"]
    FC -- No --> OWN["Owner Portal\n(manual flag entry)"]
    OWN --> OUT
      

AI layer across the product.

Menu digitization and data enrichment.

Multi-restaurant and menu management.

Backend and infrastructure.

Shipping and feedback.

Conversational IVR Assistant Over a Real Phone Line

Independent Build · Aug 2026 · GitHub

flowchart TD
    PC[Phone Call] --> VP["Vapi (Telephony)"]
    VP --> LG["LangGraph (Stateful Flow)"]
    LG --> VER[Verification]
    LG --> ACT["Account Actions\n(password reset,\ncontact update,\nticket status)"]
    VER --> MCP["MCP Server\n(CRM Access)"]
    ACT --> MCP
      

Key Highlights from Earlier Freelance Work

All clients are available to provide referrals and recommendations on request.

Hamsterit · Data Scientist [Freelance] · Feb–Jun 2024 · Finland (Remote)

DoubtBuddy · Data Scientist [Freelance] · Nov 2023–Feb 2024 · Remote

EpowerX · Data Scientist [Freelance] · Jul–Nov 2023 · Bangalore (Remote)