Dhrumil B.

Software Engineer — Ahmedabad, IN

Hi, I'm

DhrumilBhut

2.5+ years crafting scalable backend systems — distributed job pipelines, infra-heavy APIs, and the applied-AI layer on top: RAG pipelines, multi-agent workflows, and MLOps.

Resume ↗
Node.jsPostgreSQLDistributed QueuesRAG PipelinesRedisRabbitMQFastAPIpgvectorAWS LambdaMLOpsNode.jsPostgreSQLDistributed QueuesRAG PipelinesRedisRabbitMQFastAPIpgvectorAWS LambdaMLOps

01 / About

I build backends that stay up under load — and AI pipelines that show their work.

I'm Dhrumil Bhut, a Software Engineer based in Ahmedabad, India, with 2.5+ years designing and shipping production-grade backend systems: scalable APIs, distributed job pipelines, and infra-heavy services built with Node.js, PostgreSQL, and AWS.

Beyond the request lifecycle, I work in Applied AI: RAG pipelines, multi-agent workflows, and MLOps — with a particular interest in evaluation and observability, because a pipeline you can't inspect is a pipeline you can't trust.

0.0+

Years shipping production software

0+

Projects shipped end-to-end

0+

Influencer channels served

0%

Query time reduced in production

Currently

Software Engineer at Zuru Tech India — architecting the production backend of an influencer-management platform serving 1000+ channels across Instagram, TikTok, and YouTube.

02 / Experience

Where I've Shipped

Aug 2023 — Present · Ahmedabad, India

Zuru Tech India Pvt. Ltd.

Software Engineer

  • Architected the core backend for Netra, an Influencer Management Platform, with a centralized Express.js middleware layer handling JWT/session auth, request validation, and dual-layer rate limiting that independently throttles inbound API traffic and outbound YouTube quota without cross-interference.
  • Implemented BullMQ + Redis distributed job scheduling with deduplication, retry logic, and concurrency control; built RabbitMQ consumer pipelines and cron-based schedulers for automated media publishing across Instagram, TikTok, and YouTube, fully decoupling heavy operations from the request lifecycle.
  • Built a full asset library with watermark-based vendor distribution: background jobs produce processed copies with 6 placement options, proportional scaling, and edge-anchored positioning across image and video, keeping internal originals unchanged.
  • Developed an AWS Lambda API for automated media preview generation, cutting compute costs ~20% and improving media load times ~30%; integrated YouTube Analytics API for real-time influencer performance tracking with automated data syncing across multiple channels.
  • Optimized DB schema and query patterns across a multi-database production setup (PostgreSQL + SQLite), improving overall application performance by 20% and reducing query execution time by 40%.
Node.jsExpress.jsPostgreSQLSQLiteAWS LambdaRedisRabbitMQBullMQJWT

Mar 2023 — May 2023 · Remote

iNeuron.ai

Full Stack Developer Intern

  • Built a hotel management system with a React.js frontend and a Node.js/Express.js REST backend.
  • Integrated MongoDB for efficient data handling and CRUD operations in a production-ready deployment.
Node.jsExpress.jsReact.jsMongoDB

03 / Featured Work

Featured Work

ContextLens

Overview

A self-hosted RAG observability stack that decomposes LLM responses into atomic claims, attributes each claim to its source chunk via cosine similarity, and runs an LLM-as-judge faithfulness check. It surfaces a per-claim verdict — faithful, partial, unfaithful, or refusal — instead of a single opaque faithfulness score.

The Problem

Most existing eval tools (RAGAS, LangSmith, Braintrust) collapse two fundamentally different failure modes, bad retrieval and bad generation, into one faithfulness number. A team debugging a wrong answer has no way to know from that score alone whether the retriever pulled the wrong chunk or the model hallucinated on top of a correct one. ContextLens exists to make that distinction explicit, at the level of individual claims within a response, not the response as a whole.

Architecture / How It Works

FastAPI backend, Celery workers for async processing, PostgreSQL with pgvector for embedding storage and similarity search, Redis for task queuing and caching, a Next.js frontend for the dashboard, and a lightweight Python SDK that instruments the calling application. The SDK's context manager captures a trace (query, retrieved chunks, generated response) and ships it to the backend on a background daemon thread, fire-and-forget, so instrumentation never blocks the caller's actual request path.

Key Decisions

  • IVFFlat over HNSW for the pgvector index: for a self-hosted, single-developer threat model at realistic dataset sizes, IVFFlat's simpler build and lower memory footprint won out over HNSW's marginal recall improvement.
  • asyncpg with raw SQL instead of an ORM: full control over query shape and performance for pgvector similarity queries.
  • Fixed-window over sliding-window rate limiting: matched the actual single-user threat model instead of over-engineering for scale that doesn't exist yet.
  • Quote-first reasoning in the LLM judge prompt: the judge quotes the exact span of the source chunk it relies on before rendering a verdict, grounding judgment in specific text rather than abstract reasoning.
  • Frozen-response retest methodology: when fixing attribution or judging logic, the same frozen set of previously generated responses is retested against new logic, isolating whether a fix actually improved classification accuracy.

Challenges & Solutions

The attribution threshold was calibrated against an organic 14-query RAG test run, not synthetic data. The initial 0.75 cosine similarity cutoff misclassified paraphrased claims as retrieval failures, since paraphrasing lowers surface-level similarity even when meaning is preserved. Fixed with a three-band confidence model: a clear match above 0.75, a clear non-match below 0.65, and a low-confidence band from 0.65 to 0.75 escalated to the LLM judge instead of auto-classified. Separately, refusal detection was added so a model correctly declining to answer isn't counted as a hallucination.

Tech Stack

PythonFastAPICeleryPostgreSQLpgvectorRedisNext.jsTailwindOpenAI SDK

01 / 03

04 / Other Work

Other Work

LinkQ

A production-grade URL shortener that separates redirect performance from analytics. Clicks are tracked asynchronously via a RabbitMQ worker so redirects are never delayed by database writes. Redis serves four distinct roles: redirect cache, atomic click counter, sliding-window rate limiter, and token store for a two-token JWT auth system with immediate revocation. Deployed on Railway with a 5-service architecture and a GitHub Actions CI pipeline.

Node.jsExpress.jsPostgreSQLRedisRabbitMQDockerRailwayGitHub Actions

LLM Search Platform

Production-grade RAG pipeline with Airflow-orchestrated ingestion, pgvector embeddings, and idempotent tasks with retries. MLflow model governance with metric-driven auto-promotion prevents silent regressions. Dual-server architecture serving REST and MCP-compliant JSON-RPC from a single logic layer.

PythonPostgreSQLpgvectorApache AirflowMLflowLangChainDocker

Voice-Driven AI Coding Assistant

Converts natural speech into executable code using LLMs. Dual-server backend: REST API and MCP JSON-RPC server share a single logic layer, eliminating duplication. Real-time speech processing with structured project generation.

PythonFastAPIOpenAI APIMCPSpeech-to-TextText-to-Speech

Conversational RAG QA Chatbot

Document Q&A system with PDF ingestion, persistent chat history, and context-aware retrieval. Maintains conversation memory for accurate multi-turn responses.

PythonLangChainHugging FaceChromaDBStreamlit

Financial Content Automation

Autonomous multi-agent system generating publication-ready financial content from live market data. Specialized agents handle ingestion, analysis, drafting, and QA with minimal human intervention.

PythonCrewAILangChainLLMs

Multi-Source AI Search

Conversational AI aggregating knowledge from Arxiv, Wikipedia, and DuckDuckGo into a unified experience. Combines structured tool use with LLM reasoning for accurate, real-time responses.

PythonLangChainStreamlitArxiv APIWikipedia API

League of Legends Match Predictor

ML model predicting match outcomes from historical game data using feature engineering, a PyTorch training pipeline, and evaluation across match statistics.

PythonPyTorchScikit-learnPandasNumPy

06 / Skills

Technical Stack

Backend & API

Cat—A
Node.jsExpress.jsREST APIsAWS LambdaJWTSession-based AuthMiddleware Design

Languages

Cat—B
PythonJavaScriptSQL

Queues & Jobs

Cat—C
RabbitMQBullMQRedisDead-letter QueuesCron Scheduling

Databases & Caching

Cat—D
PostgreSQLSQLitepgvectorRedis

Infrastructure & DevOps

Cat—E
DockerDocker ComposeGitHub ActionsAWSRailwayApache AirflowGit

Applied AI & LLM

Cat—F
RAGVector SearchLangChainOpenAI APIGroq APICrewAIMLflowEval PipelinesHugging Face

07 / Contact

Let's build
something solid

Whether it's a side project, a collaboration, or just a chat about backend systems and AI — my inbox is open.

dhrumilbhut@gmail.com