Software engineer with product engineering experience, now focused on machine learning through hands-on
reinforcement learning systems.
Side Projects
- kaggle-orbit-wars: training a self-play RL agent for the Orbit Wars Kaggle
competition, a multiplayer planet-capture strategy game. (View)
- Built and trained an
entity-transformer reinforcement learning agent
using PPO self-play on a custom GPU-vectorised PyTorch environment (~4k env
steps/sec on H100), trained from scratch with no imitation warm-start.
- Built the full training stack:
opponent league with prioritised fictitious self-play (PFSP), KL-anchored self-play to
prevent policy collapse, action masking, reward shaping, and stratified 256-game
evaluation panels against calibrated leaderboard opponents.
- Ran one-change-per-run controlled
experiments across GCP/JarvisLabs L4/H100 spot instances, profiled the loop end-to-end
(PPO-compute-bound, not env-bound), and diagnosed self-play pathologies such as unanchored
policy drift; from-scratch self-play reached 98% head-to-head against ~1200-rated planner
bots over 100M steps.
- rl-snake: where the RL journey started: climbing the RL stack on Snake,
ending in a mechanistic study of board-size generalization; one agent trained only on small
boards plays 100×100 zero-shot. (View)
- Built a size-invariant agent
(egocentric head-relative representation + attention pooling) trained on a curriculum of
small boards {10, 20} that navigates 100×100 grids zero-shot at 98% of moves toward the
goal, a 4.5× extrapolation with no degradation, where single-size agents are no better than
random by board 16.
- Diagnosed the failure with linear
probes: the direction-to-food signal was decodable but unused (its magnitude collapsed), and
probe-validated architecture fixes made real-play transfer worse. The true bottleneck was
state-distribution coverage, not architecture: 71–88% of big-board states are out-of-support
for a small-board policy.
- Earlier phases climbed the RL
stack from scratch (tabular/double Q-learning, REINFORCE, PPO, curriculum + imitation
learning, and an ICM curiosity ablation that helped PPO under sparse reward but not DQN),
and showed a from-pixels ConvNet beating a 24-feature hand-engineered DQN.
- tastebento.com: a social discovery app with a production LLM pipeline
generating grounded "Did You Know?" trivia from users' taste profiles. (View)
- Designed a layered reward
pipeline for LLM outputs: verifiable hard gates (claim grounding against retrieved
context, non-triviality vs user-visible fields, verbatim quiz answers) with soft quality
scores and a bounded LLM-judge tiebreak, so fluency can never outvote factuality.
Grading production outputs reframed the problem: 96% passed gates while 84% lacked
specificity, shifting optimization from hallucination to blandness.
- Shipped best-of-N rejection
sampling over Llama-3.3-70B (parallel high-temperature candidates, grader+judge pooled
selection, near-duplicate suppression); every production generation logs (context,
candidates, rewards) tuples, accumulating GRPO-ready training data as a side effect.
- Built an offline fact-mining
worker: a free 8B model scans entire Wikipedia articles in the background and distills
trivia nuggets, each programmatically verified against its source passage
(extract-then-verify), moving read-time compute offline so serving prompts carry
distilled depth for the whole catalog within a fixed token budget.
- rl-poker: replicating poker research to build state of the art poker agents (View)
- Built CFR and MCCFR blueprint
solvers for Leduc and No-Limit Hold'em, training 2B+ iterations against Slumbot with
vectorized Cython extensions achieving 180k it/s throughput.
- Implemented Single Deep CFR with a
custom RangeEncoder architecture (1326→64 bottleneck) for range-conditional postflop play,
integrating reach-weighted traversal sampling and composition-based synthetic range
injection.
- content-moderation-env: a deterministic OpenEnv for evaluating AI agents on
user-generated content moderation, built for the Meta PyTorch OpenEnv Hackathon. (View | Demo)
- Simulates the sequential trust
& safety review workflow (read a post, gather thread context, apply a policy, issue a
decision) across four graded task packs, with deterministic graders and dense reward
shaping: over-censorship penalties, policy-citation bonuses, and deductions for
skipping context on context-critical posts.
- Benchmarked frontier LLMs on
it: models converge on accuracy (~0.82 on the hard pack) but diverge widely on shaped
reward (−0.93 to +6.39), separating genuine policy reasoning from correct guessing;
live demo and benchmark hosted on Hugging Face Spaces.
Experience
- Spent a year building reinforcement learning systems from scratch and running end-to-end
experiments across multiple environments to understand training dynamics, exploration, and
generalization.
- Unblocked $7.7M in revenue (154% of target) by delivering a feature enabling non-admin users to
appeal ad account integrity enforcements for high-value (Silver+) advertisers.
- Resolved a critical concurrency bug causing notification delivery failures, and drove proactive
engineering initiatives to improve system reliability and overall operational excellence.
- Drove unification of Propagated Enforcements across Paid and Organic channels.
- Led a small cross-functional team exploring a new delivery model for the Applied Science
tribe, taking complete ownership of delivering the Health Score experience.
- Steered evaluation of Flink for Babylon's AI Platform by building repeatable patterns for ETLs,
feature engineering, data pipelines, and stream processing for model training and inference.
- Architected HealthIQ – a bespoke pattern for productionizing ML models generating risk
predictions using Faust-based serverless functions. Model output powered internal products such
as Outreach Tracker & Clinical Portals. (Python)
- Developed Flowbase – an arsenal of tools & services for chatbot flow platform enabling the
execution of Healthcheck & Symptom Checker products. (Scala)
- Designed and developed Media Analysis Services (MAS) - a distributed microsystem that ensures
the accuracy of incoming media files prior to transcoding and packaging. Utilized on-premises
services and AWS for asynchronous communication via Kafka.
- Lead a squad of three-four members for three-four months.
- Broadcast Control Plane (BCP): Automates the media acquisition process of associating source and
media exchange pipelines for the live media productions for ESPN+ and MLB.TV, powered by the
BamTech platform.
- Developed a framework for sending and receiving SMS messages to/from handsets, with integrations
to 3rd party SMS aggregators such as Nexmo and Twilio.
Skills
- Python, PyTorch, Jax, NumPy, Scala, Kafka, AWS, GCP, SQL, Java, TypeScript, React, Flink, GraphQL,
Kubernetes
Education
- Bachelor of Technology, Information and Communication Technology.
- Research Project: Movie Classification using k-means and hierarchical
clustering algorithms.
- OGDF.js for the Web (Google Summer of Code 2013) - Ported Open Graph Drawing
Framework C++ library to JavaScript using Emscripten
- ASCEND (Google Summer of Code 2012) - Custom Icons for Canvas Based Modeler
Outside work I enjoy reading, writing, hiking, skiing, playing tennis and poker.