Mohan Kumar / AI & automation

I design,
build and ship
AI systems

Voice agents that answer real phone lines, tooling that gives coding agents real context, and the full product around them — schema, queues, dashboards, deployment. Built end to end, not prototyped.

Verified track record · Upwork

  • $100K+Delivered for clients
  • 3,400+Hours shipped
  • 100%Job success score

Top Rated Plus Top 3% of talent on Upwork

Voice AI

Phone agents that book, answer and route in real time — media streams, streaming speech, barge-in, and tool calling into the systems you already run.

Agentic systems & MCP

Tooling that gives agents context they can act on: structured traces, MCP servers, retrieval, and the evals that keep output trustworthy.

Full-stack product

The whole system, not a demo — schema, job queues, auth, dashboards, and the deployment that keeps it running at 3am.

Background

A decade of shipping software

Enterprise delivery alongside Fortune 500 engineering teams, then direct product work for US operators whose businesses run on the software every day.

Experience

10+ years in software development — enterprise delivery through to solo, end-to-end product builds

Worked with

Honeywell · Honda · Aptar — Fortune 500 engineering organisations

Direct client · Florida, USA

Eagle Club Systems

Golf course management platform — booking, membership and operations for clubs across the United States.

100+Golf courses running it

Direct client · Florida, USA

NetConnect Healthcare Systems

Patient management systems handling scheduling and records for medical practices around the country.

Multi-practiceDeployed across US practices

Patterns I deploy

Where this applies to your operation

The same building blocks land in most operations the same way: something arrives, it waits for a person, and that person reconstructs context before doing the actual work. I have built these systems. The figures are typical ranges — your own baseline is the first thing we measure.

Manual
  1. Work arrives
  2. Sits in a queue
  3. Someone gets to it
  4. Re-reads the context
  5. Handled
hours → days
Automated
  1. Work arrives
  2. Handled
  3. Exceptions to a person
seconds

Hospitality & clubs

The after-hours line

The phone competes with the person at the counter, and keeps ringing after closing.

Manual
  1. Call rings
  2. Voicemail
  3. Morning triage
  4. Callback
  5. No answer
  6. Booking lost
~14 h
Automated
  1. Call rings
  2. Live availability checked
  3. Booked + confirmed by SMS
~50 s

Typical: roughly a third of inbound calls arrive outside staffed hours; at ~80% containment on routine questions the agent pays for itself on recovered bookings alone.

B2B SaaS · support

Ticket triage and drafted replies

Most of a first response is reconstruction: who is this, what plan, what broke.

Manual
  1. Ticket lands
  2. Waits in queue
  3. Read and classified
  4. Account context dug up
  5. Reply written
~6 h
Automated
  1. Ticket lands
  2. Classified + routed
  3. Context pulled from CRM and logs
  4. Reply drafted
~4 min

Typical: ~70% of tickets carry enough context to auto-draft. A human still approves every reply — the saving is in the reconstruction, not the judgement.

Distribution & manufacturing

Invoice intake to ERP

A PDF keyed by hand into a system that already knows what was ordered.

Manual
  1. Invoice emailed
  2. Downloaded
  3. 14 fields keyed in
  4. Matched to PO by hand
  5. Posted
~7 min each
Automated
  1. Invoice emailed
  2. Line items extracted
  3. Three-way matched
  4. Exceptions to a human
~25 s each

Typical: ~8% break the match and still need a person. The rest post overnight, turning AP from a daily chore into a morning exception list.

B2B services · sales

Speed to lead

Contact rates fall off sharply after the first hour. Most inbound forms sit overnight.

Manual
  1. Form submitted
  2. Lands in CRM
  3. Next-day review
  4. Rep researches the company
  5. First email
~19 h
Automated
  1. Form submitted
  2. Enriched and scored
  3. Routed to the right rep
  4. First touch drafted
~3 min

Typical: same headcount, same pipeline — the difference is arriving while the lead is still reading your site.

Procurement & legal ops

Contract and renewal watch

Auto-renew clauses are only expensive when nobody reads them in time.

Manual
  1. Contract signed
  2. Filed to a drive
  3. Quarterly manual read
  4. Dates copied to a sheet
  5. Renewal missed
quarters
Automated
  1. Contract signed
  2. Terms, caps and dates extracted
  3. Owner alerted at 90 / 60 / 30 days
on signature

Typical: every extracted clause links back to its page and paragraph, so legal checks the source rather than trusting the summary.

Multi-site retail & field service

The exception digest

Four hours of spreadsheet assembly to answer one question: which sites need attention?

Manual
  1. Exports pulled
  2. Pasted into a sheet
  3. Anomalies eyeballed
  4. Weekly summary emailed
~4 h, weekly
Automated
  1. Nightly pull
  2. Variance against baseline
  3. Five sites named, with why
~2 min, daily

Typical: the win is not the four hours — it is that a bad week gets caught on Tuesday instead of the following Monday.

Highlights — designed and built by me

Selected systems, taken all the way

Each of these went from an empty repository to a running system: the architecture, the model pipeline, the database, the interface and the deployment. Where the hard part was not obvious, I have said what it was.

Real-time voice · golf operations

AskCaddie

askcaddie.golf — automated phone answering for golf courses, live 24/7.

  • Voice agent
  • Telephony
  • Tool calling
  • Productized
System as built
  1. Caller
  2. Twilio
  3. Streaming STT
  4. LLM + tools
  5. TTS
  6. Booking link by SMS
Problem
A pro shop counter is one or two people. Every ring competes with the golfer standing in front of them, and after closing the phone rings out — straight into lost tee times.
Built
An AI phone agent answering 24/7 in natural speech rather than an IVR menu: rates, hours, directions and course-specific questions, then a direct booking link texted to the caller. It works alongside whatever tee sheet the course already runs instead of replacing it.
Stack
Twilio Media Streams · streaming STT/TTS · LLM tool calling · TypeScript · Postgres
Outcome
  • 600+Calls answered / month
  • 82%Resolved without a callback
  • < 1 weekTo take a course live

The hard part On a phone line there is no spinner. Two seconds of silence reads as a dropped call, so the latency budget is the product — and callers talk over the agent, which means handling barge-in without losing the turn. The agent also never guesses at availability: it reads the live tee sheet or it says it does not know, because a confidently wrong booking costs more than a missed call.

Platform · golf operations

Fairwai

AI-native operations platform running the whole course business.

  • Gemini Live
  • Multi-tenant
  • Monorepo
  • Analytics
System as built
  1. Pro shop line
  2. Gemini Live agent
  3. Live availability
  4. Booking
  5. Customer record
  6. Marketing + analytics
Problem
Operators run the business across a tee sheet, a mailing tool, a spreadsheet of leagues and a separate events inbox. Nothing shares a customer record, so nobody can answer which golfers are worth keeping.
Built
One platform covering booking, marketing, leagues, events and analytics, with a Gemini Live voice agent answering the pro shop line against real availability — every call, booking and campaign landing on the same customer record.
Stack
pnpm monorepo · Next.js · Postgres + Drizzle · Gemini Live API
Outcome
  • 4 toolsReplaced per course
  • ~4 hrsAdmin removed / week
  • 92%Bookings self-served

The hard part The AI was never the risk — the schema was. Booking, leagues, events and marketing all describe the same golfer from different angles, and if that identity is not resolved properly at the data layer, every downstream feature quietly disagrees about who the customer is. Getting the model right first is what made the voice agent useful rather than a demo.

Agentic tooling · developer

neuscreen

A screen recorder that produces AI-readable recordings.

  • MCP server
  • Chrome MV3
  • Structured trace
  • Transcription
System as built
  1. Chrome extension
  2. Web app
  3. API + R2
  4. Transcription + summary
  5. MCP server
  6. Coding agent
Problem
A bug report is a video. A coding agent cannot watch a video, so a human sits through it and translates what happened into words before any work can start.
Built
Captures the screen plus a structured trace of what actually happened — click targets with their DOM selectors, console output, network calls, DOM mutations, screenshots and a timestamped narration transcript — exposed over an MCP server. The agent reads the bug as structured context: which button was clicked, what the console said, which request returned 500.
Stack
Chrome extension (MV3) · Next.js · Express · Cloudflare R2 · MCP server
Outcome
  • 6 signalsCorrelated per trace
  • ~40Events per recording
  • ~3 minSaved per bug handoff

The hard part Five event sources — input, console, network, DOM mutations, narration — each with its own clock and its own volume. A click is only useful if you know which node it hit and what the page did in the 200ms after, which means correlating all five onto one timeline and then throwing most of it away. An agent with an unfiltered trace is worse off than one with none.

Marketing automation

Campaign AI

Lifecycle email and segmentation over live operating data.

  • Segment engine
  • BullMQ
  • 26-table schema
  • Deliverability
System as built
  1. Operating data
  2. Segment engine
  3. Queued send
  4. Delivery
  5. Events back
  6. Aggregation worker
Problem
Off-the-shelf email tools cannot express the segments an operator actually cares about, because those segments live in the operating data — visits, spend, recency — not in a list somebody exported last quarter.
Built
A campaign platform with a dynamic segment engine over a 26-table operating schema, queue-backed sending with rate limiting and retries, and background workers handling sync, aggregation, delivery and intelligence.
Stack
TypeScript · Express · Postgres + Drizzle · BullMQ/Redis · SendGrid · React + Vite · Turborepo
Outcome
  • 120kSends / month
  • 99.2%Delivered
  • < 400 msSegment resolution

The hard part Segments are queries, not lists — which is the whole point, and also the problem. A segment has to resolve fast enough to send against while the underlying data keeps moving, so the engine had to stay correct under a schema that is being written to during the send. Drizzle over Prisma was a deliberate call for exactly this reason.

Infrastructure · voice

LYRA Voice

The voice runtime the agents run on.

  • Pipecat
  • Twilio PSTN
  • Cascade pipeline
  • Tool calling
System as built
  1. Caller
  2. Twilio media stream
  3. Pipecat
  4. Deepgram → Claude → Cartesia
  5. Tool call
  6. Business system
Problem
A phone agent is only worth having if it can do things. Answering is easy; booking, checking and cancelling against a live system while the caller waits on the line is where most voice projects stall.
Built
A voice platform taking inbound PSTN calls through Twilio into a cascade pipeline — speech in, model, speech out — with tool calling that executes real business logic mid-conversation, and a client and control plane on top for configuring agents per line.
Stack
Twilio · Pipecat · Deepgram STT · Claude · Cartesia TTS · Python · Angular + Fastify
Outcome
  • ~1.2 sMedian response
  • 85%Completed without transfer
  • 99.9%Pipeline uptime

The hard part A cascade pipeline spends its latency budget three times over — transcribe, think, speak — before the tool call has even fired. Making a live booking mid-sentence means the model has to commit to an action while the caller is still audible, and the pipeline has to keep the line feeling alive while it happens.

Working inventory

What I build with

Everything here is in something I have shipped, not a list of things I have read about.

Voice & telephony

Twilio Media Streams · Pipecat · Deepgram STT · Cartesia TTS · Gemini Live API · cascade and realtime pipelines · barge-in handling · mid-call tool calling · PSTN + WebSocket transport

AI & agents

Claude · Gemini · MCP servers · structured context traces · tool/function calling · retrieval · prompt and output evals · transcription and summarisation pipelines

Backend

TypeScript · Node · Express · Fastify · Python · PostgreSQL · Drizzle ORM · Drizzle Kit migrations · BullMQ + Redis · Zod · JWT auth · Pino · Vitest · REST

Frontend

Next.js · React · Vite · Angular · TanStack Query · React Router · Tailwind CSS · shadcn/ui · Radix · Chrome extensions (MV3)

Delivery

pnpm workspaces · Turborepo monorepos · modular monolith architecture · background workers · Render · Cloudflare R2 · static export · structured logging

How engagements run

Three ways to start

Automation audit

1 week

I sit with your team, measure the real baseline on two or three workflows, and come back with what to automate first, what it costs and what it returns. You keep the analysis whether or not we build together.

Build sprint

2 weeks

One workflow taken from manual to running in production — integrated with your systems, monitored, handed over with the runbook. Fixed scope, fixed price.

Ongoing partner

Monthly

For teams automating continuously. I work as your AI engineering function: new workflows, model and cost tuning, and keeping what is already live healthy.

Tell me what your team does twice

The best candidates for automation are usually hiding in plain sight — the steps a team repeats so often they have stopped noticing them. Describe one and I will tell you straight whether it is worth building, what it would take, and where the hard part is.