An illustration of a live run in Avals, my open-source eval runner. Each square is one attempt at a task: the environment is set up, the agent works, then a grader scores the result.
About
I started out building tax software at Barclays in Pune, then moved to the US for a master’s in computer science at Rice. At Paycom I worked on scheduling and payroll systems serving more than 100,000 client accounts, and shipped my first production AI feature: an agent that calls tools across payroll data to catch labor-budget discrepancies.
At Labelbox I’m the engineering point of contact for frontier AI labs. I write code alongside their teams, find where their agents fail, build the evaluations that measure it, and run the expert review programs that turn those failures into training data.
Outside of work I build open-source tools for running and inspecting agent evals.
Built a full-stack platform for evaluating customers’ AI agents. It connects to their systems over REST, runs agents in sandboxes, and grades every response with LLM judges, human reviewers and guardrails that catch hallucinated or off-policy answers.
Designed deterministic graders for resolution rate, answer correctness and failure recovery across 180+ audited rollouts.
Shipped a computer-use agent pipeline that generates tasks, runs agents and records full trajectories, with actions, screenshots and step-level rewards: 500+ structured examples.
Turned agent failure modes into human-in-the-loop eval and preference-data programs that delivered 10,000+ expert-rated comparisons.
Shipped an MCP tool-calling agent that audits labor budgets across scheduling and payroll data, cutting manual audit work by 30%.
Rebuilt the Scheduling Import Center with new upload flows and server-side bulk validation. 50,000-row files now import in under 30 seconds, down from more than 3 minutes.
Built REST and GraphQL APIs for shift assignments, shift exchanges and real-time labor costs. Query tuning cut data-fetching overhead by 40% under enterprise load.
Built global tax applications in React, C#/.NET and SQL Server that compute charges across APAC, the UK and the US, and fixed 15 critical production defects with zero-downtime releases.
Automated the year-end tax reporting pack, taking generation from 3–4 hours to 40–50 minutes.
Ran multi-region tax-data migrations with automated validation, 87% faster than the previous process.
A local web app for launching AI agent evaluations and watching every trial as it runs.
Pick an agent, a model and a set of tasks. The launcher builds its options from the agent itself and checks that the API keys a run needs are set before you start. While it runs, every trial moves through setup, the agent’s turn and verification, with a log for each. Afterwards you can step through any trajectory’s reasoning and tool calls, with tokens and cost for each step.
Every event is written to a sequence-numbered log before it’s broadcast, so a run survives a server restart and any client can replay it from any point. Ten or more concurrent jobs stream over one multiplexed WebSocket, and the TypeScript client is generated from the OpenAPI spec, so the whole API is type-checked end to end.
A benchmark of whether forking a checkpoint beats rebuilding an RL task environment from scratch.
Agentic RL runs the same task again and again, and every attempt needs a clean, ready environment. Most harnesses rebuild it each time: create a sandbox, pull the image, start the container. I measured whether restoring a checkpoint is faster and still correct, on four real Terminal-Bench tasks: 56 trials for about $1.14 of compute.
Restoring cut the reset by 22–61%, and the one-off golden build paid for itself within 1.8 to 8.5 trials. All 25 forks started clean, with no state left over from earlier forks. The saving comes from skipping the image pull and container start, not from faster machines.
Median time to reset a task environment, in seconds
Rebuilt from scratch
Restored from checkpoint
Lower is faster. For regex-log the two ranges overlap, so its 25% is indicative only. Sandboxes were 2 vCPU and 4 GiB, with the two strategies interleaved per task.
A video studio that turns a script into a rendered 1080p video on one machine.
Built on HeyGen’s HyperFrames. It narrates a script with Kokoro TTS, times every sentence with Whisper, lays out a storyboard from 30 animated scene templates and renders an MP4 with ffmpeg, streaming progress to the browser. It also adds timed cutaways to talking-head recordings without breaking audio sync. Everything runs locally, and script to final cut takes under ten minutes.
An operator desk for routing research tasks to experts through an unreliable engine.
The simulated engine usually proposes an expert within 20 seconds, sometimes later, and one time in five never answers at all. The operator sees everything as it happens and can step in at any point. One rule holds it together: the first final state wins, and anything that arrives later is recorded and shown but never applied. Built as a founding-engineer take-home for Terac, with 1,157 unit and integration tests and 16 browser tests.