Senior Java backend tech lead, now in Paris, France. 11+ years shipping production systems at NASDAQ and Cisco, and these days building applied AI tools with LLMs.
Actively searchingFull right to work in FranceNo sponsorship needed
Personal projects where I practise applied AI end to end: from prompt to production.
Fit Check Service
GenAI web app that scores a resume against a job post: skill-by-skill breakdown, company and role summary, and a cover letter checked against the resume.
Ranked like chess pieces: the queen is the strongest piece on the board.
♛
QUEEN
Core Java
Main expertise. Java 7 to 11 upgrades, framework-level work, production depth.
♚
KING
Applied AI
Claude API, Gemini API, LLM integration, LangGraph agents, GitHub Copilot.
♞
KNIGHT
Spring & Spring Boot
Spring AOP and AspectJ, Jackson, the structured alerting framework at NASDAQ.
♜
ROOK
CI/CD
Git, Jenkins pipelines and plugins, JUnit, Bash scripting.
♝
BISHOP
Agile & leadership
Scrum, code reviews, high-level design, mentoring new hires.
♟
PAWNS
Also in the bag
Python, FastAPI, Docker, Kubernetes basics, C++ basics, AWS basics, OTT tech.
Case studies · how I work
Two stories behind the bullet points: one from work, one I built on my own.
One framework instead of dozens of patches
NASDAQ · SMARTS trade surveillance · Senior tech lead
CONTEXT
Product and business stakeholders wanted more structured, detailed alert output so compliance analysts could investigate market abuse faster. The plan was to add the new fields to each of dozens of alert types, one at a time.
THE PROBLEM
Going alert by alert meant inconsistent formats, a long timeline, heavy regression testing, and the same cost again for every future field.
WHAT I BUILT
One shared framework: Spring AspectJ captures the alert data in a single place without touching each alert's business logic, and Jackson serializes it into one consistent structured format. I prototyped it on one or two alert types, got the stakeholders to agree, then led the build and the migration.
RESULT
Every alert now produces the same structured output, so analysts read and investigate alerts more easily.
15% less development effort for alert changes.
Better performance on alert generation and payload size.
New fields go into one place instead of every alert.
Fit Check: making an LLM stop inventing skills
Personal project · Python, FastAPI, Gemini, Docker, Render
THE PROBLEM
Judging whether a job fits my profile meant reading every post in full, and generic AI tools listed "matching" skills the job never asked for.
WHAT I BUILT
A web service that fetches a job post, scores it against a resume with Gemini, and returns a skill-by-skill breakdown, a short company and role summary, and a cover letter checked against the resume. It handles single jobs and batches of up to 10.
THE HARD PART
The model kept claiming resume skills the job never mentioned, and prompt rules alone didn't stop it. I added a post-filter in code that keeps a skill only if every one of its words appears in the job text. Job pages also broke scraping (bot blocks, JavaScript-only pages), so the scraper sends proper headers and falls back to the page's meta description.
RESULT
Live on Render in Docker, with a free daily quota per visitor and a bring-your-own-key option.
Results only list skills the job actually asks for.
B.Tech Computer Science, SJCE Mysore (2008 to 2012)
9.24 GPA, ranked 9th
Final project: image enhancement with Hadoop MapReduce
POWER-UPS
Generative AI, ChatGPT prompting and AI Agents in LangGraph (DeepLearning.AI)
AWS basics and advanced (A Cloud Guru)
JavaScript, Python bootcamp, Spring (Udemy)
LANGUAGES
English: fluent
French: A1, progressing towards A2
Hindi: fluent
Kannada: native
Save point
Looking for a senior backend or applied AI role in Paris, hybrid or remote. Happy to talk about Java (the code or the coffee ☕), trade surveillance, or turning LLMs into tools people use.