// backend engineer & product builder

I build the backends that make products work.

5+ years shipping production systems in Node.js, TypeScript, and Deno. Primary backend engineer on 8+ products across AI tools, payment systems, trading platforms, and developer-facing products — deployed on AWS, GCP, and beyond.

8+
Products shipped
5+
Years experience
93.5%
MCA — Univ. of Rajasthan
[00]

How I work

I'm a backend engineer who enjoys building products, not just features. I like understanding the business context, the user's pain points, and the reasoning behind technical decisions. I often use the applications I work on to discover usability issues, identify opportunities for improvement, and suggest features that create more value for users. My goal is to build software that is reliable, simple to use, and solves real problems.

[01]

Product thinking

I connect business goals, user pain points, and technical decisions.

[02]

Quality ownership

I build systems that are reliable, simple to use, and solve real problems.

[03]

Proactive impact

I spot issues, suggest improvements, and ship features that create value.

[01]

What I do

Backend engineering across products, APIs, and infrastructure.

API Architecture

REST APIs, webhooks, wallets, P2P transfers, subscription billing, and partner-facing integrations.

Data Layer

PostgreSQL, MySQL, MongoDB. Redis caching for latency-sensitive APIs.

Cloud & DevOps

AWS (ECS, EC2, RDS, SES, ALB, Beanstalk), GCP, DigitalOcean. Docker + CI/CD pipelines.

Auth & Security

HashiCorp Vault for secrets, role-based access, API key management, webhook signature verification.

AI Integrations

OpenAI & Groq for generation and scoring. Building with Cursor, Claude Code, Windsurf, Codex.

Payments & Integrations

Real-money rails — UPI, crypto (Lightning, Binance), fiat. Razorpay, Cashfree, Paytm integrations end-to-end.

[02]

Selected work

Production systems I built or led the backend on.

SaaS / E-commerce

Vkardz

NFC-based digital business-card and e-commerce SaaS serving 22,000+ registered users and 36,000+ generated cards. Built the full backend on Express.js/TypeScript + MySQL: a multi-gateway checkout (Razorpay, Cashfree, COD) that processed 1,500+ live orders, JWT auth with DB-whitelist token validation, and node-cron subscription-expiry jobs. Deployed on AWS with CodeBuild CI/CD.

Express.js · TypeScript · MySQL · AWS
Payments infrastructure

Ninjapay

Multi-service transactional platform handling concurrent financial operations: deposits/withdrawals, QR payment links, vouchers, and versioned partner APIs. Architected as 3 independently deployable Node.js/TypeScript microservices on AWS ECS over a shared RDS PostgreSQL instance. Built a trading engine against the Binance Broker API (HMAC-SHA256 signed orders via CCXT, per-user sub-accounts, atomic settlement with rollback) and node-cron workers for escrow release and invoice reconciliation. Payments rails: UPI + Lightning Network.

Node.js · TypeScript · PostgreSQL · AWS ECS
Productivity / AI

TodoResume

AI product with 4,500+ users and 4,800+ resumes generated. Built the backend on Node.js/TypeScript: OpenAI GPT-4o-mini, Gemini Flash, and DeepSeek behind a credit-metered usage system, a JSON → Handlebars → Puppeteer PDF/DOCX rendering pipeline writing to Google Cloud Storage, and an HMAC-verified Razorpay webhook with atomic transaction handling. Deployed on DigitalOcean; frontend on Vercel.

Node.js · TypeScript · OpenAI · Razorpay
AI SaaS / Tooling

Ningenie

Billing owner on a 3-engineer agentic-AI trading platform (Next.js, MCP-based tool integration). Built an idempotent reserve-then-charge credit ledger in PostgreSQL/Drizzle — a unique requestId constraint prevents double-charging on retries — with dual subscription/purchased credit pools and Cashfree recurring payments via UPI/eNACH.

Next.js · PostgreSQL · Drizzle · Cashfree
Multi-tenant platform

Ninx

Multi-tenant platform. Crypto + fiat invoicing, Binance trading, tiered withdrawals, and automated compliance.

Node.js · TypeScript · Binance
Trading systems

Nin Terminal & Nin Trade

Trading and execution platforms. Nin Trade backend built on the Deno runtime for speed and type safety.

Deno · TypeScript
[03]

Backend battles

Product problems I turned into backend wins.

Payments infrastructure

Ninjapay

Production incident

Hunting down a production freeze

The problem
Ninjapay started freezing on us. Requests would just hang, time out, and the whole app would get stuck in a loading state that never resolved. From a user's point of view, it had simply stopped working — and on a payments app, that's not the kind of thing you can sit on.
What I noticed
The symptom pointed at the data layer, so I went digging through the logs to figure out which requests were causing it and why. After a fair bit of tracing and testing, the picture came together: the database connection pool was getting exhausted. Connections were being opened but never handed back, so eventually there were none left, and every new request just sat there waiting forever.
The fix
So I went through every endpoint that ran a SQL transaction, one by one, checking how each handled its connection. Two of them were the problem — they opened a connection but never released it. Every time those routes ran, a connection leaked, and over time that quietly drained the whole pool. The rest were fine.
The tradeoff
The fix itself was small: I added the missing release logic in a finally block on both endpoints, so the connection always goes back to the pool whether the query succeeds or throws. Restarting the database cleared out the connections that had already leaked — but that was just cleanup. The code change is what actually stopped it from happening again.
The outcome
  • The freezes were gone
  • Connection usage stayed flat under load instead of creeping up until it choked
  • A real fix, not a restart-and-pray patch
AI resume builder

TodoResume

Product story

Removing the friction that was costing us users

The problem
Building a resume meant filling out a long form from scratch. It was thorough, but slow — and the effort came before users got any value.
What I noticed
The drop-off wasn't about form length. People abandoned halfway because they couldn't justify the upfront effort. We were losing users before they reached the payoff.
What I built
I let users upload their existing resume, extracted the data with an LLM, and pre-filled the entire form automatically. The blank-page problem disappeared — users started near the finish line.
The tradeoff I solved
At scale, every pre-fill was a paid model call. I moved extraction from OpenAI to cheaper models like DeepSeek and Gemini. Since users review and edit the data, it didn't need premium accuracy — cutting inference cost by 89% with no UX impact.
The outcome
  • Resume completion rates rose ~60%
  • Higher subscription conversion and improved retention
  • Lower cost per user, keeping the feature sustainable as it grew
~60%
completion lift
89%
inference cost cut
0
premium model calls needed
Under the hood

Making autosave durable without overloading the backend

The problem
The resume form autosaved as the user typed, persisting each draft to the database as JSON. But the save fired on every keystroke, generating a flood of redundant writes for data that wasn't final yet — on our highest-traffic and highest-friction page.
What I noticed
I caught this in the network tab: the frontend was hammering the save endpoint far more than the feature needed. It was a frontend behavior, but it was creating real backend load, so I flagged it and drove the fix with the frontend team.
The fix, and the tradeoffs behind it
I debounced the save so it fires only after the user pauses typing. I tuned the delay from 2 seconds down to 1 second to balance backend load with a responsive feel. To close the debounce gap, we added a localStorage copy as an instant safety net. The database stayed the canonical source of truth for cross-device portability, with localStorage acting only as the in-the-moment buffer.
The outcome
  • Sharply reduced redundant write volume on our heaviest form
  • No change to the user experience — autosave still feels instant
  • Drafts are now resilient (survive an accidental tab close) and portable (available across devices)
[04]

Stack

Technologies I reach for daily.

Languages
TypeScriptJavaScript
Backend
Node.jsExpress.jsNext.jsDenoREST APIs
Databases
PostgreSQLMySQLRedisMongoDB
Cloud & DevOps
AWSGCPDigitalOceanVercelFirebaseDockerCI/CD
Payment & Platform Integrations
RazorpayCashfreePaytmBinance APILightning Network
Auth & Security
Firebase AuthHashiCorp VaultHMAC-SHA256RBAC
AI / LLM
OpenAIGroq
[05]

Experience

Senior Software Engineer

AppITron Solutions · Jaipur, IN
Nov 2020 — Apr 2026
  • Shipped 8+ web products from zero to production across AI SaaS, payments, trading tools, and productivity apps — primary backend engineer on most.
  • Built backends for Ninjapay, Ninx, Ningenie, Nin Terminal, and Nin Trade — a product suite handling UPI, crypto, fiat with Razorpay, Cashfree, and Paytm.
  • Built wallets, P2P transfers, subscription billing, invoicing, trading flows, compliance workflows, and partner-facing API integrations end-to-end.
  • Added Redis caching for latency-sensitive APIs and managed secrets across services with HashiCorp Vault.
  • Deployed across AWS (ECS, EC2, RDS, SES, ALB, Beanstalk, CloudWatch), GCP, DigitalOcean, and Vercel with Docker and CI/CD.
  • Mentored 3–5 junior developers; trained the team on AI coding tools (Cursor, Claude Code, Windsurf, Codex) for faster delivery.

University of Rajasthan

2021 – 2023
MCA — 93.5%

University Maharaja College

2017 – 2020
BCA — 74%
[06]

Let's build something

Open to backend roles, contract work, and interesting product problems.

~/saurabh — zsh
welcome to saurabh.sh — type 'help' to begin
$