Skip to content
Mahesh Kadambala

India · Remote-friendly

Mahesh Kadambala

Backend Engineer transitioning to Full Stack Engineer

I build multi-tenant enterprise SaaS on Java and Spring Boot — event-driven microservices, tenant-safe search over millions of records, and APIs that hold up in production. Now extending that depth across the stack with React and TypeScript, because the best systems are designed end to end.

What I build

Three kinds of systems, one throughline: software that solves a business problem and stays maintainable after I move on.

Selected projects

Case studies, not screenshots — the problem, the architecture, the trade-offs, and what happened in production.

Enterprise SaaSProduction

EquipOS

Enterprise equipment lifecycle platform

Multi-tenant SaaS that runs the full equipment lifecycle — installation, warranty, service, claims, inventory, and field operations — for enterprise customers.

JavaSpring BootPostgreSQLKafkaRedis

Developer ToolsMaintained

Spring Search DSL

Composable query DSL and parser for Spring Data + Elasticsearch

An open-source library that turns a compact query language into safe, parameterized, tenant-scoped queries — pluggable across SQL and Elasticsearch backends.

JavaSpring BootElasticsearchPostgreSQLOpen Source
All projects

Latest articles

Long-form writing on backend architecture, distributed systems, and AI-assisted engineering.

AI Engineering3 min read

AI-Assisted Engineering Without Losing the Plot

A year of using AI agents on production backend code: where they genuinely compress work, where they quietly create debt, and the review discipline that makes the difference.

Architecture3 min read

Building an Enterprise Search Engine on the JVM

How we replaced unindexed SQL filtering with a custom query DSL compiled to tenant-scoped Elasticsearch queries — the grammar, the AST, the trade-offs, and what I'd do differently.

Distributed Systems3 min read

The Transactional Outbox, Properly

Dual-writes between your database and Kafka will lose events — quietly, rarely, and at the worst time. Here's the outbox pattern as actually implemented, including the parts the diagrams skip.

All articles

Latest LinkedIn posts

Short-form engineering notes — one idea at a time.

Distributed Systems1 min read

Your microservices are losing events. Quietly.

If a service writes to its database and then publishes to Kafka, there is a crash window where the commit succeeds and the event never leaves the building. It happens rarely — maybe once a month — which is exactly why nobody notices until the data has drifted. The fix costs one table. Write the event to an outbox row in the same transaction as the business change, let a relay publish it, and make consumers idempotent. Atomicity becomes the database's problem, and databases are very good at that problem.

Open on LinkedIn

Architecture1 min read

In multi-tenant systems, 'default tenant' is where bugs go to hide

Code review heuristic that has caught real incidents: search the codebase for tenant fallbacks. Every `getTenantOrDefault()` is a future cross-tenant leak wearing a convenience costume. A request that reaches the data layer without a resolved tenant should throw — loudly, immediately, in staging. Fail closed. The exception you see today is the data leak you don't see next quarter.

Open on LinkedIn

AI Engineering1 min read

Review AI-generated code like a PR from a brilliant hire who's never seen production

Brilliant: stop reviewing syntax, it's clean. Never seen production: check every transaction boundary, every retry, every assumption about ordering and time. AI code fails exactly where systems fail — at the boundaries — and the polish of everything around the bug is what lulls reviewers past it. The engineers getting real leverage from AI aren't the ones who prompt best. They're the ones who review best.

Open on LinkedIn
All posts

Let’s talk

Open to senior backend and full-stack roles, and always happy to compare notes on distributed systems. Email is fastest.