ResumeSoftware EngineerSeattle, WA
Nitesh Shantha Kumar
Technical lead for Nordstrom’s clearance and promotions platform. I build event-driven systems on Kafka and PostgreSQL, measure before I change anything, and write down the alternative I didn’t pick.
- Now
- Software EngineerNordstrom · Pricing & Promotions · Aug 2021 – present
- Owns
- Tech leadClearance & promotions platform · REST + Kafka ingestion · 4 engineers
- Proof
- 1,000 → 10msP99 redemption latency, now handling 10× the concurrency
Read this first
- Technical lead for a clearance and promotions platform — REST + Kafka ingestion, four engineers building in parallel.
- Measure before designing: production baselines, architecture decision records, shadow-mode parity checks before every cutover.
- Fast, quantified incident work: PostgreSQL CPU 100% → <10% within 24 hours; a 20K-item backlog root-caused in 1h18m.
- Agentic tooling: an incident-investigation plugin with 10 skills and 7 subagents, now extended by other engineers.
Impact at a glance
Production numbers, before and after. Click a row for the story behind it.
What changed after the fix?
Each row is scaled to its own “before”, so the orange bar shows what’s left.
Experience
Each line is a short case study. Open one for the full detail, or pick a skill below to see where I used it.
Nordstrom
Seattle, WA Software Engineer — Pricing and Promotions PlatformAug 2021 – PresentTechnical lead for a clearance & promotions platformTwo ingestion paths plus a business-user app, split so four engineers could build in parallel.4 engineers
Technical lead for a clearance and promotions platform with two ingestion paths — a synchronous REST API and an asynchronous Kafka consumer — plus a business-user application. I decomposed delivery into dependency-mapped worktracks so four engineers could build in parallel, and owned design review and integration across them.
Legacy Oracle + Airflow → Kafka, with zero downstream changesTransactional outbox, shadow-mode parity check, split feature flags, tiered rollback.0 consumer changes
Migrated clearance and end-of-lifecycle event publishing off a legacy Oracle and Airflow pipeline onto Kafka using a transactional outbox with confirmed-flush acknowledgement. It published to the existing topics with identical schemas, so downstream consumers needed zero configuration changes.
Cutover was gated on a production shadow-mode parity check behind split feature flags, with tiered rollback covering named failure scenarios. See Fig B.
Replacing ~28,000 blocking calls a day with a compacted topicBaselined production first; three ADRs, each naming the rejected alternative.3 ADRs
Designed the replacement of ~28,000 blocking per-clearance product-service calls a day with a log-compacted Kafka topic consumed into a local read store, keeping the upstream service as a permanent fallback on a miss.
Before designing, I baselined production latency and error rate: 32ms average, p99 199ms, 0.05% errors across 197,579 calls. I wrote three architecture decision records, each naming the rejected alternative and the constraint behind it.
Async batch over synchronous fan-out, rate-limited on purpose2K clearances/min against a 10-minute SLA, to protect upstream services.2.5× load tested
Chose asynchronous batch processing over synchronous downstream calls, then rate-limited to 2K clearances/min against a 10-minute SLA. That protects the upstream inventory, pricing and conflict services even with 5× headroom. Load tested to 2.5× the production limit.
A ~20,000-clearance backlog, root-caused in 1h18mContainment first, then the structural fix, then an RCA with five causal chains.14 follow-ups
The job loaded the entire queue each cycle against an upstream service that resolved ~7 records/sec, with per-request batching unavailable — a hard ceiling of about 350 rows per 50-second cycle. Try the numbers in Fig C.
I shipped bounded batching as containment, then per-call timeouts and commit-and-continue resilience as the structural fix, and published an RCA with five causal chains and 14 prioritised follow-ups.
PostgreSQL CPU from 100% to under 10% in 24 hours5.6B sequential row reads, zero index scans — one COALESCE on a view’s join keys.82,460 → 13
Traced 5.6B sequential row reads with zero index scans to a COALESCE that blocked index use on a view’s join keys. Before proposing the fix, I proved the keys were never null and that row output was identical (EXPLAIN cost 82,460 → 13; rows scanned 7.5M → 3).
The fix removed the need for a proposed user-facing restriction.
Promotion redemption limits as one atomic operationValidation and counter increment together, so race conditions can’t exceed a limit.P99 1,000 → 10ms
Redesigned promotion redemption limit enforcement as a single atomic database operation that combines validation and counter increment, eliminating limit violations caused by race conditions. P99 redemption latency dropped from 1,000ms to 10ms, with support for 10× concurrency.
An agentic incident-investigation toolkitAn installable plugin that runs triage across Slack, New Relic, GitHub, Confluence, ServiceNow and Jira.10 skills · 7 agents
Built and published an installable plugin with 10 skills and 7 subagents that automates incident triage across Slack, New Relic, GitHub, Confluence, ServiceNow and Jira, backed by 36 structured root-cause documents. Another engineer has since extended it in a 1,557-line pull request.
An alerting programme that can actually fireStarted after two incidents where monitoring looked healthy but couldn’t alert.7 of 9 live
Built the platform alerting programme after two incidents where monitoring looked healthy but could not fire: 11 category pages that pair every alert condition with concrete triage steps. 7 of the 9 proposed alerts are now live in production.
Ak Aerotek
Bengaluru, India Software EngineerMay 2016 – May 2019- Verification and validation of safety-critical avionics software to DO-178B/C, writing Ada test harnesses and running them against target hardware.
- Led a team of 6 through code and audit reviews, cutting the delivery defect rate by 90%.
How I work
Habits that show up in the work above.
- Baseline before designing.Production latency, error rate and volume come first — 197,579 calls measured before touching the product-service path.
- Write down the road not taken.Every ADR names the rejected alternative and the constraint that ruled it out.
- Prove parity before cutover.Shadow mode in production, split feature flags, and rollback tiers mapped to named failures.
- Contain first, then fix the structure.Bounded batching stopped the bleeding; timeouts and commit-and-continue stopped it recurring.
- Prove a fix is safe, not just fast.The keys were shown to be never null and the output identical before the index fix shipped.
- Alerts ship with triage steps.An alert nobody knows how to act on is only half an alert.
Skills
Skills marked ↳ jump to the experience where I used them.
Languages
Distributed systems
Data
Cloud & operations
AI & tooling
Projects
Open-source work on GitHub, from agentic developer tools to robotics.
Education
M.S., Engineering Sciences (Robotics) — University at Buffalo, NY
2019 – 2021Graduate Research Assistant in the LANDR Lab, working on autonomous-vehicle perception and sensor fusion.
B.E., Electronics & Communication — Visvesvaraya Technological University, India
2011 – 2015Let’s talk systems, agents, and the engineering between them.
Email is the best way to reach me.