Software engineer with a strong foundation in Android development (Java & Kotlin), now building reactive, multi-tenant backend systems in Kotlin with Spring Boot and WebFlux, alongside TypeScript + Next.js frontends. I also build and evaluate machine learning models in Python, with a focus on applied, production-minded ML rather than notebooks that never leave the notebook.
Also shipped production services in Node.js (NestJS, Express) and MongoDB before moving to the Kotlin/Spring stack.
The Kotlin + Spring Boot service behind FarmerXential, built on WebFlux and designed for tenant isolation from the request boundary upward.
- Non-blocking request pipeline with WebFlux and Kotlin coroutines
- Tenant and request context propagated through the Reactor Context so identity survives every async hop
WebFilter-driven context seeding, with Spring Security handling authentication at the edge- Owns auth, tenancy and rate limiting for the ML service, wrapping every inference call in Resilience4j circuit breakers, retries and bulkheads β degrading to a static fallback when the model is unreachable
- Distributed tracing and correlation via OpenTelemetry
KotlinΒ·Spring BootΒ·WebFluxΒ·Project ReactorΒ·Resilience4jΒ·R2DBCΒ·PostgreSQL
An early-warning platform for agricultural extension officers, pairing a typed web application with a dedicated ML inference service.
Web platform
- Dashboard, alerts, risk map, reports and settings, built on a typed data layer
- Full farmer management module β searchable table, detail panel, add-farmer flow and full-screen profile view
- Regional focus with location-aware risk modelling
Next.js 14Β·TypeScriptΒ·ReactΒ·Tailwind CSS
ML service β AgroTech-ml-service
FastAPI inference service that turns a farmer record β or a bare pair of GPS coordinates β into a decomposed agronomic risk assessment.
- Risk composed as Hazard Γ Exposure Γ Vulnerability, so each term is separately computable and checkable: drought/disease/heat hazards from FAO-56 water balance and BLITECAST epidemiology, exposure priced in USD, vulnerability from weighted coping capacity
- Calibrated
HistGradientBoostingClassifiercontributes a vegetation hazard term β trained on 7,527 real samples across 185 sites and 6 Sub-Saharan clusters, evaluated with leave-one-cluster-out and forward-chaining CV against three baselines - Sentinel-2 optical and Sentinel-1 radar remote sensing plus ERA5 reanalysis, with a nightly precompute job so a live prediction is a database read and a model call
- Prediction β outcome audit trail in Postgres that closes the loop back into training labels
- Protected attributes are rejected by the vulnerability model, not merely unused β a system allocating extension visits and credit must not route them by gender or education
PythonΒ·FastAPIΒ·scikit-learnΒ·pandasΒ·PostgreSQLΒ·Sentinel-2/1Β·DockerΒ·GCP
- Restaurant Order Classifier β predicts delivery success from order and logistics features
- Exploratory Analysis Notebooks β feature engineering, model comparison and evaluation with pandas, scikit-learn and seaborn
Granular access control service β role hierarchies, menu-level permissions and DI-driven service composition.
More on my GitHub repos β
- π§ Email: iamshankarbhandari@gmail.com
- πΌ LinkedIn: linkedin.com/in/shankarbhandari2057
- π₯οΈ Stack Overflow: stackoverflow.com/users/20598818/shankar-bhandari
Thanks for stopping by β always open to learning, collaborating, and building something meaningful π



