Projects · Previous work · Sharing Knowledge · Stack · Education · Contact
Blogging Agent: an AI agent that turns a topic into a fully-cited article, built like a product instead of a demo.
queries → research (Tavily) → plan + coverage score → [pause if evidence is weak] → parallel write → synthesize
- Doesn't hallucinate confidence. The planner scores evidence as
sufficient | partial | insufficientand pauses the graph for a human decision, proceed or re-research, before a single word gets drafted. Bounded at 2 rounds, so it can't loop forever. - Doesn't lose work on crash. Every node checkpoints to Postgres. A heartbeat thread renews a lease per running job; a sweeper reclaims anything whose owner died, safe across multiple instances.
- Doesn't ship untested. 162 tests gating merges via GitHub Actions + branch protection. Deploys to ECR through GitHub OIDC, no long-lived AWS keys anywhere in the pipeline.
Expense Tracker Agent: a local LLM agent, built from scratch, no framework scaffolding.
- Function-calling loop on a local model. Runs on Ollama, with system prompts designed to drive the model to select and invoke tools for logging and summarizing expenses, no cloud API in the loop.
- Remembers you across sessions. A secondary LLM extracts user preferences at session end and persists them, so the next session's system prompt already knows how you like things done.
- Structured output over regex. Replaced regex-based response parsing with prompt-enforced JSON schemas, eliminating an entire class of parsing failures caused by the model phrasing things slightly differently each time.
| RBAC at scale | Designed cohort-based access control serving 1,000+ users: schema, backend logic, admin controls, from scratch |
| Zero-downtime auth fix | Root-caused a distributed auth bug leaving users with half-created accounts; related support tickets went to zero |
| RAG under load | Built a concurrent ingestion pipeline (Node.js, Bedrock) with retries and structured logging, designed to fail loud, not silent |
| Serverless on a budget | Lambda + DynamoDB with 3 GSIs purpose-built to kill full table scans |
| File infra end-to-end | EasyFiles: full-stack app on EC2 behind NGINX, S3 for storage, async deletes via Lambda routed to an SQS dead-letter queue after 3 retries; cut download TTFB 18% by fronting S3 with CloudFront |
Docker, from first principles — 5-part series
| 1 · Why Docker | The dependency-hell problem it actually solves: pulling pre-built images instead of installing and configuring every dependency on every machine |
| 2 · Containers vs. VMs | Why containers share the host kernel instead of shipping a full OS, and why that makes them lighter and faster than VMs |
| 3 · Images, networks, volumes | Image vs. container, bridge vs. host networking, and why anonymous volumes silently lose data on container recreation |
| 4 · The commands you actually use | ps / pull / push / run / exec / build, including pulling from a private registry like AWS ECR, not just Docker Hub |
| 5 · Docker Compose | Replacing "start 10 containers by hand" with one YAML file and docker compose up |
Jenkins + Docker: building and breaking a real pipeline
| 1 · Why Docker agents over plugin sprawl | Letting Jenkins orchestrate through plugins while Docker handles build execution in disposable containers: no more Node/Python/Go version conflicts on the controller |
| 2 · Four errors deep in the Jenkins–Docker handshake | docker: not found (missing CLI in the Jenkins image), permission denied on docker.sock (group membership), API version mismatch (host/CLI version skew), files "disappearing" (fixed with reuseNode true for workspace mounting) |
| 3 · Full CI/CD pipeline, GitHub push to running container | Webhook triggers a build in a disposable AWS CLI container, pushes to ECR, then SSHs into EC2 to swap the container. Multi-stage builds to shrink image size, an NGINX try_files fix for React routing 404s, heredocs to fix commands silently running on the wrong host. Manual 3-5 min deploy cut to under 1 minute, automated |
Bash scripting for automation
| Learning Bash by writing real scripts | Wrote scripts from scratch: a Postgres container lifecycle manager, a CloudFront TTFB benchmarking tool, a disk/memory monitor, and a safe file-migration script, while working through stdout/stderr redirection and multi-line file handling |
languages / core
backend / frontend
AI / agents
databases
cloud / infra
day-to-day tools
currently deepening: distributed job orchestration, LLM-as-judge evaluation loops, infra-as-code
| M.S. Computer Science | Stevens Institute of Technology, United States | Aug 2023 - May 2025 |
| B.Tech. Computer Science | KJ Somaiya College of Engineering, Mumbai University | Aug 2019 - May 2023 |
LinkedIn · Mail · Blogging Agent
if it's in a repo, it has tests. if it's in prod, it has a rollback plan

