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.