QMMMQU                                  
                                       Q%###%%#%%MUCC  UOL                           
                                    M#WW#@@@@@#W%#####MQU  CCC                       
                                  MM%@@@@@@@@@@@@@WMQO#ML UQQUC                      
                                O#%%%@@@@@@@@@@@@@@@@#W%@#MW##WUO                    
                                #@@@@@@@@@@@@@@@@@@@@@@@@@%%@@#QOL                   
                              U#%%@@@@@@@@@@@@##WMMMMMMWQQW###WQO                    
                              W#%@@@@@%%##WWMMQQQOOOOOUUULCCLUMQLLC                  
                             WW%@@@@@WMQQQQOOOOOOOOOOULJJi  iLQOCCLOOO               
                            Q#W%%@@@MOOOOOOUULUULUUUULLC    !CW#W#MOQQM              
                             ###%@@WOW%%@@%%#QULLLLOM##%##QL !U%%WWQW#Q              
                             M#%%@#M%WMQQQMMWWMOUUUQMMQMQOUULCJQ@%%MUQ               
                             W#%%@QOULUOMWWWMMQOULLOQM#WMOLJJ1!CM@WQQU               
                             Q##%WULLM#WW%#W%#WOC iOW#WW%#MOLJ1 C%#OQ                
                             UW%%OLUQQOOOQMWWMOU1  !LQWWMOUC;   :UOUC                
                              OM%OLLUUUOOOOOOOOUC:   CUJ;:,    .:1ULL;               
                              OLMOCLCLLLCLLOOLLUCJJ1:,ULC1;    ,,1U!1;               
                              LLMOCCCCCCCUOQOOMQOUUOLJUQOULJ!:..,iLC!                
                               QWQCCCLLLUQQQW%%%%##OJ1CQQMOUCi:,,i!!                 
                               OQMOULLUOW@%QQMQQQMQMQOOOM##MUC!!!J;:                 
                               UOWMMOUUQ#%@#CL        C#@%#QLJCL1CJ                  
                                 UQMMQOQ%#MWWWMQOULUUCUOO#WOUOU1J                    
                                  QMMWMW%#QUOUUOOOOUL1iLOWMQQQUUL                    
                                   O###%%#WWW##%@@%#QULOMMQWMOMOQMQO                 
                              #%%%@@%#%%%%%%%%%%%#WQOUOMWQMMW%%@@@@@@@@O             
                           W%@@@@@%@@#W%@%%%%%#WWWMMULLLUOQ#O1#U %@@@@@@W            
                          M%%@@@@@@@@@UOW%%%%%###%%%WW#MMWQJ;J#%Q  M@@@@Q            
                         O#%%@@@@@@@@@UUUOM%%@@@@@@@%@@%QCi!:C%#QU  W@@%             
                         W%#%%@@@@@@@%OUUUUUOOQMWWWWQQOC!!i;:i#WMU  #@%              
                         W%%#%@@@@@@@%MOUUUUUUUUUUULLL1;;!;::1%#   Q@#               
                       M%%%%%%%@@@@@@@#MOUULUUULUUUULL1!i;;:iM%M  O#Q                
                    UQ#%%%%@@%%%%@@@@@%#MQOUUUULLLLLLCJJ1i!CW#MOUQQUUU               
                QM%%%%%@@@@@%@@@@@@@@@@@%#WQOUUULLLCCCLCCLMWWWQOQQOOOOO              
             W##%%@@@@@@@@@@@@@@@@@%@@@@@@@@#QQOOOUUUUUOOW#%Q QWWQWWW%O      U       
          ###%%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@#QOOOOQQUUUOQQO#%%@@%Q       UOQU     
       U##%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%##MUOOW#%%@@@%@@@@%MO         QWQ     
      Q%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@#QW%@@@@@@@@WW%@WQOQO         M#W     
     UW#%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@W%@@@@@@@@@@@@@@@@WWWOOUQQU         M#WU    
     #%@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@M#@@@@@@@@@@@@@@@@WOOOOW#O          QWW     
    WW%@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@M#@@@@@@@@@@@@@%WMQQO MWWO          QWQ     
   Q#W#@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@QW@@@@@@@@@@@#MWMMQOQQWMQOUUU       OQO     
OUO#%##@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@OW@@@@@%%%%WOQMWMMMOUQWWQO OQU       QO     
OOW#%%%@@@@@%@@@@@@@@%%@@@@@@@@@@@@@@@@@@QW@@@@@@@#MQUOWMWMMUOWWWWOUOQUU U   OMQ     
OQ#%%%#@@@@@@%@@@@@@@%%@@@@@@@@%@@@@@@@@@QW@@@@@@%%%WQM#%%#W MMWW#Q UQQUOUU   OOU    
1W%%%%#%@@@@@%@@@@@@@@%%@@@@@@@@@@@@@@@@@M#@@@@@@%@%WQM#%%%% QW###QOQMQOMQQQU UQO    
L#%%%%#%@@@@@@@@@@@%%@@%%@@@@@@%%@@@@@@@@W#@@@@@@@%%#OW%@@@@ M##W#WQMMQQQQQQQQOOO    
Q%@%%%%%@@@@@@@@@@@%%@@%%%@@@@@@%@@@@@@@@W#@%%@@@@@%%W%@@@@@W####WWWMMQMMMMQOQMQOM   
W%@@@@%#%@@@@@@@@@%%@@@@@%@@@@@@@@@@@@@@@##@%@@@@@@@W%@@@@@@#M%%%#WWMMMMMMMQOUOMWWO  
%%%@@@@%#@@@@@@@@%%@@@@%@@@@@@@@@@@@@@@@@##@%@@@@@@%#@@@@@@@%O%@%%#WWMQQMQMWQ  Q%#MO 
%@@@@@@@#%@@@@@@@%@@@@@%@@@@@@@@@@@@@@@@@W#@@@@@@@@%%@@@@@@@#O%%%%###WMQMQMQO  O%@%MU
./nisarg.txt
BACKEND · INTEGRATIONS · AI

I optimize production systems for enterprises that simply cannot afford to fail.

Software engineer at OpsHub. I work close to enterprise customers on integration tooling, JVM performance, and AI assisted developer workflows.

0%
Reduction in DB calls
via query consolidation
0%
Faster API processing
via cache redesign
0+
Custom OIM connectors
shipped to enterprise
0+
Years building Java
backend systems
02

experience

SDE 2
OpsHub · Ahmedabad, GJ
Current Oct 2025 — Present
Designing AI-assisted configuration automation for enterprise integrations — turning natural-language intent into validated, production-aligned configs with deterministic apply and safe rollback…
  • Designing AI-assisted configuration automation for enterprise integrations — translating natural-language intent into validated, production-aligned configs with deterministic apply and safe rollback.
  • Built an intent-to-schema translation layer converting unstructured user input into strongly-typed JSON Schema, so the apply step stays deterministic even when the input layer is fuzzy.
  • Implemented multi-step agent orchestration using Spring AI: intent detection, clarification, schema synthesis, validation, apply — with tool/function calling and stateful execution.
  • Created an A/B eval that tests prompt and model changes against a regression suite of canonical customer configurations.
  • Worked directly with product and support to map real customer language onto our configuration, to imporove one shot prompt accuracy.
SDE 1
OpsHub · Ahmedabad, GJ
2.5 yrs May 2023 — Sep 2025
Shipped two custom OIM connectors against partner REST APIs, drove a 90% / 80% cut in third-party API calls and processing time via cache redesign, and led an escalated customer project to early delivery…
  • Built and shipped two custom integration connectors for OpsHub Integration Manager against partner REST APIs — auth, pagination, error handling. Enabling new customer integrations.
  • Cut third-party API calls by 90% and processing time by 80% through API profiling, cache redesign for shared access, concurrency-safe synchronization, and graceful fallback when upstreams degrade.
  • Reduced DB calls for rank-data migration sync by 99% via call-path profiling, redundancy elimination, and query consolidation — unblocked larger customer workloads.
  • Led an escalated enterprise customer triage: automated environment provisioning in Python, coordinated stakeholders across CS and engineering, delivered first milestone ahead of schedule.
  • Mitigated application OOM by adding interceptor-based logging that truncates oversized log strings — small change, wide-reaching fix.
Software Engineer · Intern
OpsHub · Ahmedabad, GJ
5 mo Jan 2023 — May 2023
Fixed a breaking migration bug by updating architecture to handle migration of audits with type change. Diagnosed and patched incorrect work-item creation flows…
  • Fixed a breaking migration bug by updating architecture to handle migration of audits with type change.
  • Diagnosed and patched incorrect work-item creation flows; reported root cause to the upstream system and implemented a workaround to prevent user-impacting updates.
03

skills

Integrations & APIs

RESTOAuth 2.0WebhooksPaginationRate limiting & backoffJsonRPCWebSocketWebRTC

Backend & Frameworks

JavaSpring BootHibernate / JPAJUnitTestNGMockitoPythonNode.js / ExpressTypeScriptSQLBash

AI-assisted & agentic dev

Spring AITool / function callingMulti-step orchestrationEval frameworks & A/BPrompt engineeringRAGEmbeddingsOpenAI & Anthropic SDKsLangChain

Debugging & observability

Java Flight RecorderNative Memory TrackingEclipse MATJVM GC tuningLinux memory accounting

Data

MySQLPostgreSQLMongoDBRedisElasticsearchRocksDB

Cloud & DevOps

DockerJenkinsGit · Gitea
04

projects

Case studies and side projects. Click any card to expand the full write-up.

The problem we found

Professional Services engineers writing XSL transformations for customer integrations were stuck in a 7-step loop: write the transform, save, hit a save-time error and guess at the cause, create a test integration, run a work-item sync, get an unexpected result, debug. Most of the time was spent in scaffolding around the transform, not in the transform itself.

What we shipped

  • AI-assisted authoring — Spring AI generates a first-pass transform from source/target schemas plus the user's stated intent.
  • XSLT Transformer UI — paste a sample payload, run the transform in isolation, see output and errors immediately. No test integration, no sync job.
  • AI-assisted debugging — when output diverges from expectation, the assistant explains the mismatch and proposes a grounded fix.

The win was scope, not tech. Removing steps 4 and 5 of the inner loop is what made the AI assist actually useful.

Stakeholder math

  • Solution targets 50% time saved of the mapping portion per project.
  • This increases team overall output by 10%.

What it says about how I work

Picked the user-journey problem. Worked across PS engineering to validate the cost was real before building. Currently in rollout — measuring against the projection, not assuming it.

What broke

An enterprise customer ran our application on a dedicated VM. After a few months of normal usage they hit a 90% memory warning. Restart cleared it. They scaled the VM to 40 GB; weeks later the warning came back at 35 / 40 GB. Clearly scaling with the real consumer, not with the JVM heap cap.

How I triaged it

  1. Heap analysis with Eclipse MAT — heap was fine, the -Xmx8g cap held.
  2. Switched to off-heap. Native Memory Tracking and a Java Flight Recorder session showed JVM-side total at ~10 GB. The OS reported 35 GB. Twenty-five gigabytes unaccounted by the JVM.
  3. That gap is the giveaway: if NMT says 10 GB and the kernel says 35 GB, the JVM does not own the memory. Something the JVM calls into is allocating outside its view.
  4. Suspect list narrowed to RocksDB, used as embedded on-disk state. Linux memory accounting confirmed the resident set kept climbing even as the workload went idle.

Root cause and fix

RocksDB's allocation pattern is a stress test for general-purpose allocators — many small variable-size allocations with mixed lifetimes. glibc's ptmalloc fragments badly under that pattern and rarely returns pages to the OS, so resident set keeps growing. Switched the allocator to jemalloc, which is designed for that workload and returns pages aggressively. RSS flattened.

What it says about how I work

The framing was wrong twice — first "the app is leaking", then "it's the JVM". The right move was to stop trusting one tool's numbers and walk down a layer (heap tools → NMT/JFR → kernel memory accounting → allocator behavior) until the numbers reconciled. That layered habit is what I bring to "debug complex issues across service boundaries."

What it does

Hosts can spin up an audio room, share an invite, and run a live lecture with real-time speaking-permission controls. Guests join with a JWT, request the mic, and get promoted by the host. Built end-to-end as a two-person team — backend REST APIs, signaling, and the React/Redux frontend.

Why it's relevant

Practical experience with WebRTC signaling, JWT-based auth, room state management, and the ugly bits of real-time delivery (peer connection lifecycle, ICE, reconnection). Useful counterweight to the Java/integration work, shows fullstack and frontend reach.

The pattern

Same shape as a lot of integration work: pull state from one system (calendar), drive a client in another (meeting app), and handle the edge cases (cancellations, login state). Small, ugly, useful.

05

resume

One page. Built for engineering hiring managers.

Highlights LLM systems, JVM performance work, and integration architecture across enterprise customers.

Format
A4 · 1 page
Size
~123 KB