I build and ship production Node.js / TypeScript systems end-to-end — from schema design through CI/CD. What pulls me in is solving real problems for real people.
Designed a 3-stage queue pipeline (render → upload → finalize) across 7 BullMQ queues, checkpointed in Redis — a worker crash resumes from the last completed step, not the start.
Encrypted every guest phone with AES-256-CBC + unique IV per record. Decrypted only inside the send worker; masked as +91*****1234 in every API response and log.
Split retries into retryable vs non-retryable — bad data routes straight to a dead-letter queue instead of burning the 3-attempt budget.
Reused a single Puppeteer browser across render jobs to produce 400×600 thumbnail + 800×1200 full card from one HTML pass.
Redis-backed rate limiter with per-endpoint quotas (login 5/15min, signup 3/hr, event-create 20/hr) and standard X-RateLimit headers.
Deployed as two Docker services (API + Worker) behind Nginx; graceful SIGTERM with 10s force-kill timeout.
Live · Chrome Web Store·Manifest V3 · Open-source · 2025
Primary path: calls ChatGPT's internal /backend-api/conversation/{id} with the user's auth token — one shot, complete history, no scrolling.
Fallback path: MutationObserver auto-captures messages live while the user scrolls; dedup keyed on stable data-message-id UUIDs, so jumping around mid-capture is safe.
Last-resort path: snapshot whatever is currently in the DOM — useful for shared / read-only chat URLs.
Custom DOM-to-Markdown walker preserves code blocks with language detection, headers, bold/italic, links, and lists.
Popup state persists across closes via page localStorage; status indicators, animated counter, keyboard shortcuts (1/2/3).
Live · Telegram Bot·AI Vision · Safety-first · 2026
Built a 2-stage AI pipeline (read → explain) so the system never guesses and explains in a single unsafe step.
Used Claude Vision instead of traditional OCR to accurately read real Indian medicine strips with reflective packaging and noisy text.
Implemented a confidence gate (0.75 threshold) — low-confidence medicine reads are rejected and users are asked for a clearer image instead of risking hallucinated medicine names.
Purpose-aware flow: after reading the medicine, the bot asks why the user is taking it and tailors the awareness response to reduce unnecessary panic.
Two-tier caching system (Redis → Postgres) keyed by medicine + purpose to avoid repeated AI calls and reduce operational cost.
Safety-first architecture with disclaimer enforcement, no diagnosis/prescription logic, Redis-based daily rate limits, and graceful fallback handling.
Cache-first writes: UI updates from Redis immediately while a worker queue handles the durable write — perceived latency drops without sacrificing correctness.
Horizontally scaled real-time events with Redis pub/sub + Socket.IO adapter; consistent broadcast across instances behind a load balancer.
Production hardening: structured logging (Pino), config validation, central async error handler, graceful shutdown, PM2 clustering.
Durable background pipeline with retries and exponential backoff for every external call.
Also — client production work
Projects I built for clients during agency work. Less of a soul story, more of a "I shipped what was needed."
Three engineering roles, and the finance career that came before them. One thread runs through all of it — a quiet focus on performance, reliability, and results measured from real production.
Conversational-AI assistant for banking — home-loan & credit-card support
Worked on the team behind an LLM support assistant that answers banking queries — home loans, credit cards, interest rates, loan tenure — using RAG over product docs to deflect routine questions from human agents.
Built the bot-to-agent handoff over WebSocket with a Redis-backed queue, so a session escalates to a live agent when user intent is high or model confidence is low, instead of guessing.
Added a confidence gate with grounded, doc-only prompting so the assistant routes uncertain answers to a human rather than risk a wrong reply.
Built a Claude vision agent for the WhatsApp channel that reads uploaded bills (image or PDF), extracts the amounts into the accounting (Tally) workflow, and asks the user to resend when the image is unclear.
May 2024 — Jul 2025
Jaipur
Full-Stack Engineer · Technoloader Pvt Ltd
Real-time trading platform
Re-architected the live-price feed from a 1-second MySQL poll to an event-driven Redis publisher/subscriber model — filtered Binance ticks land in Redis and fan out to subscribed Socket.IO clients, cutting price-delivery delay from up to ~1s to near real-time.
Took live prices off the database hot path — stored only the latest value per coin in Redis and snapshotted to MySQL on an interval instead of writing every tick, removing continuous per-tick writes and per-second polling reads.
Cut infrastructure cost ~40% by serving real-time data over Redis pub/sub instead of a heavier message-broker setup (e.g. Kafka) and removing the bulk of recurring database calls — sized deliberately for the platform's ~100–500 active users.
Moved signup email verification off the request–response cycle into a Redis-backed async job — the API enqueues and responds immediately instead of blocking on the email send, cutting signup response time from ~1–2s to under ~100ms.
Restructured the app into a modular monolith — an API server for admin/client requests and background jobs, plus a dedicated socket server holding the single Binance connection — filtering to the ~20 most-traded coins and exposing a Redis "market-live" flag so clients always knew prices were fresh.
Mar 2022 — May 2024
Hyderabad
Full-Stack Engineer · Avisirah Technologies
Real-time social platform
Built feed and messaging APIs on Node/Express + MongoDB with Redis as read-cache for hot timelines.
Implemented JWT access/refresh auth with HttpOnly cookies and RBAC across admin / user / moderator routes.
Extracted shared middleware (auth, validation, pagination, error formatting) into a reusable layer used across every module.
Cached high-read endpoints in Redis with TTL invalidation; p50 response time down ~20%.
Delivered real-time chat, presence, and read receipts over Socket.IO with Redis-backed fan-out across instances.
2019 — Feb 2022
India
Financial Advisor · Aditya Birla Capital
Financial advisory — pivoted to software engineering in 2022
03The toolbox
Stack
What I reach for when shipping. Not a checklist — these are the ones I've actually used to solve real production problems.
Languages
●JavaScript (ES6+)
●TypeScript
Frontend
●React
●Next.js
●Redux Toolkit (RTK Query)
●Tailwind CSS
Backend
●Node.js
●Express
●REST
●WebSockets / Socket.IO
●BullMQ
●RabbitMQ
●JWT
●RBAC
Databases
●PostgreSQL (Drizzle ORM)
●MongoDB
●MySQL
●Redis
●Firebase Firestore
Infra & DevOps
●AWS (EC2, S3)
●Docker
●Nginx
●PM2
●CircleCI (CI/CD)
●Swagger / OpenAPI
Tools
●Cloudinary
●Puppeteer
●Razorpay
●Firebase (Auth, FCM)
●Pino
04Notes from production
Writing
Notes from production. Mostly the boring stuff that actually keeps systems up.