$ dhairya --run "take agents from zero to ten, build my own things at night"

Dhairya
Shah

I go one layer down, into the software that refuses to be automated, and make it ship. Zero to ten clinics, two of us, split down the middle.

STATUS
shipping · 0→10
LOC
Bangalore, IN ⇄ US
MODE
founding engineer
0→10
clinics, taken from zero to production
1
first engineering hire in India
10M+
users served on BNY's Wove platform
13
fatal bugs caught on eval day one
~40%
cut from the LLM token bill
RetellVAPIDeepgramCartesiaLiveKitPlaywrightClaudeFastAPIPostgreSQL + RLSCloud RunCloud TasksRustTauriMCPDockerathenahealtheClinicalWorksJavaSpring BootSplunkGrafanaRedisSQLRetellVAPIDeepgramCartesiaLiveKitPlaywrightClaudeFastAPIPostgreSQL + RLSCloud RunCloud TasksRustTauriMCPDockerathenahealtheClinicalWorksJavaSpring BootSplunkGrafanaRedisSQL

SPAN 01 / SYSTEM_PROMPT · t+26y

I take agents to production, then keep them alive.

The EHRs my clinics run on hide their scheduling behind no usable API. So I built the one they would not give me: real-time integrations my agents book against. That is the whole job, go one layer down and make the closed thing work.

First engineering hire at TriFetch (Nexus Venture Partners), one of two engineers in India. I closed our first paying clinic myself with the CEO at 4am India time, then carried it to ten, split between the two of us: the agents, the runtime, the infra, the on-call. Reviewed in PST, paged in IST, has to survive both.

Most AI teams are one prompt-tweak from irrelevance. The durable moat is the integration layer, and it stays unglamorous on purpose.

On the side, I'm tinkering into physical AI. Before I found my own thing, I want to scale early startups from the inside, for the reps and the taste.

system_prompt.rules
  • You do not ship demos; you ship things that run at 3am.
  • When software has no API, you use the screen. When it has one, you read all of it.
  • Silent failures are worse than loud ones. Make everything measurable.
  • Scale someone's startup from zero first. Take the reps, the taste, the network. Found later.
  • Reverse-engineer everything, EHRs, markets, flight routing, for fun.

SPAN 02 / TOOL_CALLS · t+3y

What I've wired into production.

call: voice_agent(realtime=true, langs=["en","zh","es"])

production phone agents

Real-time phone agents on Vapi and Retell, live with real callers. Scheduling, screening questionnaires, multi-turn conversations that survive interruptions. Barge-in handling, mid-call tool calls, and handoff logic for the moment a human should take over.

call: computer_use(target="legacy_desktop_via_citrix")

UI automation where no API exists

Agents that operate legacy desktop software through the screen: reading the UI, clicking, typing, verifying. That includes apps running inside Citrix, where every frame is pixels and nothing is inspectable. Deterministic Playwright steps where possible, a vision agent loop (screenshot, decide, act via CDP) where the UI shifts.

call: extract(engine="ocr+llm")

documents → structured data

Pipelines that turn messy scans and faxes into clean structured records: PaddleOCR for the pixels, Claude for the judgment, evals for the honesty. Field-level accuracy is measured against labeled sets, not vibes.

SPAN 03 / RUNS · t+2y

Runs, shipped and in flight.

run: dabba_lift

status: in_progressbuilding this month · Bangalore

Automate the rope I lower to delivery riders, and audit the order on the way up.

outcome: Work in progress. The lifting is the excuse; the order reconciliation is the point.

run: schedlab_rs

status: completedopen source · Rust

Find out when shortest-job-first actually wins in an LLM inference scheduler, and whether that answer survives your cost-model assumptions.

outcome: Predicted-SRPT captures ~97% of oracle goodput (regret 0.012 vs FCFS 0.358), but the winning policy is cost-model-dependent in 16 of 45 regimes. A single-equation sim would report that as fact. Findings replicate on a real Azure LLM trace (~98% of oracle). MIT.

repo ↗writeup ↗

run: voice_eval_harness

status: completedopen source

Make voice agents testable before they embarrass you.

outcome: Caught 13 fatal config bugs across 8 production agents on day one. Apache-2.0.

repo ↗demo ↗

run: sre_agent

status: completedin production

Detect, investigate, and safely heal agent-runtime incidents.

outcome: Read-only by default; no prod mutation without explicit human confirm.

run: healthadmin_models

status: in_progressearly research · in progress

Explore specialized agentic models for long-horizon healthcare-admin workflows.

outcome: Early stage on purpose: data and benchmark pipelines first, models next. Reproductions before claims.

HealthAdminBench ↗

run: voice_fleet

status: completedongoing · in production

Answer and place phone calls no one has time for.

outcome: Live with real callers daily; call outcomes classified and audited by a second model.

SPAN 04 / CHECKPOINTS · restore points

Where I've been.

ckpt: founding_engineer

Feb 2026 to now

Founding engineer · first India hire · TriFetch · Nexus Venture Partners · $1.9M pre-seed

Built and run the multi-agent production system as one of the first two engineers in India: realtime voice agents, computer-use automation against legacy EMR desktops, OCR + LLM document pipelines, and the Tauri cockpit operators drive it from. Reverse-engineered legacy EHRs into a shared integration layer both of our clinics book against, so live data is never more than seconds stale. Took the platform from zero to ten paying clinic customers, split between the two of us.

Replaced LangGraph with a custom YAML workflow engine when per-tenant variation became unmanageable, onboarding dropped from weeks to ≤5 business days. Multi-tenant Postgres 15 with row-level security, append-only audit logging, ~40% token-cost reduction via prompt caching, and an internal SRE agent with read-only-by-default + confirmation gates. On-call across every tenant; zero security incidents.

ckpt: bny

Jul 2024 to Jan 2026

Software Development Engineer 1 · PershingX, BNY (Wove platform)

Built Party Master, Wove's entitlement-sync service, Java + Spring Boot, serving 10M+ users on a wealth-management platform whose clients manage billions in AUM. Normalized multiple upstream sources into one schema and cut client onboarding from over 24 hours to about 30 minutes with async ingest and cache-backed lookups.

Designed batch jobs and microservices with SQL-driven test scenarios, instrumented Splunk + Grafana for cache and latency analysis, wrote cross-source reconciliation scripts that auto-deactivated invalid users, and carried production on-call. Enterprise correctness, learned at the tier where every downstream system trusts yours.

ckpt: first_run

Jun to Jul 2023

Software Development Intern · BNY

Built a mock-stubs web app for API testing from scratch, Java + Spring Boot, role-based auth, in-memory DB for latency, plus the API documentation to go with it. The internship that turned into the full-time offer.

ckpt: iitgn

2020 to 2024

B.Tech, Computer Science and Engineering · IIT Gandhinagar · CPI 8.57/10

Curriculum ran the full ML stack: Machine Learning (ES654), Probabilistic ML, data-driven algorithms (CS328), NLP with statistical language modelling, coresets for ML, numerical methods, and computer networks. Research with Prof. Nipun Batra's lab became a first-author publication (see run: research).

Awarded the institute's Gold Medal for Integrity at graduation. Served as PDC Secretary, led a 50-member team, and shipped the campus tech-summit website. First team-lead experience: a 10-person alumni-database project and a 5-person interpreter build, a toy language with both treewalk and bytecode interpreters, top-3 in the campus hackathon.

SPAN 05 / LOGS · stdout

What I write about.

A quadcopter drone in flight

FOR FUN / PHYSICAL_AI · building this month

Delivery riders won't climb to my 3rd floor.

So I'm building a winch that lifts the bag, and an LLM that reads the bill and checks my order is complete on the way up. Anti-sway control on a rope whose length keeps changing. The lifting is the excuse; the reconciliation is the point.

SPAN 06 / HUMAN_HANDOFF · t+now

Your turn.

This is where a human takes over. If any of this is your kind of problem, let's talk.

Reach me here, in order of preference:

Machine-readable version of this site. My people will talk to your people's agents.