SARVESH.KARGUTKAR
--:--:--

Senior Software Developer · UtopiaTech

SARVESHKARGUTKAR

I build the layer between hardware and humans — real-time IoT platforms in Angular, TypeScript and Node.js, where thousands of devices report in and the dashboard has to stay honest.

eazyiot · telemetry ● live
SK

Sarvesh Kargutkar

Mumbai, IN · Angular / Node.js / MQTT

01

Experience

2017 → present
Oct 2023 — PresentUtopiaTech Pvt. Ltd.

Senior Software Developer

EazyIoT — hardware-agnostic IoT platform

  • Led full-stack development of EazyIoT, a hardware-agnostic IoT platform built with Angular, Node.js and TypeScript.
  • Architected and deployed scalable backend systems on AWS, integrating MQTT and EC2 for real-time device communication.
  • Cut load times and improved responsiveness by reworking Angular component structure and caching strategy.
Sep 2022 — Oct 2023UtopiaTech Pvt. Ltd.

Software Developer

EazyIoT — dashboards & data visualization

  • Designed customizable drag-and-drop dashboards using Gridstack, with Google Charts and Apache ECharts for visualization.
  • Worked across product, design and QA to keep end-to-end delivery moving without handoff gaps.
Dec 2018 — Jun 2019Space Up Tech.

SDE Intern

React.js · internal tooling

  • Built frontend features for a book publishing application in React.js.
  • Supported backend work on internal tools, plus debugging, maintenance and UI improvements.
Jun 2017 — Dec 2017Gravity Techno

Hardware Intern

Embedded systems · diagnostics

  • Debugged and repaired electronic hardware modules — the grounding that still shapes how I read device data today.
02

EazyIoT · Case study

flagship · 2022 → present

Most IoT platforms are built for one vendor's hardware. EazyIoT is built for whatever arrives next. Everything reaches the platform over MQTT — but what's inside the payload never agrees: one controller sends clean JSON telemetry, another emits binary frames that have to be decoded byte by byte, a third sits behind a gateway relaying register blocks from a panel that has never heard of the internet. Same platform, same dashboards, no rewrite.

RoleFull-stack lead
Duration3+ years, ongoing
SurfaceIngest → dashboard

The signal path

Every reading a device sends crosses five layers before it becomes a number someone acts on. Each one is where a different class of bug lives.

Ingest MQTT

One transport for every device. Topic structure carries identity and direction, so routing a new device family costs nothing at the edge.

Parse Per-device-type

Paired in/out parsers per device type, resolved at runtime. JSON payloads, binary frames and relayed register blocks go in — one flat, normalized shape comes out.

Store Mongo · Influx

Device state and config in MongoDB, high-frequency telemetry in InfluxDB — separated so neither query pattern starves the other.

Derive Rule engine

Scheduled cloud functions turning raw current and voltage into runtime, uptime, faults and outage windows.

Surface Angular

Drag-and-drop dashboards, per-tenant layouts, charts that stay responsive with thousands of points on screen.

Three problems worth writing down

Protocol translation
One transport, four dialects

Adding a device family shouldn't mean touching the core. Each device type ships a key map and a parser pair, so a structured telemetry payload, a binary frame and a gateway-relayed register block all land in the same normalized document.

The hard half is the write path: turning a schedule a user drew in a browser into the exact byte layout a controller expects, then reconciling the acknowledgement that comes back. Config is a conversation, not a POST.

Derived metrics
Devices report current — people ask about uptime

No device sends "this fixture was on 91% of last night." That gets inferred: measured current against rated wattage tells you how many lamps in a fixture are alive; relay state tells you which hours even counted as operational.

Most of the difficulty is time. Cron jobs run in UTC containers on IST infrastructure, outage windows cross midnight, and a day boundary computed in the wrong zone silently shifts every report by five and a half hours. The rules are resumable and day-wise by design so a restart never double-counts.

Reliability
The bug that only appears under load

A handler that opened a fresh database client per incoming message worked perfectly in testing and exhausted the server's file descriptors in production. The fix was small — one pooled client, a raised container limit — but finding it meant reading the failure from the OS down, not the app up.

Deployments got the same treatment: scripted pull, build swap and service recreate, so shipping is boring on purpose.

03

Projects

04

Stack

what I reach for
Education B.Tech · 2019 — 2022

St. Francis Institute of Technology, Mumbai · CGPA 9/10

Recognition Tech Award ×2

For leadership and on-time delivery of key IoT product milestones at UtopiaTech.

Competition Hackathon wins

Winner — UtopiaTech Hackathon and the Odoo Developer Challenge.

Open to interesting problems

Let's build something
that reports back.

Best reached by email — I answer quickly. Happy to talk IoT architecture, Angular performance, or anything that streams.