Selected work
11 projects across software, data and AI/ML, each with the tests and numbers that back it up. Hover to peek, click for the full story.
Software
-
01
Java · Spring Boot · React
Showtime: Event Ticketing
A BookMyShow-style ticketing app with live seat maps, where a seat is never sold twice however many people go for it at once.
- Java 25
- Spring Boot 4
- PostgreSQL
- React
50 → 1buyers raced for one seat, 1 got itSELECT ... FROM seats WHERE id = ANY(:ids) FOR UPDATE SKIP LOCKED;
59,119hold attempts in 60 spg_notify('seat_changes', ...) -> SSE to every browser1.6 msp95 hold -
02
Kubernetes · Terraform · Helm
Cloud-Native Platform
My job queue run the way production runs it: Kubernetes built by Terraform, autoscaled on queue depth, with a node killed mid-run and nothing lost.
- Kubernetes
- Terraform
- Helm
- KEDA
20,000 / 20,000exactly once# kill a jobs node mid-run 117 jobs taken over, 0 dup
1 → 10KEDA workerstriggers: - type: redis-streams # scale on stream lag
67pg connections, flat -
03
Python · Distributed systems
Distributed Job Scheduler
A Celery-style job queue that never runs a job's side effects twice, even when workers are killed in the middle of a job.
- Python 3.12
- FastAPI
- React
- PostgreSQL
50,000 / 50,000jobs ran exactly onceUPDATE jobs SET status='done' WHERE id=$1 AND fence=$2; -- zombie? rejected
SIGKILLa worker, every 60 s7.1 msp95 enqueue@app.task(max_attempts=5) def charge(ctx, order_id): ...
-
04
Kafka · Debezium · PostgreSQL
CDC Pipeline
Streams every MySQL insert, update and delete through Debezium and Kafka into PostgreSQL, then proves the copy is identical, even after crashes.
- MySQL 8.4
- Debezium 3.0
- Kafka 3.9
- Python
ON CONFLICT (id) DO UPDATE ... WHERE t.pos < EXCLUDED.pos;
141 msp95 lagSHA-256source = replicaALTER TABLE orders ADD COLUMN coupon ...; -- live
1,000,021changes
More projects2
- Real-Time Event Streaming A live cricket scoreboard feed where 1,000 clients receive every event exactly once and in order, through crashes and reconnects. Python 3.12 · asyncio · FastAPI
- Streaming Consumer Benchmark The same fan-out server written twice, Java 21 virtual threads and Python asyncio, measured by one harness up to 20,000 connections. Java 21 · Virtual threads · Python asyncio
Data
-
01
dbt · Airflow · Power BI
E-Commerce Analytics Warehouse
100,000 real orders replayed as a live source into a dbt star schema that is tested and reconciled to the cent on every run.
- MySQL 8.4
- Python
- PostgreSQL 16
- dbt
R$ 15,843,553.24matched to the centdbt build ✓ 85 of 85 tests passed
1.7 ★avg review when 8+ days late -
02
Kafka · Debezium · PostgreSQL
CDC Pipeline
Streams every MySQL insert, update and delete through Debezium and Kafka into PostgreSQL, then proves the copy is identical, even after crashes.
- MySQL 8.4
- Debezium 3.0
- Kafka 3.9
- Python
ON CONFLICT (id) DO UPDATE ... WHERE t.pos < EXCLUDED.pos;
141 msp95 lagSHA-256source = replicaALTER TABLE orders ADD COLUMN coupon ...; -- live
1,000,021changes -
03
BigQuery · dbt · Statistics
Product Analytics & A/B Testing
Google's GA4 store data modelled in BigQuery, and an A/B testing toolkit tested on thousands of simulated experiments before reading out a real 14M-user one.
- BigQuery
- dbt
- SQL
- Python
29.7%false positives, daily peekingSELECT COUNT(*) ... QUALIFY ROW_NUMBER() OVER (...) = 1
+27% → +19.5%confounded lift, fixed190 vs 17days to detect +10%aipw = mu1 - mu0 + ipw_residuals
-
04
PostgreSQL · SQL · MySQL
Postgres Tuning on 38M Taxi Trips
Twelve analytical questions over every 2023 NYC taxi trip, taken from a 488 ms median to 19 ms with exactly the same answers.
- PostgreSQL 16
- MySQL 8.4
- SQL
- Python
25×faster medianCREATE INDEX ... USING brin (pickup_at); -- 832 kB
38,310,226tripsIndex Only Scan Heap Fetches: 0
488 → 19 msmedian query
AI / ML
-
01
LightGBM · MLflow · FastAPI
Card Fraud Detection
A fraud model on 590,000 real card transactions, built the way production needs it: tested on the future, priced in dollars, explained per decision.
- Python
- LightGBM
- scikit-learn
- Optuna
0.87 → 0.64random split vs honestreview if p * (amount + 20) > 10 # dollars68.5%fraud cost savedlabels usable after 30 days # a chargeback takes weeks
1.1 msp95 score -
02
RAG · pgvector · LangGraph
Financial RAG QA
Question answering over 57,638 finance answers where every sentence cites its source, and every design choice was measured before it was kept.
- Python
- PostgreSQL
- pgvector
- PyTorch
+72%nDCG@10 vs BM25ORDER BY embedding <=> $1 LIMIT 100; -- HNSW
−14%the textbook rerankerInterest compounds monthly [2]. Your bank sets the rate [4].
93%sentences supported -
03
BigQuery · dbt · Statistics
Product Analytics & A/B Testing
Google's GA4 store data modelled in BigQuery, and an A/B testing toolkit tested on thousands of simulated experiments before reading out a real 14M-user one.
- BigQuery
- dbt
- SQL
- Python
29.7%false positives, daily peekingSELECT COUNT(*) ... QUALIFY ROW_NUMBER() OVER (...) = 1
+27% → +19.5%confounded lift, fixed190 vs 17days to detect +10%aipw = mu1 - mu0 + ipw_residuals
About
I'm an ML engineer who trusts a number only after trying to break it. A model that looks great in a notebook and falls apart on next month's data isn't a model, it's a demo.
At Fayble I built the LLM and text-to-speech side of an AI commentary system: two synthetic commentators, emotion driven by game state, and a generation design shaped by time and free-tier cost.
Since then I've built a RAG system where every design choice was measured against human labels, a fraud model trained on the past and tested on the future, and an A/B testing toolkit that read out a 14-million-user experiment. M.S. in Computer Science from UT Arlington, with a focus on AI.
- focus
- Applied ML & LLM systems
- based in
- Mumbai, India (IST)
- education
- M.S. Computer Science (AI focus)
- currently
- Open to work · relocation worldwide
Skills
Hover a skill to see where I've actually used it.
01Languages
- Python
- SQLSQL
- Java
Python for everything ML; SQL for the features and the checks.
02Machine learning
- PyTorch
- scikit-learn
- GBMLightGBM
- OpOptuna
- pandas
- Polars
03LLMs & retrieval
- LangGraph
- Hugging Face
- Ollama
- pgvector
- Claude
- Gemini
LCProblem solving @anuragb2901 ↗
04MLOps & serving
- MLflow
- FastAPI
- Docker
- GitHub Actions
05Speech & media
- ElevenLabs
- GQGroq
- OpenAI
- ffmpeg
06Data
- PostgreSQL
- BigQuery
- dbt
- Kafka
Experience
- 01'
Built the audio pipeline for an AI sports commentary system, turning LLM-generated play-by-play into dual-commentator speech with ElevenLabs, stitched into continuous broadcast audio.
- 02'
Moved commentary text generation from Gemini to Groq and chose a one-emotion-per-play voice design over per-segment emotion stitching, keeping full-game audio generation fast and within free-tier limits.
- 03'
Automated archery match production with ffmpeg: commentary, crossfades, 7.1 (8-channel) audio with 1 kHz broadcast trigger tones, and per-play metadata into finished match videos.
- 04'
Integrated Kafka into the animation flow, replaying 19 games (about 1,274 messages) through an ordered, de-duplicated path served through a FastAPI API.
“Highly adaptable and contributed across a wide range of components, from database to APIs to media pipelines. Quickly learned new concepts, delivered solid results, and consistently met timelines.”
Resume
One page. Press the button.
LET'S TALK
online I usually reply within a day.