I build retrieval-augmented applications and the full-stack products around them. The common thread is traceability: an answer should point to the file and line range, or the page and section, it was built from, and say so plainly when nothing qualifies.
LinkedIn · All repositories · Bengaluru, India
Repository Q&A with line-level citations. Live demo · Source
The scanner splits each file into line-aware chunks, caches embeddings and persists every scan stage. At query time, vector and lexical search run over the same chunks and the two ranked lists are merged with reciprocal-rank fusion, so neither retriever's scores need calibrating against the other. Answers stream back with bounded context, and each reference links to a file and line range at the scanned commit.
Next.js · TypeScript · FastAPI · Supabase (Postgres) · Gemini embeddings · Groq
Start with backend/rag.py and backend/scanner.py.
Document Q&A that refuses to guess. Live demo · Source
PDF and text files are chunked with their page and section metadata and indexed in ChromaDB. Candidates are scored on semantic similarity plus lexical coverage, then pass a relevance gate. If nothing qualifies, the API returns "Information not available in the uploaded documents." without calling the LLM, so a question the documents can't support never reaches the model.
React · Vite · TypeScript · Tailwind CSS · FastAPI · ChromaDB · Sentence-Transformers · PyMuPDF · Groq
Start with services/retriever.py and api/chat.py.
Repository graph and pull-request change analysis. Live demo · Source
Explore a repository at a pinned revision as a 3D or 2D graph of Python declarations and module imports. For a selected pair of pull requests, the analyzer compares shared files and identifiers, function signatures and removed response keys, and records the source reference and revision behind each finding. The analysis is static, so findings are advisory: calls aren't resolved, and isolated execution needs a configured runner.
Next.js · TypeScript · React Three Fiber · FastAPI · SQLAlchemy · PostgreSQL · Playwright
Start with app/intelligence.py and app/analyzer.py.
The project scenes are Three.js models of each workflow, checked against the source in PORTFOLIO-VERIFICATION.md.
AI and full-stack
- Nexvio: interview-video and posture-analysis services with queued processing and task-status endpoints. TypeScript · Python · Demo
- MergeProof: runs two individually passing Git changes and their combined merge in isolated clones, and reports a confirmed interaction only with assertion evidence. Python · Git · Docker
- Sales Analytics: React and Convex dashboard with reactive queries, year and revenue filters and switchable charts. TypeScript · Convex · Demo
- EchoVault AI: React chat app with browser-local history and a serverless model API route. React · JavaScript · Demo
- Smart Resume AI: extracts text from PDF/DOCX resumes and returns structured suggestions. Python · Flask · Groq · Demo
- Smart Trip Planner: plans a trip from a plain-language request using open geocoding, weather and attractions data. Python · Flask · Demo
Android
- Shishu-Sneh: tracks a baby's growth, vaccinations, feeding and milestones, with local storage in Room and feeding and vaccination reminders scheduled through WorkManager. Kotlin · Room · WorkManager
Machine learning
- Emotion detection: Streamlit app that classifies the emotions in a piece of text with a Hugging Face Transformers pipeline. Python · Transformers · Streamlit
- Crop recommendation: notebook comparing scikit-learn classifiers, from logistic regression to gradient boosting, on soil nutrients and climate readings. Python · scikit-learn · pandas
AI & retrieval: Python, RAG pipelines, Gemini API, Groq, ChromaDB, Sentence-Transformers · Machine learning: scikit-learn, Hugging Face Transformers, pandas, Streamlit, Jupyter · Backend: FastAPI, Pydantic, PostgreSQL, Supabase, SQLAlchemy, Docker · Frontend & mobile: TypeScript, React, Next.js, Tailwind CSS, Three.js, Kotlin · Quality & delivery: pytest, Playwright, Ruff, Git, Vercel
- Cite or decline. An answer points to a file, line range, page or section, or says that nothing qualified.
- Pin the revision. Results record the commit or revision they were computed against.
- Fail visibly. Explicit failure states and bounded context instead of silent fallbacks.
- Test the boundaries. Tests sit around retrieval, API contracts and analysis limits.
I'm open to AI engineering and full-stack roles. LinkedIn is the quickest way to reach me.