About
From raw data to deployed prediction APIs — every system built, tested, and live.
Achievement-driven ML professional with a PG Diploma in Data Science from IIIT-Bangalore (3.7/4). I build complete systems — not just notebooks — covering data ingestion, EDA, feature engineering, model training, evaluation, and deployment via REST APIs.
My work spans classical ML, deep learning (CNN/RNN/Transfer Learning), NLP, computer vision, and Generative AI (RAG, Agents, LangChain). Every project here is live and interactive.
Core Competencies
Key Metrics
Drag to rotate · each face shows a
live project stat
Education
Skills
End-to-end capabilities — from raw data through classical ML, deep learning, NLP, computer vision, and Generative AI to production deployment.
Projects
All projects are hosted on Render free tier — first load may take ~15s to spin up.
ML Capabilities
Upload a new production batch CSV and compare it against the training baseline. PSI, KS test, and distribution histograms for numeric columns; category frequency shifts for categoricals. Trend sparkline tracks drift score across multiple batches.
Deduplicate rows, impute missing values with 8+ numeric strategies (Mean, Median, KNN, MICE) and 4 categorical strategies, remove outliers via IQR / Z-score / Winsorize, fix skewness, and apply Yeo-Johnson power transform. Download a clean CSV or hand off directly to AutoML.
log1p, sqrt, Yeo-Johnson, percentile rank, outlier flag, and missing flag per numeric column. Plus binning, polynomial pairs, interaction terms, date extraction, and cyclical encoding (sin / cos). All transforms are fit on training data only — no leakage.
Track every page view and tool interaction on this portfolio in real time. Events flow from the browser into a PostgreSQL database via a FastAPI ingestion API, then Supabase Realtime pushes each row to the dashboard the moment it lands — no polling, no refresh.
Upload a contract, then one or more invoices. Flags amounts, dates, and terms that disagree across documents, each with the two source passages and an explanation — never comparing invoices against each other, since they're expected to differ.
Upload invoices, contracts, resumes, medical reports, bank statements, and more. AI classifies the document type, extracts structured fields with confidence scores, and highlights each field's location with bounding box overlays.
Ask questions in plain English and get executable SQL instantly. The agent generates SQL, runs it against a real database, explains results, and retries automatically on errors. Supports Chinook demo DB, SQLite upload, and PostgreSQL.
Hold up one hand fingerspelling an ASL letter and this recognizes it live from your webcam — MediaPipe hand landmarks feed a k-NN classifier trained on real photos, entirely client-side. Rescoped from a general "sign language translator" brainstorm to the real sub-problem a single-frame classifier can honestly do: individual letters, not whole signed words or ASL grammar (which needs sequence models over video, a fundamentally different problem). J and Z are excluded since both require motion a static frame can't capture, matching the same convention as the Sign Language MNIST benchmark. Measured held-out accuracy: 79% across 24 letters (chance is ~4%), evaluated on real photos never included in the shipped classifier — rotation-normalizing the hand was tried and found to hurt accuracy, so it was dropped.
Upload 5-30 photos from one fixed-tripod night-sky session and this detects meteor/satellite streaks using the real technique operational detectors use: differencing time-adjacent frames, then a Hough transform on the difference. The key discriminator is a dipole vs. monopole check — a star that drifts slightly between frames leaves a paired positive/negative streak in the difference (which cancels out), while a transient meteor or satellite trail leaves a one-sided streak with no opposite-sign counterpart. Also returns a median-stacked "clean" image, since median stacking rejects the same transients this tool detects. Deliberately does NOT attempt a meteor-vs-satellite verdict — tested against synthetic ground truth and found genuinely unreliable to distinguish with position drift alone, so every detection is labeled "possible meteor or satellite trail," never a confident classification. No neural network, no GPU needed — pure classical OpenCV.
Upload 2-6 photos of the same static scene from different angles and get a real sparse Structure-from-Motion reconstruction: SIFT feature matching, essential-matrix pose estimation for the first pair, then incremental PnP-based camera registration and triangulation for each additional photo, rendered as an interactive colored 3D point cloud. No bundle adjustment, no camera calibration, no dense mesh — an educational demonstration of the real photogrammetry technique behind COLMAP-style tools, explicitly not a forensic-grade measurement tool.
Show your face to your camera (or upload a photo) and it checks whether it's a genuinely live face or a spoofed presentation — a printed photo, a phone/screen replay. Same category of check that gates face-unlock and identity-verification systems. Pure local ONNX inference, no API key or budget cost.
Upload two side-view walking videos and this tracks body pose with MediaPipe (reusing Movement Form Comparison's exact extraction pipeline), detects each video's repeating gait cycles from knee-angle peaks, averages the joint-angle curve across all detected strides into one signature per video, then compares the two. Deliberately NOT a validated biometric identification technique — real gait-recognition research uses silhouette-based deep embeddings under controlled conditions and still has real error rates; this coarser, monocular, uncalibrated technique only shows whether two clips display a similar walking pattern, never proof of identity. Runs entirely in the browser; no video ever leaves the device.
Upload your workout video and a reference video of the same movement, and this tracks body pose in both with MediaPipe's PoseLandmarker, computing 6 real joint angles (elbows, knees, hips) from 3D world-landmark coordinates — the geometrically correct choice for angle math, matching published MediaPipe joint-angle validation studies. Both clips are aligned to a shared 0-100% movement-phase axis so a 4-second clip is directly comparable to a 6-second one, then ranked by RMS angle deviation with the single biggest-gap moment called out per joint. Assumes one person per video and one full rep start-to-finish — a training-form aid, not a clinical assessment. Runs entirely in the browser; no video ever leaves the device.
Upload a batch of photos and describe what you're looking for in plain language — 'the red backpack', 'a dog on a beach' — and every photo is ranked by how well it matches. CLIP embeds both the images and the text query into the same space, no manual tagging or captioning needed. Stateless: nothing is stored between searches.
Upload 2-30 timelapse photos for a growth-over-time curve, or a single photo with multiple plants to compare their current size to each other — an HSV green-hue threshold measures foliage pixel area, no ML model or API call needed. Auto-detects and separates multiple plants in one shot into independent measurements, and auto-detects a before/after collage photo to split and chart as growth over time instead. Also reports an RGB vegetation index (a stress/yellowing signal independent of size) and a leaf count per plant. Catches a stress or decline trend in the numbers before it's visible to the eye.
Turn on your camera and your hand movements drive a real-time generative particle visual — a creative-coding bridge between pose tracking and VJ-style motion graphics. Hand landmarks are tracked entirely in your browser via MediaPipe (no video frame ever leaves your device). Optionally turn on your microphone too: particle size and density react to live volume — whatever the mic hears, not beat or genre detection. The only tool on this site with no backend call at all.
Upload a photo and this detects each person and checks whether a hard hat and safety vest are visible on them. Verified the existing 601-class object detector has no safety-vest class of any kind before building this, so a dedicated model (Hansung-Cho/yolov8-ppe-detection, MIT-licensed weights, exported locally to ONNX — no new AGPL runtime dependency, same pattern as the site's existing detector) was hands-on tested rather than trusted from its model card. An initial test on a very low-resolution photo gave a weak result; re-tested on 3 higher-resolution real photos and got a real, confident pass (hard hat 0.72-0.88, safety vest 0.39-0.69), including correctly avoiding a false compliance claim on a photo of gear just lying on the ground (reported "unclear" rather than guessing). Compliance is always read from an explicit present/absent signal the model was trained on, never inferred from a lack of detection.
Upload a short video and type a description of an object (e.g. "the red backpack") — Grounding DINO (IDEA Research, Apache 2.0) finds it once in the first frame, then SAM2 (Meta, Apache 2.0) tracks and masks it through the rest of the clip via its video memory mechanism. Originally scoped around Meta's SAM3, which does this natively from text, but SAM3's checkpoints are currently gated behind a Meta access request with no reliable pip package — so this uses the well-established real "Grounded-SAM" combination of two freely-available models instead. Both are inference-only forward passes, verified end-to-end on real CPU hardware (no GPU needed, unlike 3D Gaussian Splatting which was rejected for exactly that reason). Output is a downscaled, reduced-framerate sampled preview, not a full-resolution exported video file.
Upload a new sighting photo and a gallery of past sightings of the same species — crops the animal from each photo (reusing the site's existing 601-class object detector), then compares them with MegaDescriptor (BVRA/MegaDescriptor-T-224), a foundation model built specifically for individual animal re-identification rather than a generic vision embedding. Verified with real photos: two different goldfish side-by-side in one photo scored 0.60 cosine similarity (correctly "different"), the same fish crop compared to itself scored 1.00 ("same"). Deliberately not a validated identification system — same/uncertain/different bands are informed by one real test, not a calibrated multi-individual benchmark. MegaDescriptor is CC-BY-NC-4.0 (non-commercial).
Upload a photo and craft an adversarial attack against a pretrained classifier — subtle FGSM/PGD perturbations, a visible adversarial patch, or a black-box query-only attack with zero gradient access — untargeted or aimed at a specific ImageNet label. Try two inference-time defenses (JPEG recompression, randomized smoothing), an optional transferability check against a second model, and a third section demonstrating adversarial TRAINING as a defense on a small digit classifier — attacking a standard-trained vs. an adversarially-trained model with the same PGD attack and showing the real, measured robustness gap (98.6%→1.1% vs. 97.0%→84.3% accuracy under attack). Reports honestly whether defenses actually recovered the correct label, and whether a targeted black-box attack even converges within a request-sized query budget (often it doesn't) — real limitations, not a broken demo.
Paste a code snippet and see documented stylometric signals (comment density, generic naming, docstring formality, exception-handling style, boilerplate phrasing) alongside an independent LLM opinion, side by side. Deliberately never outputs a probability or an "AI-written" verdict — no reliable general-purpose detector exists in published research, and shipping a specific confidence number here would repeat the exact overclaiming mistake this site rejected for fire-detection and signature-verification.
Upload any file and it's converted into the same grayscale "byte-plot" image real malware-visualization research uses, alongside a sliding-window Shannon-entropy heatmap — sustained near-random entropy is a genuine, established sign of packed or encrypted content, the actual technique tools like PEiD/Detect It Easy rely on. If the file parses as a Windows executable, a hand-rolled PE header read also checks a classic packer tell: whether the entry point sits in the file's last section. Deliberately not a malware-family classifier — no viable pretrained model or accessible labeled dataset exists for that without gambling on an unreliable data source, so this ships the real technique the field falls back on for triage instead. Never executes the uploaded file; pure static byte analysis, capped at 5MB.
Paste a Chrome/Edge extension's manifest.json and get it checked against a documented risk taxonomy: individually-risky permissions (debugger, nativeMessaging, webRequestBlocking, cookies, history…), broad host access (<all_urls>), and known dangerous combinations — e.g. broad host access + network interception + cookie access, which together enable session hijacking on any site. Static declared-permission analysis only, not a behavioral scan — a legitimate password manager can need the same broad permissions, so results are framed as "worth a closer look," never a verdict on intent.
Upload a CAPTCHA-style image and a vision-language model attempts to read it — modern VLMs solve plain text CAPTCHAs far more easily than classic OCR ever could. A single intensity slider then stacks three classic, model-agnostic hardening techniques (pixel noise, an occlusion wave, contrast/color reduction) and the model tries again, shown side by side. Deliberately non-gradient (no FGSM/PGD): the model here is a black-box hosted API, the same real constraint a CAPTCHA vendor faces against an unknown solver, so this reproduces genuine hardening technique rather than an attack tailored to one model. Only ever reads an image you upload — never contacts or automates a live CAPTCHA challenge on a real website.
Paste raw email headers and get two honest signals: what the receiving mail server's own Authentication-Results already found (SPF/DKIM/DMARC verdicts, relayed not re-verified), plus independent live DNS lookups of the sending domain's real SPF/DMARC records and DKIM key status, with a From:-domain alignment check. Deliberately does not attempt cryptographic DKIM signature verification, which needs the full message body — disclosed openly rather than faked.
Upload a personal photo and add an imperceptible adversarial perturbation to the face region that pushes its face-embedding away from where a face-recognition model naturally places it — a simplified, honest version of the real Fawkes privacy technique used to counter unauthorized facial-recognition scrapers (e.g. Clearview AI). Reports the real measured cosine-similarity drop and discloses openly that this protects only the specific cloaked photo, not copies already scraped elsewhere.
Upload a target photo and a small gallery of other photos, and this runs the same face-embedding similarity search that Clearview-style re-identification systems rely on — ranking the gallery by how closely each face matches the target, with a real measured score, not a simulated one. A "Protect & re-test" step then cloaks the target using the Face Cloak tool's own technique and re-runs the identical search to show whether the match breaks. Explicitly does not search the internet or any real database — only compares photos supplied in the one request.
Paste a prompt or a document an AI might be asked to read and see two independent detection signals side by side: a transparent, evadable-by-design pattern library (direct override, jailbreak roleplay, indirect injection, encoding tricks) and a second, independently-prompted LLM judge. Combines both into an overall risk badge rather than a single fabricated confidence score — no detector here is claimed to be 100% reliable.
Type a password to score its real strength via zxcvbn — the same pattern-matching algorithm (dictionaries, keyboard walks, dates, repeats) behind many real password meters, not naive character-class counting — entirely in your browser. Optionally check it against Have I Been Pwned's Pwned Passwords database using k-anonymity: only a 5-character SHA-1 hash prefix is ever sent, never the password or the full hash. No backend, no API key, and nothing is stored between visits.
Upload a photo or screenshot containing a QR code and its decoded destination URL is checked for structural phishing/malicious-link signals — IP-literal hosts, punycode domains, '@' auth-trick URLs, URL shorteners, suspicious TLDs, and typosquats of well-known brand domains via edit-distance. Pure local heuristics, no ML model or API call, and the decoded link is never actually visited — only its text is analyzed. Reports red flags for a human to weigh, not a binary safe/malicious verdict.
Upload an image and add an imperceptible adversarial perturbation across the whole image that pushes its CLIP embedding away from where it naturally sits — a simplified, honest version of the real Glaze/Nightshade artist-protection technique used to counter unauthorized AI style-mimicry. Reports the real measured cosine-similarity drop, calibrated against a measured unrelated-image baseline, and discloses openly that this protects only the specific cloaked image, not copies already scraped elsewhere.
Upload a short video of hands typing and this steps through it frame-by-frame with MediaPipe hand tracking, running a real tap-detection pass on fingertip motion to recover a keystroke-event timeline — timestamps, which hand, and likely word boundaries from timing gaps — the same hand-tracking side channel published attacks (USENIX Security '23 video-based keystroke inference) rely on. Deliberately does not attempt character-level text recovery: the real attack's language-model decoding stage needs per-target trained models this demo doesn't have, so it stops at the honest, measurable signal — WHEN keys were pressed, never WHAT was typed. Runs entirely in the browser; no video ever leaves the device.
ML Pipeline
A complete end-to-end ML pipeline — click any stage to explore what happens there.
Click any stage to expand · stages run sequentially in a real pipeline
AI News
Latest research papers from arXiv and industry news — updated hourly.
Experience
A journey from financial services to full-stack ML engineering.
Current employer.
Technical support and ML project development. Built and deployed ML systems end-to-end.
Business development, client management, and analytics-driven sales strategy.
Technical operations and client support in a software environment.
Business development and distribution operations.
Financial services operations, process execution, and data management in a global enterprise environment.
Contact
Open to ML engineering roles, freelance projects, and collaborations. Drop a message or reach out directly.