I build software that runs in production, not just in a notebook. Full-stack across Python, Java, React, Node.js, and SQL — with ML underneath when a project needs it.
Most demos stop at two tabs. Here's the trace from ChatSphere — a real-time chat app — where I found a presence bug that only showed up on the third one.
A recruiter-facing tool that ranks multiple candidate resumes against a single job description by keyword match — automating the bulk screening step recruiters do manually. Fully client-side, no data uploaded anywhere.
Clones a GitHub repo, chunks code by function/class, embeds into a Chroma vector store. An agent loop built on Claude tool-use (search_code, get_file) answers questions with file:line citations, served via FastAPI.
Scores a resume/LinkedIn profile against a target job description using TF-IDF and cosine similarity, plus checks for completeness, quantification, and action-verb strength. Full CI pipeline with automated tests and Docker support.
End-to-end retrieval-augmented Q&A engine using TF-IDF retrieval, the Claude API, and a React.js frontend.
Real-time chat app with JWT auth. Found and fixed a multi-device presence bug affecting all multi-tab sessions; added rate limiting. See the trace above for the full story.
Random Forest classifier for loan approval. Compressed 173.7x for lightweight deployment (5.6MB → 32.3KB) while holding 81.8% accuracy — served via a Flask REST API.
A personal CRM for job-search outreach — logs recruiter/alumni contacts, tracks reply status, and auto-flags anyone needing a follow-up after 3 days of silence. Full CI pipeline with automated tests and Docker support.
CRUD inventory management system with role-based auth, search, filtering, and pagination.
CNN-based classifier distinguishing real photographs from AI-generated images.
Image-upload-based desktop app that detects facial emotion and recommends music accordingly, built with a Tkinter GUI.