- 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.
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 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.
via query consolidation
via cache redesign
shipped to enterprise
backend systems
experience
- 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.
- 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.
skills
Integrations & APIs
Backend & Frameworks
AI-assisted & agentic dev
Debugging & observability
Data
Cloud & DevOps
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
- Heap analysis with Eclipse MAT — heap was fine, the
-Xmx8gcap held. - 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.
- 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.
- 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.
resume
One page. Built for engineering hiring managers.
Highlights LLM systems, JVM performance work, and integration architecture across enterprise customers.