# Utkarsh Gual — Full Stack Developer

> 2026 CSE graduate with 20 months of production engineering across Python, Go and TypeScript at two early-stage startups. I build the agent and the platform under it: the agentic layer around a live voice product — an MCP server for Claude, in-call tool calling, multi-agent RAG with guardrails, an eval harness, multilingual analysis for Indian languages — and the durable workflow engine, Go realtime services and CI gate that keep it correct.

**Location:** Noida, IN · **Education:** B.Tech CSE (AI & ML) '26 · **Status:** Open to roles

**Contact:** [message form](/#contact) · [GitHub](https://github.com/utkarshgual7) · [LinkedIn](https://www.linkedin.com/in/utkarsh-gual) · [Résumé](/Utkarsh_Gual_Resume.pdf)

## Selected work

### AI voice agent, end to end
FinnAI · founding engineer · 2025 — 2026

An AI agent dials a candidate and holds a real conversation. I built the agent layer around it — an MCP server that exposes the agent to Claude, tool calls that fetch a client's live application status mid-conversation, multi-agent RAG over documents with guardrails, an eval harness — and the Go realtime path underneath that carries roughly 4,000 concurrent calls at production peak.

- **Problem:** A voice call is unforgiving. The agent has to answer with current data while the caller waits, in whatever language the caller actually speaks, and a stall anyone can hear is a failure.
- **Tradeoff:** For code-mixed Indian speech, rank candidate interpretations before analysis instead of trusting the model's first read — an extra pass on every call, bought 40% higher answer correctness, validated by native speakers.
- **Owned:** The agent layer (MCP server, in-call tool calling, multi-agent RAG, guardrails, eval harness), the Python post-call analysis pipeline and its multilingual fix, and the Node.js-to-Go migration of the realtime and call-status services.

[Case study](https://utkarshgual.netlify.app/work/voice-calling)

### Sequencing execution engine
FinnAI · founding engineer · 2025 — 2026

Outreach cadences run for days and touch real people — a call, then an SMS, then maybe WhatsApp. This engine holds that state and advances each step without ever double-advancing, no matter how many workers race for it.

- **Problem:** A cadence is long-lived state. Workers crash, retry, and run concurrently — and every one of those is a chance to advance a contact twice, or drop them entirely.
- **Tradeoff:** Atomic step-claim in the state machine: a worker must win a claim before it may advance. Costs a round trip on every step, buys a hard guarantee against double-advance.
- **Owned:** The engine end to end — state machine, claim protocol, concurrency control, dispatch.

[Case study](https://utkarshgual.netlify.app/work/sequencing-engine)

### My Team, and the platform under it
Opptimise AI · 2026 — present

Opptimise does behavioural analysis of teams: it scores how people work — communication, decision-making, how they handle pressure — and turns that into coaching. My Team is the release where a manager and their team see those insights about each other, through a chat companion and a manager-coaching assistant. Every surface exposes something a person would call private, so the work was mostly permission design, not screens.

- **Problem:** A behavioural score about a person is sensitive. Sharing it across a team is a feature that has to be built as a permission model, not as a UI.
- **Tradeoff:** Score sharing is consent-gated and insights are scoped to a virtual team — narrower defaults than platform-wide visibility, chosen so the sensitive path fails closed.
- **Owned:** Feature delivery end to end, the LLM coaching chatbots, the pre-production CI gate, AWS infrastructure and platform security.

[Case study](https://utkarshgual.netlify.app/work/my-team)

## Projects

### DialogLens
Game chat analytics · Project

Real-time conversational analytics for multiplayer game chat. Sentiment analysis, intent recognition and entity extraction run over streaming chat to surface how players interact and how teams coordinate.

[Case study](https://utkarshgual.netlify.app/work/dialoglens) · [dialoglens.app](https://dialoglens.app)

### UPCHAAR
AI healthcare assistant · Project

Imaging results are written for clinicians. This reads an X-ray or a report and answers in plain language — as a conversation, so the patient can ask the follow-up question a summary would leave hanging.

[Case study](https://utkarshgual.netlify.app/work/upchaar) · [upchaar.live](https://upchaar.live/) · [Source](https://github.com/utkarshgual7/upchaar)

### Smart Dakiya
AI delivery platform for India Post · Project

Most failed deliveries fail for one reason: nobody was home. This learns when a given recipient actually is, and schedules against that instead of against the route.

[Case study](https://utkarshgual.netlify.app/work/smart-dakiya) · [Live demo](https://smartaipost.onrender.com/) · [Source](https://github.com/utkarshgual7/smart-dakiya)

## Writing

- [Why the realtime path moved from Node to Go](https://utkarshgual.netlify.app/writing/node-to-go-realtime) — The workload was long-held connections, not requests. That changes which runtime is cheap — and Node was still the right first choice.
- [A state machine, not a queue](https://utkarshgual.netlify.app/writing/sequencing-engine-zero-to-one) — Building the sequencing engine from zero: why 'just use a job queue' was the wrong instinct, and what atomic step-claim actually buys you.
- [Getting an LLM to hear Hinglish](https://utkarshgual.netlify.app/writing/hinglish-post-call-analysis) — OpenAI models mis-read code-mixed Indian speech, and the wrong answer looked fluent. Ranking candidate interpretations before analysis lifted answer correctness 40%, checked by native speakers.
- [A CI gate that refuses to build](https://utkarshgual.netlify.app/writing/ci-gate-that-refuses-to-build) — Lint, a guard that the tests actually changed, unit and integration suites, migration safety — in that order, before the build step. The second one is the one that matters.

## Work experience

### Full Stack Developer — Opptimise AI
Jan 2026 — present · Bengaluru, IN

- Shipped an internal Slack bot exposing platform-wide super-admin operations, retiring the team's dependency on the Django admin console. Django, HTMX, Alpine.js, Tailwind.
- Rebuilt recruitment as a job-scoped access model across production subdomains.

### Founding Engineer — FinnAI
Jan 2025 — Jan 2026 · Bengaluru, IN

- Built the no-code sequencing canvas (Next.js/TypeScript, xyflow) so non-engineers could author cadences without a deploy.
- Engineered the Python post-call-analysis pipeline — transcription and LLM evidence extraction — driving automated sequence advancement, and cut AI-copilot token cost ~17%.

### B.Tech, Computer Science & Engineering (AI & ML) — J.S.S. Academy of Technical Education
2022 — 2026 · Noida, IN

- Finalist, Sprinthacks Hackathon. Institutional round qualifier, Smart India Hackathon 2024.

## Stack

- **Languages:** Go · Python · TypeScript · JavaScript · SQL
- **Services:** Django · FastAPI · Node.js · Express · Next.js · REST · WebSockets · event-driven
- **Data & infra:** PostgreSQL · Redis (Cluster, Streams, ZSET) · MongoDB · Azure Service Bus · FAISS · Pinecone
- **Cloud & ops:** AWS (ECS, Lambda, IAM, SSM) · Azure · Docker · GitHub Actions · CI/CD · Vercel
- **AI:** LLMs · RAG · MCP · tool calling · multi-agent · guardrails · evals · OpenAI · Claude · Hugging Face · speech-to-text
