Profile

Environment

Linux (Ubuntu / Debian) and the terminal are where I actually work: Bash and zsh, SSH, tmux. Claude Code, Codex and Cursor are part of the daily loop, including multi-file agentic refactors and debugging, not an occasional experiment.

Skills

Languages

python-first, polyglot enough
Python (primary; pip, uv, venv), TypeScript / JavaScript, C# (Unity), PHP, SQL, Bash.

Backend

fastapi, postgres, queues
FastAPI, SQLAlchemy 2, Pydantic, PostgreSQL + pgvector, Redis Streams, Celery / Arq, Alembic.

AI / ML

rag, agents, eval gates
RAG and vector search (Weaviate, Chroma, pgvector), OpenAI / Gemini / Vertex AI, Google ADK, multi-agent orchestration, LLM eval and determinism gates, embeddings, PyTorch at the training-loop level, SentencePiece / BPE tokenizers.

Infra & CI

docker, gke, actions
Docker + docker-compose, Kubernetes (GKE), nginx, cert-manager, GitHub Actions CI/CD, OpenTelemetry, Prometheus, structlog.

Frontend

react 19, vite, native
React 19, Vite, Tailwind, shadcn/ui, Expo / React Native.

Cloud

gcp, end to end
GCP: Cloud Run, GKE, Vertex AI, BigQuery, Cloud Build. Deploy, TLS, observability, CI, all of it.

Education

2014 - 2018

Information Science & Engineering

Nitte Meenakshi Institute of Technology, Bangalore
2012 - 2014

Higher Secondary

Jodhpur Park Boys' School, Kolkata
2005 - 2012

Secondary

Ramakrishna Mission Vidyapith, Purulia

Outside the day job

I am building a career-mode cricket RPG for mobile: a deterministic match engine in Python and TypeScript, a Unity 6 client, and a Blender character pipeline. Same principle as my other work, the engine decides and the model only narrates. Before the current wave of tooling I ran local models for fun, llama.cpp and Stable Diffusion and speaker-embedding pipelines on a Mac. I follow cricket closely, which is the reason the game exists.