Projects

Production systems and engineering work

OpenSearch Data Platform

Full ownership of an OpenSearch cluster from day one: ingestion pipeline, monitoring dashboard, and the shared connector library used across the stack. Ingestion uses Textract LAYOUT for section-aware chunking paired with Anthropic contextual retrieval to embed section relevance alongside chunk text, improving retrieval evals by 7%. Indexes are built in full behind a staging alias before cutover, so re-indexing never serves a partial result. The monitoring dashboard tracks indexing throughput, backpressure, and cluster health across multiple AWS accounts; write-rejection counters are converted to rate-of-change so the panel shows when the cluster is actually under pressure rather than displaying cumulative noise. The connector library wraps the full index lifecycle, hybrid/vector/sparse search, and bulk DataFrame ingest and is used by 10+ services.

OpenSearchBedrockTextractAWS CloudWatchFastAPIReactPythonRAG

OpenSearch DSL Agent

MCP server for safe, natural-language querying of OpenSearch without giving LLMs free-form cluster access. A PydanticAI agent consults a semantic catalog of index schemas before writing any query: it knows which fields exist, how hybrid RRF/normalization pipelines are wired, and which query shapes are valid. Safety is enforced in layers: index allowlist, a DSL shape validator that blocks scripts and clamps result sizes, and inline Bedrock vector injection for embedded fields. Validation errors are surfaced as strings so the model can self-correct; from the cluster's perspective it sees a narrow, pre-validated query surface.

MCPPydanticAIOpenSearchRAGPythonBedrock

FastAPI Model-Serving Framework

Org-wide serving framework built to eliminate the pattern of every team writing their own FastAPI boilerplate. Factory-pattern app construction, shared request/response middleware, standardised health checks, Datadog APM tracing, and multi-tenant MLflow model loading. Load-tested with Locust before rollout; adopted across all model-serving workloads on the platform.

FastAPIMLflowDatadogPythonKubernetes

Knowledge Graph Platform

Built a Neo4j knowledge graph platform from scratch: NLP-driven entity extraction, entity matching and merging pipelines, GraphRAG retrieval, LLM exploration agents, and Pydantic data models for the graph schema. The platform became the structured memory layer powering several downstream AI products.

Neo4jNLPLLMsGraphRAGPython

Semantic Layer

The business map agents use instead of raw data. Context, domain knowledge, and data semantics are opaque to agents unless they are explicitly structured and made accessible; this is the infrastructure that does that. Table descriptions, index schemas, agent skills, and tenant-specific business rules are authored in dbt and YAML, published and versioned into Postgres, and served through a single Python API surface. Agents query it to understand what data exists, what it means in business terms, and which query patterns are valid before they touch anything. Tenant-aware resolution composes base resources with per-tenant overlays so each context gets a tailored view. Contributed to core catalog surfaces and agent context integration.

PythonPostgreSQLdbtRAGAgentsMulti-tenant

Lakehouse Query Orchestrator

Orchestration layer for running DuckDB/DuckLake SQL from agentic services without each service holding a local database session. Work is submitted to a pull-based Redis queue; runner pods fetch jobs themselves, so a pod crash mid-query leaves the job in the queue rather than losing it. Jobs are classified upfront into pod families (s/m/l/xl) so large and small queries compete in separate pools. Scaling watches queue depth gradient rather than waiting for Kubernetes HPA lag. Tail latency dropped from ~1s to ~50ms after reworking completion signalling to use Redis pub/sub instead of polling.

FastAPIRedisKubernetesDuckDBPythonOpenTelemetryasyncio

Conversational AI Backend

Production backend for an AI assistant with chat, benchmarks, and third-party integrations. Two agent execution strategies in the same service: skill-gated MCP aggregation with a planner/worker split, and a ReAct loop for open-ended tasks. Responses stream over RabbitMQ, MCP server lifecycle is multi-tenant, and every agent execution is traced end-to-end with OpenTelemetry.

FastAPIPydanticAIMCPOpenTelemetryRabbitMQPythonKubernetes

LLM Fine-tuning Pipeline

End-to-end pipeline for fine-tuning on production chatbot interactions: data mining, LoRA training, GGUF quantisation, and artifact publishing to S3. The resulting model is served via vLLM on Kubernetes GPU nodepools as a purpose-built autocomplete model.

LoRAvLLMKubernetesGGUFHugging Face

ML Utilities Library

scikit-learn-compatible internal library covering MRMR/SHAP feature selection, Optuna hyperparameter tuning, statistical drift detection, and MLflow lifecycle management. Written to be the shared toolbox teams reach for first rather than reimplementing the same experiments. 80%+ test coverage.

PythonMLflowSHAPOptunascikit-learn

GenAI & Data Access Libraries

Two shared libraries that sit under most of the platform's services: a GenAI layer (embeddings, LLM clients, vector DB abstractions, Langfuse tracing) and a unified data access layer over PostgreSQL, S3, Azure Blob, OpenSearch, and DuckDB. Ten-plus services share a single tested surface instead of each rolling their own connection handling.

LangChainOpenSearchLangfusePythonPostgreSQL

GraphSAGE for Financial NLP

Research project: a novel inductive GraphSAGE variant that learns embeddings from Knowledge Graphs extracted from earnings-call transcripts, used to estimate cumulative abnormal returns in the 30-day post-event window.

GraphSAGEGNNNLPPyTorchKnowledge Graphs

Research

Academic projects · BSE MSc Data Science 2022–23

Decoding Abnormal Returns: Graph-Enhanced Earnings Call Analysis

2023-03

NLP + Graph Neural Networks (GraphSAGE/GCN/GAT) on pharmaceutical earnings call transcripts. Event-study methodology to estimate cumulative abnormal returns in the 30-day post-call window.

NLPGNNGraphSAGEPythonJupyter

Knowledge Distillation: Teacher–Student Architectural Choices

2023-06

Systematic study of how teacher model architecture and performance affects student model quality under knowledge distillation. Distilled models consistently outperform scratch-trained baselines.

PyTorchKnowledge DistillationDeep LearningPython

Q-REPS: RL Algorithm for Continuous Action Spaces

2023-07

Study of Q-REPS, an RL algorithm addressing limitations of traditional Bellman error functions. Applied to the cart-pole benchmark and compared against A2C and PPO.

Reinforcement LearningQ-REPSA2CPPOPython

SVD Decomposition of Story Arcs in Project Gutenberg Novels

2023-03

Singular Value Decomposition applied to story arcs scraped from Project Gutenberg. Identifies dominant narrative structures and explores correlation with publication events.

SVDNLPPythonJupyter

Optimal Bike Station Placement via Network Algorithms

2023-03

Applied two graph-based optimisation algorithms to the Sioux Falls network. Key finding: proximate station pairs reduce overall travel latency more effectively than dispersed placement.

Network AlgorithmsPythonOptimisation

Preference Learning with the Mallows Rank Model

2023-05

Recommender algorithm using Bayesian Mallows model to aggregate partial rankings. Implemented with the BayesMallows R package in a probabilistic Bayesian framework.

Bayesian StatisticsRecommender SystemsR

Achievements

TEDxMACE 2021 · Licensee & Organiser

Led a 35-person team to deliver a national TEDx conference with speakers across India.

SAE Six Sigma Convention · National Winner

Applied DMAIC methodology to a complex case study at the Society of Automotive Engineers national convention.

SAE Autonomous Vehicle Challenge · National Winner

Developed ADAS-based vehicle/pedestrian detection system in MATLAB.