DataLineage Doctor
LLM-powered RCA engine for data quality incidents, with OpenMetadata.
Software Engineer
01 IDEA
NexBell was the first role where I owned a real production system under live traffic. It was a multi-vendor marketplace platform serving 50+ independent stores, all running on a shared Django and MySQL backend. The system had grown organically for years. Features were stacked on features. Indexes were inherited from migrations that no one remembered writing. The session-based login was showing its age.
02 FRAMING
My first job was to take ownership of the auth layer. The legacy session cookies were vulnerable to fixation, and the role checks lived in scattered decorators across the codebase. I rebuilt login on OAuth2 and JWT, attached a clean RBAC layer, and gated every protected endpoint behind a single decorator. The hard part was the migration path. Existing sessions had to keep working while we rolled out the new flow, so we ran the two in parallel for a month before sunset. PR review for a 9-person team was the meta-work. Introducing mandatory CI gates made "did CI pass?" the first thing every PR read.
03 BUILD
The second big push was a query rewrite. The original ORM code had lazy-loading everywhere. N+1 queries were common, and the indexes were inherited from migrations no one remembered writing. I redesigned composite indexes on the high-traffic tables (vendor-product mapping, order-history rollups) and rewrote the 12 hot-path queries to do eager-fetch and bulk reads. Query execution time dropped 17% across the deployment, measured at the median. Tail latency dropped more, because the worst offenders benefited most from composite indexes.
04 DEPLOY
Cloud spend was the third lever. A previous engineer had provisioned staging as a pair of always-on m5.larges that nobody touched. I migrated the always-on fleets to reserved instances (1-year, no-upfront), collapsed the idle staging environment into spot capacity, and rebuilt CI/CD on CodePipeline and Docker. Deploys went from "submit a PR and someone sshes into the bastion" to a 12-minute automated pipeline. Lead time fell from hours to minutes, and cloud spend fell 35%.
05 WHAT'S NEXT
The deploys themselves were the unsung hero. Blue/green on the ALB with session draining. Postgres migrations gated behind a no-DDL-during-traffic runbook. Celery worker pools split by task class, so a slow batch job couldn't starve the realtime queue. By the end of my time there, shipping a feature was a 12-minute loop: PR, CI gates, CodePipeline, ALB swap, dashboards show new error rate, latency, and conversion within five minutes. That's the muscle memory I now expect on every team I join.
medium · 7 min read · postgresql · database · sql · crud
medium · 8 min read · postgresql · sql · joins
medium · 8 min read · postgresql · sql · aggregations
medium · 8 min read · redis · high-availability · cache · distributed
medium · 8 min read · microservices · docker · rabbitmq · distributed-systems
medium · 6 min read · rabbitmq · distributed-systems · async
medium · 10 min read · ai · computer-vision · webrtc · mobile
native · 7 min read · rabbitmq · distributed-systems · async
native · 12 min read · microservices · docker · rabbitmq · distributed-systems
For the architecture deep-dive: three-layer build, isolation strategy, deployment topology. Read the case studys: DataLineage Doctor, and Algocode on /work.